Release testing to stable #160
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Deploy site to GitHub Pages | |
| on: | |
| # Runs on pushes targeting the default branch | |
| push: | |
| branches: ["main"] | |
| # Allows you to run this workflow manually from the Actions tab | |
| workflow_dispatch: | |
| # Allow triggering build from controller-firmware / sensor-firmware | |
| repository_dispatch: | |
| types: [firmware-update] | |
| # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages | |
| permissions: | |
| contents: read | |
| 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 | |
| # Default to bash | |
| defaults: | |
| run: | |
| shell: bash | |
| jobs: | |
| # Build job | |
| build: | |
| runs-on: ubuntu-latest | |
| env: | |
| HUGO_VERSION: 0.136.5 | |
| steps: | |
| - name: Clone pyespargos repo | |
| uses: actions/checkout@v4 | |
| with: | |
| ssh-key: ${{ secrets.PYESPARGOS_DEPLOY_KEY }} | |
| repository: ESPARGOS/pyespargos | |
| submodules: recursive | |
| path: pyespargos | |
| - name: Install sphinx and sphinx-rtd-theme | |
| run: sudo pip install sphinx sphinx-rtd-theme | |
| - name: Install pyespargos requirements | |
| run: cd pyespargos && pip install -r requirements.txt | |
| - name: Build sphinx docs | |
| run: make -C ./pyespargos/docs/ html | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| path: espargos.github.io | |
| - name: Download firmware artifacts (dev + testing) | |
| env: | |
| CONTROLLER_FIRMWARE_TOKEN: ${{ secrets.CONTROLLER_FIRMWARE_TOKEN }} | |
| SENSOR_FIRMWARE_TOKEN: ${{ secrets.SENSOR_FIRMWARE_TOKEN }} | |
| run: | | |
| set -euo pipefail | |
| mkdir -p ./espargos.github.io/site/content/firmware/dev | |
| mkdir -p ./espargos.github.io/site/content/firmware/testing | |
| for repo in controller-firmware sensor-firmware; do | |
| if [[ "$repo" == "controller-firmware" ]]; then | |
| token="$CONTROLLER_FIRMWARE_TOKEN" | |
| artifact="controller-firmware-build-artifact" | |
| else | |
| token="$SENSOR_FIRMWARE_TOKEN" | |
| artifact="sensor-firmware-build-artifact" | |
| fi | |
| if [[ -z "${token}" ]]; then | |
| echo "Missing token for $repo. Set CONTROLLER_FIRMWARE_TOKEN / SENSOR_FIRMWARE_TOKEN secrets." >&2 | |
| exit 1 | |
| fi | |
| for branch in main testing; do | |
| echo "Finding artifacts for $repo, branch $branch" | |
| channel="dev" | |
| if [[ "$branch" == "testing" ]]; then | |
| channel="testing" | |
| fi | |
| run_id=$(GH_TOKEN="$token" gh api \ | |
| repos/ESPARGOS/$repo/actions/workflows/build.yml/runs \ | |
| -f branch="$branch" \ | |
| -f status=completed \ | |
| -f conclusion=success \ | |
| -X GET \ | |
| --jq '.workflow_runs[0].id') | |
| GH_TOKEN="$token" gh run download "$run_id" \ | |
| -R ESPARGOS/$repo \ | |
| -n "$artifact" \ | |
| -D "./espargos.github.io/site/content/firmware/$channel" | |
| done | |
| done | |
| - name: Install Hugo CLI | |
| run: | | |
| wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \ | |
| && sudo dpkg -i ${{ runner.temp }}/hugo.deb | |
| - name: Install Dart Sass | |
| run: sudo snap install dart-sass | |
| - name: Setup Pages | |
| id: pages | |
| uses: actions/configure-pages@v5 | |
| - name: Install Node.js dependencies | |
| run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true" | |
| - name: Build with Hugo | |
| working-directory: ./espargos.github.io/site | |
| env: | |
| # For maximum backward compatibility with Hugo modules | |
| HUGO_ENVIRONMENT: production | |
| HUGO_ENV: production | |
| run: | | |
| hugo \ | |
| --minify \ | |
| --baseURL "${{ steps.pages.outputs.base_url }}/" | |
| - name: Copy sphinx docs to hugo site | |
| run: cp -r pyespargos/docs/_build/html/* ./espargos.github.io/site/public/docs | |
| - name: Upload artifact | |
| uses: actions/upload-pages-artifact@v3 | |
| with: | |
| path: ./espargos.github.io/site/public | |
| # Deployment job | |
| deploy: | |
| environment: | |
| name: github-pages | |
| url: ${{ steps.deployment.outputs.page_url }} | |
| runs-on: ubuntu-latest | |
| needs: build | |
| steps: | |
| - name: Deploy to GitHub Pages | |
| id: deployment | |
| uses: actions/deploy-pages@v4 |