name: Documentation on: workflow_dispatch: inputs: esp-hal: description: "esp-hal tag" required: true esp-wifi: description: "esp-wifi tag" required: true env: CARGO_TERM_COLOR: always jobs: setup: runs-on: ubuntu-latest outputs: packages: '[ { "name": "esp-hal", "tag": "${{ github.event.inputs.esp-hal }}" }, { "name": "esp-wifi", "tag": "esp-wifi-${{ github.event.inputs.esp-wifi }}" } ]' steps: - run: echo "Setup complete!" build: needs: setup strategy: fail-fast: true matrix: packages: ${{ fromJson(needs.setup.outputs.packages) }} runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: esp-rs/xtensa-toolchain@v1.5 with: default: true ldproxy: false - name: Checkout repository uses: actions/checkout@v4 with: repository: esp-rs/esp-hal ref: ${{ matrix.packages.tag }} - name: Build documentation run: cargo xtask build-documentation --packages=${{ matrix.packages.name }} # https://github.com/actions/deploy-pages/issues/303#issuecomment-1951207879 - name: Remove problematic '.lock' files run: find docs -name ".lock" -exec rm -f {} \; - name: Upload docs for ${{ matrix.packages.name }} uses: actions/upload-artifact@v4 with: name: ${{ matrix.packages.name }} path: "docs/${{ matrix.packages.name }}" assemble: needs: [setup, build] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Prepare run: mkdir docs - name: Download all docs uses: actions/download-artifact@v4 with: path: "docs/" - name: Create index.html run: "cargo xtask build-documentation-index --packages=$(echo '${{ needs.setup.outputs.packages }}' | jq -r '[.[].name] | join(\",\")')" - name: Upload Pages artifact uses: actions/upload-pages-artifact@v3 with: path: "docs/" deploy: # Add a dependency to the assemble job: needs: assemble # Grant GITHUB_TOKEN the permissions required to make a Pages deployment: permissions: pages: write # to deploy to Pages id-token: write # to verify the deployment originates from an appropriate source # Deploy to the github-pages environment: environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} # Specify runner + deployment step: runs-on: ubuntu-latest steps: - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v4