Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
114 changes: 110 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
Expand Down Expand Up @@ -66,6 +66,8 @@ jobs:
node-version: '22.19.0'
- name: Enable Yarn from the repository package manager
run: corepack enable
- name: Cache Yarn packages
uses: Cratis/Workflows/.github/actions/yarn-cache@2fa2cb4fedb8048c4afb7f1a14e0103a35b0f1ce
- name: Install locked dependencies
run: yarn install --immutable
- name: Check documentation
Expand All @@ -87,6 +89,8 @@ jobs:
node-version: '22.19.0'
- name: Enable Yarn from the repository package manager
run: corepack enable
- name: Cache Yarn packages
uses: Cratis/Workflows/.github/actions/yarn-cache@2fa2cb4fedb8048c4afb7f1a14e0103a35b0f1ce
- name: Install locked dependencies
run: yarn install --immutable
- name: Build integration dependencies
Expand Down Expand Up @@ -116,6 +120,8 @@ jobs:
node-version: '22.19.0'
- name: Enable Yarn from the repository package manager
run: corepack enable
- name: Cache Yarn packages
uses: Cratis/Workflows/.github/actions/yarn-cache@2fa2cb4fedb8048c4afb7f1a14e0103a35b0f1ce
- name: Install locked dependencies
run: yarn install --immutable
- name: Check tutorial assembler negative cases
Expand All @@ -125,7 +131,55 @@ jobs:
ARC_DOCUMENTATION: ${{ github.workspace }}/.arc-tutorial-source/Documentation
run: yarn build && bash Documentation/tutorial-e2e/run.sh

verify:
verify-artifacts:
needs: changes
if: needs.changes.outputs.code == 'true'
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
- name: Check out code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- name: Set up Node.js
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: '22.19.0'
- name: Enable Yarn from the repository package manager
run: corepack enable
- name: Cache Yarn packages
uses: Cratis/Workflows/.github/actions/yarn-cache@2fa2cb4fedb8048c4afb7f1a14e0103a35b0f1ce
- name: Install locked dependencies
run: yarn install --immutable
- name: Build packages and check generated artifacts and consumers
run: yarn ci:artifacts

verify-quality:
needs: changes
if: needs.changes.outputs.code == 'true'
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
- name: Check out code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- name: Set up Node.js
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: '22.19.0'
- name: Enable Yarn from the repository package manager
run: corepack enable
- name: Cache Yarn packages
uses: Cratis/Workflows/.github/actions/yarn-cache@2fa2cb4fedb8048c4afb7f1a14e0103a35b0f1ce
- name: Install locked dependencies
run: yarn install --immutable
- name: Build prerequisites
run: yarn build
- name: Lint and typecheck
run: yarn ci:quality

verify-tests:
needs: changes
if: needs.changes.outputs.code == 'true'
runs-on: ubuntu-latest
Expand All @@ -141,7 +195,59 @@ jobs:
node-version: '22.19.0'
- name: Enable Yarn from the repository package manager
run: corepack enable
- name: Cache Yarn packages
uses: Cratis/Workflows/.github/actions/yarn-cache@2fa2cb4fedb8048c4afb7f1a14e0103a35b0f1ce
- name: Install locked dependencies
run: yarn install --immutable
- name: Run the complete local gate
run: yarn ci
- name: Build prerequisites
run: yarn build
- name: Run unit, client contract, decorator and Library end-to-end tests
run: yarn ci:tests

verify-docs:
needs: changes
if: needs.changes.outputs.code == 'true'
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
- name: Check out code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- name: Set up Node.js
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: '22.19.0'
- name: Enable Yarn from the repository package manager
run: corepack enable
- name: Cache Yarn packages
uses: Cratis/Workflows/.github/actions/yarn-cache@2fa2cb4fedb8048c4afb7f1a14e0103a35b0f1ce
- name: Install locked dependencies
run: yarn install --immutable
- name: Build prerequisites
run: yarn build
- name: Check documentation, release scripts and version consistency
run: yarn ci:docs

# Preserve the existing check name, including intentionally skipped code checks.
verify:
needs: [changes, verify-artifacts, verify-quality, verify-tests, verify-docs]
if: always()
runs-on: ubuntu-latest
timeout-minutes: 5
permissions: {}
steps:
- name: Require every code check to succeed when code changes
env:
CHANGES_RESULT: ${{ needs.changes.result }}
CODE: ${{ needs.changes.outputs.code }}
RESULTS: ${{ toJSON(needs.*.result) }}
run: |
if [[ "$CHANGES_RESULT" != success ]]; then
exit 1
fi
if [[ "$CODE" == true ]]; then
jq -e 'all(. == "success")' <<< "$RESULTS"
else
jq -e 'all(. == "success" or . == "skipped")' <<< "$RESULTS"
fi
2 changes: 1 addition & 1 deletion .github/workflows/verify-pull-request-policy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ on:

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

permissions:
contents: read
Expand Down
6 changes: 5 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,11 @@
"set-version": "node scripts/set-version.mjs",
"test": "vitest run",
"specs": "yarn test",
"ci": "yarn tsc -b Source/Core Source/Testing Source/Chronicle Source/MongoDB Source/Tools/ProxyGenerator && yarn check:metadata && yarn workspace @cratis/arc.core.sample.tasks generate-proxies && yarn workspace @cratis/arc.sample.library generate-proxies && yarn workspace @cratis/arc.sample.showcase generate-proxies && yarn check:proxies && yarn build && yarn check:declarations && yarn check:declarations:self-test && yarn check:consumers && yarn check:chronicle-peer-floor:self-test && yarn check:chronicle-peer-floor && yarn check:fetch && yarn check:node-test && yarn check:observability-recipes && yarn workspace @cratis/arc.sample.library.web build && yarn lint && yarn typecheck && yarn lint:tasks:arc && yarn test:client-generation:verify && yarn test && yarn workspace @cratis/arc.sample.library test:e2e && yarn test:legacy-decorators && yarn test:decorator-types && yarn docs:lint && yarn docs:snippets:self-test && yarn docs:snippets && yarn docs:examples:self-test && yarn docs:examples && node --test scripts/for_release/*.test.mjs && node --test scripts/classify-changes.test.mjs && yarn set-version --check"
"ci:artifacts": "yarn tsc -b Source/Core Source/Testing Source/Chronicle Source/MongoDB Source/Tools/ProxyGenerator && yarn check:metadata && yarn workspace @cratis/arc.core.sample.tasks generate-proxies && yarn workspace @cratis/arc.sample.library generate-proxies && yarn workspace @cratis/arc.sample.showcase generate-proxies && yarn check:proxies && yarn build && yarn check:declarations && yarn check:declarations:self-test && yarn check:consumers && yarn check:chronicle-peer-floor:self-test && yarn check:chronicle-peer-floor && yarn check:fetch && yarn check:node-test && yarn check:observability-recipes && yarn workspace @cratis/arc.sample.library.web build",
"ci:quality": "yarn lint && yarn typecheck && yarn lint:tasks:arc",
"ci:tests": "yarn test:client-generation:verify && yarn test && yarn workspace @cratis/arc.sample.library test:e2e && yarn test:legacy-decorators && yarn test:decorator-types",
"ci:docs": "yarn docs:lint && yarn docs:snippets:self-test && yarn docs:snippets && yarn docs:examples:self-test && yarn docs:examples && node --test scripts/for_release/*.test.mjs && node --test scripts/classify-changes.test.mjs && yarn set-version --check",
"ci": "yarn ci:artifacts && yarn ci:quality && yarn ci:tests && yarn ci:docs"
},
"devDependencies": {
"@cratis/arc.react": "22.45.0",
Expand Down
Loading