From 6c5d199d57ee937dc8f4f036c38aa594751250ce Mon Sep 17 00:00:00 2001 From: flip1995 Date: Mon, 31 May 2021 17:46:20 +0200 Subject: [PATCH] Update deploy CI This updates all the deploy scripts and the deploy workflow. The deploy workflow now runs the metadata collector to collect the lint documentation. It also changes the files that are checked out in the deploy workflow from master and adds an explanation why we have to do this. --- .github/deploy.sh | 9 ++++----- .github/workflows/deploy.yml | 17 +++++++++++++++-- .../utils/internal_lints/metadata_collector.rs | 2 +- tests/dogfood.rs | 2 +- 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/.github/deploy.sh b/.github/deploy.sh index e85e8874ba6..a3c57232f55 100644 --- a/.github/deploy.sh +++ b/.github/deploy.sh @@ -8,13 +8,12 @@ rm -rf out/master/ || exit 0 echo "Making the docs for master" mkdir out/master/ cp util/gh-pages/index.html out/master -python3 ./util/export.py out/master/lints.json +cp util/gh-pages/lints.json out/master if [[ -n $TAG_NAME ]]; then echo "Save the doc for the current tag ($TAG_NAME) and point stable/ to it" - cp -r out/master "out/$TAG_NAME" - rm -f out/stable - ln -s "$TAG_NAME" out/stable + cp -Tr out/master "out/$TAG_NAME" + ln -sf "$TAG_NAME" out/stable fi if [[ $BETA = "true" ]]; then @@ -28,8 +27,8 @@ cp util/gh-pages/versions.html out/index.html echo "Making the versions.json file" python3 ./util/versions.py out -cd out # Now let's go have some fun with the cloned repo +cd out git config user.name "GHA CI" git config user.email "gha@ci.invalid" diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 15aeaf907dc..b8be730be32 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -39,10 +39,23 @@ jobs: if: github.ref == 'refs/heads/beta' run: echo "BETA=true" >> $GITHUB_ENV - - name: Use scripts and templates from master branch + # 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/gh-pages/ util/*.py + 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@v1.3.0 + + - name: cargo collect-metadata + run: cargo collect-metadata - name: Deploy run: | diff --git a/clippy_lints/src/utils/internal_lints/metadata_collector.rs b/clippy_lints/src/utils/internal_lints/metadata_collector.rs index 3eccc89cdeb..598450a725f 100644 --- a/clippy_lints/src/utils/internal_lints/metadata_collector.rs +++ b/clippy_lints/src/utils/internal_lints/metadata_collector.rs @@ -32,7 +32,7 @@ use clippy_utils::{ }; /// This is the output file of the lint collector. -const OUTPUT_FILE: &str = "../util/gh-pages/metadata_collection.json"; +const OUTPUT_FILE: &str = "../util/gh-pages/lints.json"; /// These lints are excluded from the export. const BLACK_LISTED_LINTS: [&str; 3] = ["lint_author", "deep_code_inspection", "internal_metadata_collector"]; /// These groups will be ignored by the lint group matcher. This is useful for collections like diff --git a/tests/dogfood.rs b/tests/dogfood.rs index a996f9df144..4ede20c5258 100644 --- a/tests/dogfood.rs +++ b/tests/dogfood.rs @@ -183,7 +183,7 @@ fn run_metadata_collection_lint() { use std::time::SystemTime; // Setup for validation - let metadata_output_path = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("util/gh-pages/metadata_collection.json"); + let metadata_output_path = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("util/gh-pages/lints.json"); let start_time = SystemTime::now(); // Run collection as is