| name: Deploy | |
| on: | |
| push: | |
| branches: | |
| - master | |
| - beta | |
| tags: | |
| - rust-1.** | |
| concurrency: | |
| group: ${{ github.workflow }} | |
| cancel-in-progress: false | |
| env: | |
| TARGET_BRANCH: 'gh-pages' | |
| SHA: '${{ github.sha }}' | |
| SSH_REPO: 'git@github.com:${{ github.repository }}.git' | |
| jobs: | |
| deploy: | |
| runs-on: ubuntu-latest | |
| if: github.repository == 'rust-lang/rust-clippy' | |
| steps: | |
| # Setup | |
| - name: Checkout | |
| uses: actions/checkout@v7 | |
| with: | |
| # Unsetting this would make so that any malicious package could get our Github Token | |
| persist-credentials: false | |
| - name: Checkout | |
| uses: actions/checkout@v7 | |
| with: | |
| ref: ${{ env.TARGET_BRANCH }} | |
| path: 'out' | |
| # Unsetting this would make so that any malicious package could get our Github Token | |
| persist-credentials: false | |
| # Run | |
| - name: Set tag name | |
| if: startswith(github.ref, 'refs/tags/') | |
| run: | | |
| TAG=$(basename "${TAGNAME}") | |
| echo "TAG_NAME=$TAG" >> $GITHUB_ENV | |
| env: | |
| # Make sure that the reference gets expanded before injecting it | |
| TAGNAME: ${{ github.ref }} | |
| - name: Set beta to true | |
| if: github.ref == 'refs/heads/beta' | |
| run: echo "BETA=true" >> $GITHUB_ENV | |
| # We need to check out all files that (transitively) depend on the | |
| # structure of the gh-pages branch, so that we're able to change that | |
| # structure without breaking the deployment. | |
| - name: Use deploy files from master branch | |
| run: | | |
| git fetch --no-tags --prune --depth=1 origin master | |
| git checkout origin/master -- .github/deploy.sh util/versions.py util/gh-pages/versions.html | |
| # Generate lockfile for caching to avoid build problems with cached deps | |
| - name: cargo generate-lockfile | |
| run: cargo generate-lockfile | |
| - name: Cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| save-if: ${{ github.ref == 'refs/heads/master' }} | |
| - name: cargo collect-metadata | |
| run: cargo collect-metadata | |
| - name: Deploy | |
| run: | | |
| eval "$(ssh-agent -s)" | |
| ssh-add - <<< "${{ secrets.DEPLOY_KEY }}" | |
| bash .github/deploy.sh |