Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Switch to GitHub Actions - Part 2 - From within #5088

Merged
merged 30 commits into from
Feb 12, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
2f8ef89
Add integration test GitHub action
flip1995 Jan 20, 2020
1158c18
Add clippy_dev checks to GitHub Actions
flip1995 Jan 21, 2020
20c3319
Add remark check to GHA
flip1995 Jan 21, 2020
2a7a3aa
Rename .remarkrc.json -> .remarkrc and fix file
flip1995 Jan 21, 2020
757bbf7
Fix markdown Files
flip1995 Jan 21, 2020
d14ee8a
Add Clippy Test (bors) to GHA
flip1995 Jan 21, 2020
1717a6f
Ignore fmt test in GHA CI
flip1995 Jan 21, 2020
ff8336b
Check if changelog exists
flip1995 Jan 21, 2020
f5db351
Get {RUSTUP,MULTIRUST}_{HOME,TOOLCHAIN} from runtime environment
flip1995 Jan 22, 2020
66b5e22
Add Clippy Test to GHA
flip1995 Jan 22, 2020
9281167
Move integration tests in clippy_bors.yml
flip1995 Jan 22, 2020
893e261
Add deployment to GHA
flip1995 Jan 22, 2020
8f45387
Small change to comment in .gitignore
flip1995 Jan 23, 2020
d7620a3
Add GHA badge to README.md
flip1995 Jan 23, 2020
b9580fc
Cancle builds on new commits
flip1995 Jan 23, 2020
e59361f
Limit parallel jobs on try/r+ runs
flip1995 Jan 23, 2020
935b94d
Sort output of export.py script
flip1995 Jan 24, 2020
ea780a6
Extract driver test
flip1995 Jan 26, 2020
dfdea56
Extract deployment
flip1995 Jan 26, 2020
ab43951
Allow non-ascii characters in changelog check
flip1995 Jan 30, 2020
1ceeb13
Build Clippy before running integration tests
flip1995 Jan 31, 2020
095287d
Add two more error causes to integration test
flip1995 Jan 31, 2020
813d319
Use hash of Cargo.lock file in cache name
flip1995 Jan 31, 2020
b8b47ab
Add bors dummy jobs
flip1995 Feb 4, 2020
abb095d
Run bors checks unconditionally
flip1995 Feb 4, 2020
b47dada
Apply review comments
flip1995 Feb 7, 2020
622ece3
Remove deployment from travis
flip1995 Feb 7, 2020
2745346
Install all required remark packages in travis
flip1995 Feb 7, 2020
a0a21a8
Use nightly cargo to install cargo-cache
flip1995 Feb 9, 2020
3fac289
Don't upload target/release in integration_build
flip1995 Feb 12, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 10 additions & 48 deletions .github/deploy.sh
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,20 +1,7 @@
#!/bin/bash

# Automatically deploy on gh-pages

set -ex

SOURCE_BRANCH="master"
TARGET_BRANCH="gh-pages"

# Save some useful information
REPO=$(git config remote.origin.url)
SSH_REPO=${REPO/https:\/\/github.com\//[email protected]:}
SHA=$(git rev-parse --verify HEAD)
flip1995 marked this conversation as resolved.
Show resolved Hide resolved

# Clone the existing gh-pages for this repo into out/
git clone --quiet --single-branch --branch "$TARGET_BRANCH" "$REPO" out

flip1995 marked this conversation as resolved.
Show resolved Hide resolved
echo "Removing the current docs for master"
rm -rf out/master/ || exit 0

Expand All @@ -23,59 +10,34 @@ mkdir out/master/
cp util/gh-pages/index.html out/master
python ./util/export.py out/master/lints.json

if [[ -n "$TRAVIS_TAG" ]]; then
echo "Save the doc for the current tag ($TRAVIS_TAG) and point current/ to it"
cp -r out/master "out/$TRAVIS_TAG"
rm -f out/current
ln -s "$TRAVIS_TAG" out/current
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
pushd out

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
popd

# Pull requests and commits to other branches shouldn't try to deploy, just build to verify
if [[ "$TRAVIS_PULL_REQUEST" != "false" ]] || [[ "$TRAVIS_BRANCH" != "$SOURCE_BRANCH" ]]; then
# Tags should deploy
if [[ -z "$TRAVIS_TAG" ]]; then
echo "Generated, won't push"
exit 0
fi
fi
flip1995 marked this conversation as resolved.
Show resolved Hide resolved

# Now let's go have some fun with the cloned repo
cd out
git config user.name "Travis CI"
git config user.email "[email protected]"
git config user.name "GHA CI"
git config user.email "[email protected]"

if git diff --exit-code --quiet; then
echo "No changes to the output on this push; exiting."
exit 0
echo "No changes to the output on this push; exiting."
exit 0
fi
cd -

# Get the deploy key by using Travis's stored variables to decrypt deploy_key.enc
ENCRYPTION_LABEL=e3a2d77100be
ENCRYPTED_KEY_VAR="encrypted_${ENCRYPTION_LABEL}_key"
ENCRYPTED_IV_VAR="encrypted_${ENCRYPTION_LABEL}_iv"
ENCRYPTED_KEY=${!ENCRYPTED_KEY_VAR}
ENCRYPTED_IV=${!ENCRYPTED_IV_VAR}
openssl aes-256-cbc -K "$ENCRYPTED_KEY" -iv "$ENCRYPTED_IV" -in .github/deploy_key.enc -out .github/deploy_key -d
chmod 600 .github/deploy_key
eval "$(ssh-agent -s)"
ssh-add .github/deploy_key

cd out
flip1995 marked this conversation as resolved.
Show resolved Hide resolved
git add .
git commit -m "Automatic deploy to GitHub Pages: ${SHA}"

# Now that we're all set up, we can push.
git push "$SSH_REPO" "$TARGET_BRANCH"
29 changes: 29 additions & 0 deletions .github/driver.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#!/bin/bash

set -ex

# Check sysroot handling
sysroot=$(./target/debug/clippy-driver --print sysroot)
test "$sysroot" = "$(rustc --print sysroot)"

if [[ ${OS} == "Windows" ]]; then
desired_sysroot=C:/tmp
else
desired_sysroot=/tmp
fi
sysroot=$(./target/debug/clippy-driver --sysroot $desired_sysroot --print sysroot)
test "$sysroot" = $desired_sysroot

sysroot=$(SYSROOT=$desired_sysroot ./target/debug/clippy-driver --print sysroot)
test "$sysroot" = $desired_sysroot

# Make sure this isn't set - clippy-driver should cope without it
unset CARGO_MANIFEST_DIR

# Run a lint and make sure it produces the expected output. It's also expected to exit with code 1
# FIXME: How to match the clippy invocation in compile-test.rs?
./target/debug/clippy-driver -Dwarnings -Aunused -Zui-testing --emit metadata --crate-type bin tests/ui/cstring.rs 2> cstring.stderr && exit 1
sed -e "s,tests/ui,\$DIR," -e "/= help/d" cstring.stderr > normalized.stderr
diff normalized.stderr tests/ui/cstring.stderr

# TODO: CLIPPY_CONF_DIR / CARGO_MANIFEST_DIR
98 changes: 98 additions & 0 deletions .github/workflows/clippy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
name: Clippy Test

on:
push:
# Ignore bors branches, since they are covered by `clippy_bors.yml`
branches-ignore: [auto, try]
# Don't run Clippy tests, when only textfiles were modified
paths-ignore:
- 'COPYRIGHT'
- 'LICENSE-*'
- '**.md'
- '**.txt'
pull_request:
# Don't run Clippy tests, when only textfiles were modified
paths-ignore:
- 'COPYRIGHT'
- 'LICENSE-*'
- '**.md'
- '**.txt'

env:
RUST_BACKTRACE: 1
CARGO_TARGET_DIR: '${{ github.workspace }}/target'
NO_FMT_TEST: 1

jobs:
base:
runs-on: ubuntu-latest

steps:
# Setup
- uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@master
with:
github_token: "${{ secrets.github_token }}"

- name: rust-toolchain
uses: actions-rs/[email protected]
with:
toolchain: nightly
target: x86_64-unknown-linux-gnu
profile: minimal

- name: Checkout
uses: actions/[email protected]

- name: Run cargo update
run: cargo update

- name: Cache cargo dir
uses: actions/cache@v1
with:
path: ~/.cargo
key: ${{ runner.os }}-x86_64-unknown-linux-gnu-${{ hashFiles('Cargo.lock') }}
restore-keys: |
${{ runner.os }}-x86_64-unknown-linux-gnu

- name: Master Toolchain Setup
run: bash setup-toolchain.sh

# Run
- name: Set LD_LIBRARY_PATH (Linux)
run: |
SYSROOT=$(rustc --print sysroot)
echo "::set-env name=LD_LIBRARY_PATH::${SYSROOT}/lib${LD_LIBRARY_PATH+:${LD_LIBRARY_PATH}}"
flip1995 marked this conversation as resolved.
Show resolved Hide resolved

- name: Build
run: cargo build --features deny-warnings

- name: Test
run: cargo test --features deny-warnings

- name: Test clippy_lints
run: cargo test --features deny-warnings
working-directory: clippy_lints

- name: Test rustc_tools_util
run: cargo test --features deny-warnings
working-directory: rustc_tools_util

- name: Test clippy_dev
run: cargo test --features deny-warnings
working-directory: clippy_dev

- name: Test cargo-clippy
run: ../target/debug/cargo-clippy
working-directory: clippy_workspace_tests

- name: Test clippy-driver
run: bash .github/driver.sh
env:
OS: ${{ runner.os }}

# Cleanup
- name: Run cargo-cache --autoclean
run: |
cargo +nightly install cargo-cache --debug
find ~/.cargo/bin ! -type d -exec strip {} \;
cargo cache --autoclean
Loading