name: Builder on: push: pull_request: # schedule: # - cron: '0 13 * * *' # run at 1 PM UTC workflow_dispatch: inputs: release: type: choice description: Release the asset default: 'none' options: - none - prerelease - release permissions: contents: write jobs: build: name: Build PluginLoader runs-on: ubuntu-latest steps: - name: Checkout 🧰 uses: actions/checkout@v3 - name: Set up NodeJS 17 💎 uses: actions/setup-node@v3 with: node-version: 17 - name: Set up Python 3.10 🐍 uses: actions/setup-python@v3 with: python-version: "3.10" - name: Install Python dependencies ⬇️ run: | python -m pip install --upgrade pip pip install pyinstaller [ -f requirements.txt ] && pip install -r requirements.txt - name: Install NodeJS dependencies ⬇️ run: | cd frontend npm i npm run build - name: Build 🛠️ run: pyinstaller --noconfirm --onefile --name "PluginLoader" --add-data ./backend/static:/static --add-data ./backend/legacy:/legacy ./backend/*.py - name: Upload package artifact ⬆️ if: ${{ !env.ACT }} uses: actions/upload-artifact@v3 with: name: PluginLoader path: ./dist/PluginLoader - name: Download package artifact locally if: ${{ env.ACT }} uses: actions/upload-artifact@v3 with: path: ./dist/PluginLoader release: name: Release the package if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.release == 'release' }} needs: build runs-on: ubuntu-latest steps: - name: Checkout 🧰 uses: actions/checkout@v3 - name: Fetch package artifact ⬇️ uses: actions/download-artifact@v3 with: name: PluginLoader path: dist - name: Release 📦 uses: softprops/action-gh-release@v1 if: ${{ !env.ACT }} with: name: Release ${{ steps.tag_version.outputs.new_tag }} tag_name: ${{ steps.tag_version.outputs.new_tag }} files: ./dist/PluginLoader generate_release_notes: true prerelease: name: Release the pre-release version of the package if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.release == 'prerelease' }} needs: build runs-on: ubuntu-latest steps: - name: Install semver-tool asdf uses: asdf-vm/actions/install@v1 with: tool_versions: | semver 3.3.0 - name: Checkout 🧰 uses: actions/checkout@v3 - name: Fetch package artifact ⬇️ uses: actions/download-artifact@v3 with: name: PluginLoader path: dist - name: Get tag 🏷️ id: old_tag uses: rafarlopes/get-latest-pre-release-tag-action@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: repository: 'decky-loader' - name: Prepare tag ⚙️ id: ready_tag run: | export VERSION=${{ steps.old_tag.outputs.tag }} echo "VERS: $VERSION" OUT=$(semver bump prerel "$VERSION") echo "OUT: $OUT" echo ::set-output name=tag_name::v$OUT - name: Push tag 📤 uses: rickstaa/action-create-tag@v1.3.2 if: ${{ steps.ready_tag.outputs.tag_name && github.event_name == 'workflow_dispatch' && !env.ACT }} with: tag: ${{ steps.ready_tag.outputs.tag_name }} message: Pre-release ${{ steps.ready_tag.outputs.tag_name }} - name: Release 📦 uses: softprops/action-gh-release@v1 if: ${{ github.event_name == 'workflow_dispatch' && !env.ACT }} with: name: Prerelease ${{ steps.ready_tag.outputs.tag_name }} tag_name: ${{ steps.ready_tag.outputs.tag_name }} files: ./dist/PluginLoader prerelease: true generate_release_notes: true