on: push: tags: - 'v*.*.*' workflow_dispatch: jobs: build: runs-on: ubuntu-latest steps: - name: Checkout code uses: https://code.forgejo.org/actions/checkout@v4 - name: Set up Python uses: https://code.forgejo.org/actions/setup-python@v5 with: python-version: '3.11' - name: Install dependencies run: | pip install -r requirements.txt pip install pyinstaller - name: Build with PyInstaller run: | pyinstaller --onefile --console --name TinyWeb app.py - name: Prepare artifact run: | cp dist/TinyWeb TinyWeb-linux-x64 chmod +x TinyWeb-linux-x64 ls -la TinyWeb-linux-x64 - name: Create Release if: startsWith(github.ref, 'refs/tags/v') run: | TAG="${{ github.ref_name }}" REPO="${{ github.repository }}" TOKEN="${{ secrets.FORGEJO_TOKEN }}" # Try to create release (ignore error if exists) curl -X POST "https://git.derickphan.com/api/v1/repos/$REPO/releases" \ -H "Authorization: token $TOKEN" \ -H "Content-Type: application/json" \ -d "{\"tag_name\":\"$TAG\",\"name\":\"$TAG\"}" || true - name: Upload to Release if: startsWith(github.ref, 'refs/tags/v') run: | FILE=TinyWeb-linux-x64 TAG="${{ github.ref_name }}" REPO="${{ github.repository }}" TOKEN="${{ secrets.FORGEJO_TOKEN }}" curl -X POST "https://git.derickphan.com/api/v1/repos/$REPO/releases/$TAG/assets" \ -H "Authorization: token $TOKEN" \ -F "attachment=@$FILE"