Merge pull request #4766 from stacks-network/fix/reduce_ci_runs-master #31
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## The main Github Actions workflow | |
name: CI | |
on: | |
merge_group: | |
types: | |
- checks_requested | |
push: | |
branches: | |
- master | |
- develop | |
- next | |
paths-ignore: | |
- "**.md" | |
- "**.yml" | |
workflow_dispatch: | |
inputs: | |
tag: | |
description: "The tag to create (optional)" | |
required: false | |
pull_request: | |
types: | |
- opened | |
- reopened | |
- synchronize | |
- ready_for_review | |
defaults: | |
run: | |
shell: bash | |
concurrency: | |
group: ci-${{ github.head_ref || github.ref || github.run_id }} | |
## Always cancel duplicate jobs | |
cancel-in-progress: true | |
run-name: ${{ inputs.tag }} | |
jobs: | |
## | |
## Jobs to execute everytime workflow runs | |
## do not run if the trigger is any of the following: | |
## - PR review submitted (not approved) | |
## and any of: | |
## - PR review comment | |
## - PR change is requested | |
rustfmt: | |
name: Rust Format | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout the latest code | |
id: git_checkout | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
- name: Setup Rust Toolchain | |
id: setup_rust_toolchain | |
uses: actions-rust-lang/setup-rust-toolchain@f3c84ee10bf5a86e7a5d607d487bf17d57670965 # v1.5.0 | |
with: | |
components: rustfmt | |
cache: false | |
- name: Rustfmt | |
id: rustfmt | |
uses: stacks-network/actions/rustfmt@main | |
with: | |
alias: "fmt-stacks" | |
###################################################################################### | |
## Create a tagged github release | |
## | |
## Runs when the following is true: | |
## - tag is provided | |
create-release: | |
if: | | |
inputs.tag != '' | |
name: Create Release | |
needs: | |
- rustfmt | |
uses: ./.github/workflows/github-release.yml | |
with: | |
tag: ${{ inputs.tag }} | |
secrets: inherit | |
## Build and push Debian image built from source | |
## | |
## Runs when: | |
## - tag is not provided | |
docker-image: | |
if: | | |
inputs.tag == '' | |
name: Docker Image (Source) | |
uses: ./.github/workflows/image-build-source.yml | |
needs: | |
- rustfmt | |
secrets: inherit | |
## Create a reusable cache for tests | |
## | |
## Runs when: | |
## - tag is provided | |
## or: | |
## - no tag provided | |
## and any of: | |
## - this workflow is called manually | |
## - PR is opened | |
## - commit to either (development, master) branch | |
create-cache: | |
if: | | |
inputs.tag != '' || ( | |
inputs.tag == '' && ( | |
github.event_name == 'workflow_dispatch' || | |
github.event_name == 'pull_request' || | |
github.event_name == 'merge_group' || | |
( | |
contains(' | |
refs/heads/master | |
refs/heads/develop | |
refs/heads/next | |
', github.event.pull_request.head.ref) && | |
github.event_name == 'push' | |
) | |
) | |
) | |
name: Create Test Cache | |
needs: | |
- rustfmt | |
uses: ./.github/workflows/create-cache.yml | |
## Tests to run regularly | |
## | |
## Runs when: | |
## - tag is provided | |
## or: | |
## - no tag provided | |
## and any of: | |
## - this workflow is called manually | |
## - PR is opened | |
## - PR added to merge queue | |
## - commit to either (development, next, master) branch | |
stacks-core-tests: | |
if: | | |
inputs.tag != '' || ( | |
inputs.tag == '' && ( | |
github.event_name == 'workflow_dispatch' || | |
github.event_name == 'pull_request' || | |
github.event_name == 'merge_group' || | |
( | |
contains(' | |
refs/heads/master | |
refs/heads/develop | |
refs/heads/next | |
', github.event.pull_request.head.ref) && | |
github.event_name == 'push' | |
) | |
) | |
) | |
name: Stacks Core Tests | |
needs: | |
- rustfmt | |
- create-cache | |
uses: ./.github/workflows/stacks-core-tests.yml | |
bitcoin-tests: | |
if: | | |
inputs.tag != '' || ( | |
inputs.tag == '' && ( | |
github.event_name == 'workflow_dispatch' || | |
github.event_name == 'pull_request' || | |
github.event_name == 'merge_group' || | |
( | |
contains(' | |
refs/heads/master | |
refs/heads/develop | |
refs/heads/next | |
', github.event.pull_request.head.ref) && | |
github.event_name == 'push' | |
) | |
) | |
) | |
name: Bitcoin Tests | |
needs: | |
- rustfmt | |
- create-cache | |
uses: ./.github/workflows/bitcoin-tests.yml | |
## Test to run on a tagged release | |
## | |
## Runs when: | |
## - tag is provided | |
atlas-tests: | |
if: inputs.tag != '' | |
name: Atlas Tests | |
needs: | |
- rustfmt | |
- create-cache | |
uses: ./.github/workflows/atlas-tests.yml | |
epoch-tests: | |
if: inputs.tag != '' | |
name: Epoch Tests | |
needs: | |
- rustfmt | |
- create-cache | |
uses: ./.github/workflows/epoch-tests.yml | |
slow-tests: | |
if: inputs.tag != '' | |
name: Slow Tests | |
needs: | |
- rustfmt | |
- create-cache | |
uses: ./.github/workflows/slow-tests.yml | |