Skip builds iff markdown files are modified

next
Sayan Nandan 4 years ago
parent 896b04e665
commit 8c678a58e3
No known key found for this signature in database
GPG Key ID: C31EFD7DDA12AEE0

@ -7,15 +7,11 @@ jobs:
name: Test
env:
IS_ACTIONS_DOC: false
IS_MD_FILE: false
runs-on: ${{ matrix.os }}
strategy:
matrix:
build:
[
linux-stable,
macos-stable,
windows-stable,
]
build: [linux-stable, macos-stable, windows-stable]
include:
- build: linux-stable
os: ubuntu-latest
@ -29,6 +25,13 @@ jobs:
steps:
- uses: actions/checkout@v2
with:
fetch-depth: "2"
- name: "Prepare build environment"
run: |
chmod +x ci/setvars.sh
ci/setvars.sh
- name: Cache Cargo registry
uses: actions/cache@v1
@ -38,7 +41,7 @@ jobs:
restore-keys: |
${{ matrix.build }}-cargo-registry-
# HACK(@ohsayan): The next line skips caching until it is fixed
if: runner.os != 'macOS' && !env.IS_ACTIONS_DOC
if: runner.os != 'macOS' && !env.IS_ACTIONS_DOC && !env.IS_MD_FILE
- name: Cache Cargo index
uses: actions/cache@v1
@ -48,7 +51,7 @@ jobs:
restore-keys: |
${{ matrix.build }}-cargo-index-
# HACK(@ohsayan): The next line skips caching until it is fixed
if: runner.os != 'macOS' && !env.IS_ACTIONS_DOC
if: runner.os != 'macOS' && !env.IS_ACTIONS_DOC && !env.IS_MD_FILE
- name: Cache Cargo build
uses: actions/cache@v1
@ -58,16 +61,16 @@ jobs:
restore-keys: |
${{ matrix.build }}-target-
# HACK(@ohsayan): The next line skips caching until it is fixed
if: runner.os != 'macOS' && !env.IS_ACTIONS_DOC
if: runner.os != 'macOS' && !env.IS_ACTIONS_DOC && !env.IS_MD_FILE
- name: Install Rust
run: |
rustup update ${{ matrix.rust }} --no-self-update
rustup default ${{ matrix.rust }}
if: runner.os != 'macOS' && !env.IS_ACTIONS_DOC
if: runner.os != 'macOS' && !env.IS_ACTIONS_DOC && !env.IS_MD_FILE
- name: Run Tests
run: cargo test --verbose -- --test-threads=1
env:
RUST_BACKTRACE: 1
if: runner.os != 'macOS' && !env.IS_ACTIONS_DOC
if: runner.os != 'macOS' && !env.IS_ACTIONS_DOC && !env.IS_MD_FILE

@ -0,0 +1,19 @@
# This script sets a couple of environment variables
# If *.md files are modified, then there is no need for running the expensive
# build steps, instead we just set the `IS_MD_FILE` variable to true.
# Similarly, if the `actions.jsonc` file is modified, the documentation needs to be
# be updated
set -euo pipefail
git checkout next
FILES_CHANGED=$(git diff --numstat HEAD^..HEAD | wc -l)
ACTIONS_CHANGED_COUNT=$(git diff --numstat HEAD^..HEAD -- 'actions.jsonc' | wc -l)
MD_CHANGED_COUNT=$(git diff --numstat HEAD^..HEAD -- '*.md' | wc -l)
if [ ${FILES_CHANGED} = ${MD_CHANGED_COUNT} ]; then
# This push just modifies markdown files
echo "This push only modifies markdown files"
echo "IS_MD_FILE=true" >>$GITHUB_ENV
elif [ ${ACTIONS_CHANGED_COUNT} = "1" ]; then
# This push changes the actions documentation
echo "This push modifies the actions.jsonc file"
echo "IS_ACTIONS_DOC=true" >>$GITHUB_ENV
fi
Loading…
Cancel
Save