diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 915c68f5e68..8533163f358 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -12,6 +12,7 @@ on: - "*" paths-ignore: - 'docs/**' + - '.github/workflows/docs-*.yml' merge_group: pull_request: # This needs to be declared explicitly so that the job is actually @@ -19,6 +20,7 @@ on: types: [opened, synchronize, reopened, ready_for_review] paths-ignore: - 'docs/**' + - '.github/workflows/docs-*.yml' env: CI: 1 diff --git a/.github/workflows/docs-required-override.yml b/.github/workflows/docs-required-override.yml new file mode 100644 index 00000000000..44b2ca9f368 --- /dev/null +++ b/.github/workflows/docs-required-override.yml @@ -0,0 +1,99 @@ +# This workflow is triggered by changes on the documentation. Normally, if only documentation is modified, the required Forest checks are not triggered which makes it impossible to merge the PR. See . The workaround is to provide no-op jobs that are triggered by the same events as the docs-check job. This way, the "required checks" are passing and the PR can be merged. +# We check that changes affect only the documentation and that no other changes are present. If this is the case, we trigger the no-op jobs. + +name: Docs Required Override +concurrency: + group: '${{ github.workflow }}-${{ github.ref }}' + cancel-in-progress: '${{ github.ref != ''refs/heads/main'' }}' + +on: + workflow_dispatch: + merge_group: + pull_request: + branches: + - main + paths: + - '**.md' + - 'docs/**' + - '.github/workflows/docs-*.yml' + push: + branches: + - main + paths: + - '**.md' + - 'docs/**' + - '.github/workflows/docs-*.yml' + +jobs: + # We need this because merge groups dont support path filters + # https://github.com/community/community/discussions/45899 + changes-docs: + runs-on: ubuntu-latest + outputs: + changesFound: ${{ steps.filter.outputs.changesFound }} + steps: + - uses: actions/checkout@v4 + - uses: dorny/paths-filter@v3 + id: filter + with: + filters: | + changesFound: + - 'docs/**' + - '**.md' + - '.github/workflows/docs-*.yml' + changes-not-docs: + runs-on: ubuntu-latest + outputs: + otherChangesFound: ${{ steps.filter.outputs.otherChangesFound }} + steps: + - uses: actions/checkout@v4 + - uses: dorny/paths-filter@v3 + id: filter + with: + predicate-quantifier: every + filters: | + otherChangesFound: + - '**' + - '!docs/**' + - '!**.md' + - '!.github/workflows/docs-*.yml' + + override_integration_tests: + name: Integration tests status + runs-on: ubuntu-latest + needs: + - changes-docs + - changes-not-docs + if: ${{ (needs.changes-docs.outputs.changesFound == 'true') && (needs.changes-not-docs.outputs.otherChangesFound == 'false') }} + steps: + - run: echo "No-op job to trigger the required checks." + + override_unit_tests: + name: tests + runs-on: ubuntu-latest + needs: + - changes-docs + - changes-not-docs + if: ${{ (needs.changes-docs.outputs.changesFound == 'true') && (needs.changes-not-docs.outputs.otherChangesFound == 'false') }} + steps: + - run: echo "No-op job to trigger the required checks." + + override_unit_tests_release: + name: tests-release + runs-on: ubuntu-latest + needs: + - changes-docs + - changes-not-docs + if: ${{ (needs.changes-docs.outputs.changesFound == 'true') && (needs.changes-not-docs.outputs.otherChangesFound == 'false') }} + steps: + - run: echo "No-op job to trigger the required checks." + + override_docker_build: + name: Build images and push to GHCR + runs-on: ubuntu-latest + needs: + - changes-docs + - changes-not-docs + if: ${{ (needs.changes-docs.outputs.changesFound == 'true') && (needs.changes-not-docs.outputs.otherChangesFound == 'false') }} + steps: + - run: echo "No-op job to trigger the required checks." diff --git a/.github/workflows/forest.yml b/.github/workflows/forest.yml index 57d258999de..9b4f10bbb96 100644 --- a/.github/workflows/forest.yml +++ b/.github/workflows/forest.yml @@ -10,11 +10,13 @@ concurrency: - main paths-ignore: - 'docs/**' + - '.github/workflows/docs-*.yml' push: branches: - main paths-ignore: - 'docs/**' + - '.github/workflows/docs-*.yml' schedule: - cron: 0 0 * * * env: @@ -565,3 +567,29 @@ jobs: - name: Dump docker logs if: always() uses: jwalton/gh-docker-logs@v2 + # Umbrella job to aggregate all integration tests and get their status + integration-tests-status: + needs: + - build-macos + - build-ubuntu + - cargo-publish-dry-run + - forest-cli-check + - calibnet-check + - calibnet-stateless-mode-check + - state-migrations-check + - calibnet-wallet-check + - calibnet-export-check + - calibnet-no-discovery-checks + - calibnet-kademlia-checks + - calibnet-eth-mapping-check + - db-migration-checks + - db-migration-checks-car-db + - local-devnet-check + - local-devnet-curio-check + - calibnet-rpc-checks + - bootstrap-checks-forest + - bootstrap-checks-lotus + name: Integration tests status + runs-on: ubuntu-24.04 + steps: + - run: echo "All integration tests passed." diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index 8c0243ede8f..94d0c21e060 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -16,11 +16,13 @@ on: types: [opened, synchronize, reopened, ready_for_review] paths-ignore: - 'docs/**' + - '.github/workflows/docs-*.yml' push: branches: - main paths-ignore: - 'docs/**' + - '.github/workflows/docs-*.yml' schedule: - cron: "0 0 * * *"