]> git.lizzy.rs Git - rust.git/blobdiff - .github/workflows/deploy.yml
Auto merge of #9989 - xFrednet:9986-move-safety-thingy, r=flip1995
[rust.git] / .github / workflows / deploy.yml
index 100adbadd5abd40910d5be2ade7cef684613334f..71d71d10359e7e76b4f2cbc1b8843247d266659c 100644 (file)
@@ -2,71 +2,63 @@ name: Deploy
 
 on:
   push:
-    branches: master
-  release:
-    types: [created]
+    branches:
+      - master
+      - beta
+    tags:
+      - rust-1.**
 
 env:
   TARGET_BRANCH: 'gh-pages'
   SHA: '${{ github.sha }}'
   SSH_REPO: 'git@github.com:${{ github.repository }}.git'
-  TAG_NAME: '${{ github.event.release.GITHUB_REF }}'
 
 jobs:
   deploy:
     runs-on: ubuntu-latest
+    if: github.repository == 'rust-lang/rust-clippy'
 
     steps:
+    # Setup
     - name: Checkout
-      uses: actions/checkout@v2.0.0
+      uses: actions/checkout@v3.0.2
+
     - name: Checkout
-      uses: actions/checkout@v2.0.0
+      uses: actions/checkout@v3.0.2
       with:
         ref: ${{ env.TARGET_BRANCH }}
         path: 'out'
-    - name: Deploy
-      run: |
-        set -ex
-
-        echo "Removing the current docs for master"
-        rm -rf out/master/ || exit 0
-
-        echo "Making the docs for master"
-        mkdir out/master/
-        cp util/gh-pages/index.html out/master
-        python ./util/export.py out/master/lints.json
-
-        if [[ -n $TAG_NAME ]]; then
-          echo "Save the doc for the current tag ($TAG_NAME) and point current/ to it"
-          cp -r out/master "out/$TAG_NAME"
-          rm -f out/current
-          ln -s "$TAG_NAME" out/current
-        fi
 
-        # Generate version index that is shown as root index page
-        cp util/gh-pages/versions.html out/index.html
+    # Run
+    - name: Set tag name
+      if: startswith(github.ref, 'refs/tags/')
+      run: |
+        TAG=$(basename ${{ github.ref }})
+        echo "TAG_NAME=$TAG" >> $GITHUB_ENV
+    - name: Set beta to true
+      if: github.ref == 'refs/heads/beta'
+      run: echo "BETA=true" >> $GITHUB_ENV
 
-        cd out
-        cat <<-EOF | python - > versions.json
-        import os, json
-        print json.dumps([
-            dir for dir in os.listdir(".") if not dir.startswith(".") and os.path.isdir(dir)
-        ])
-        EOF
+    # 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
 
-        # Now let's go have some fun with the cloned repo
-        git config user.name "GHA CI"
-        git config user.email "gha@ci.invalid"
+    # Generate lockfile for caching to avoid build problems with cached deps
+    - name: cargo generate-lockfile
+      run: cargo generate-lockfile
 
-        if git diff --exit-code --quiet; then
-            echo "No changes to the output on this push; exiting."
-            exit 0
-        fi
+    - name: Cache
+      uses: Swatinem/rust-cache@v1.3.0
 
-        git add .
-        git commit -m "Automatic deploy to GitHub Pages: ${SHA}"
+    - name: cargo collect-metadata
+      run: cargo collect-metadata
 
+    - name: Deploy
+      run: |
         eval "$(ssh-agent -s)"
         ssh-add - <<< "${{ secrets.DEPLOY_KEY }}"
-
-        git push "$SSH_REPO" "$TARGET_BRANCH"
+        bash .github/deploy.sh