on: workflow_call: inputs: ref: type: "string" required: true description: "The ref (branch or tag) to build" # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages permissions: contents: "write" pages: "write" id-token: "write" # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. concurrency: group: "pages" cancel-in-progress: false jobs: rebuild: # Makes sure all artifacts are updated and use the new version uses: "./.github/workflows/build.yml" with: ref: "${{ inputs.ref }}" deploy-frontend: needs: "rebuild" runs-on: "ubuntu-latest" environment: name: "github-pages" url: "${{ steps.deployment.outputs.page_url }}" steps: - uses: "actions/download-artifact@v7" with: # Downloads all artifacts from the build job path: "./public" merge-multiple: true - uses: "actions/configure-pages@v5" - uses: "actions/upload-pages-artifact@v4" with: path: 'public' - id: "deployment" uses: "actions/deploy-pages@v4" - run: 'zip -r frontend.zip public' - uses: "svenstaro/upload-release-action@v2" with: repo_token: "${{ secrets.GITHUB_TOKEN }}" file: "frontend.zip" tag: "${{ github.ref }}" overwrite: true deploy-backend: needs: "rebuild" runs-on: "ubuntu-latest" steps: - uses: "actions/checkout@v6" with: ref: "${{ inputs.ref }}" - uses: "actions/setup-node@v6" with: cache: "yarn" - run: "pipx install poetry" - uses: "actions/setup-python@v6" with: python-version: "3.13" cache: "poetry" - run: "poetry install" - run: "poetry config pypi-token.pypi ${{ secrets.PYPI_TOKEN }}" - run: "poetry run task build" # This task also builds the frontend (with reduced features for less size) - run: "poetry publish"