Update dependency nock to v14 #6671
This file contains hidden or 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
name: PR Checks | |
on: | |
pull_request: | |
branches: | |
- main | |
# The only commits that will contain changes to the masterlist will be releases | |
paths-ignore: | |
- MASTERLIST.md | |
env: | |
UPSTREAM_BRANCH: origin/${{ github.base_ref }} | |
concurrency: | |
group: pr-${{ github.event.pull_request.number }}-checks | |
cancel-in-progress: true | |
jobs: | |
# ---------- Initial steps ---------- | |
# Check that the changes introduced in this PR include changesets for packages that would need them | |
check-changesets: | |
name: Adapter changes accompanied by a changeset | |
runs-on: ['ubuntu-latest'] | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 2 | |
- name: Check whether adapter change also has a changeset | |
id: adapter_change_has_changeset | |
run: ./.github/scripts/validate-changesets.sh | |
# Set up yarn and install dependencies, caching them to be reused across other steps in this workflow | |
install-packages: | |
name: Install and verify dependencies | |
runs-on: [ubuntu-latest] | |
outputs: | |
changed-packages: ${{ steps.changed-adapters.outputs.CHANGED_PACKAGES }} | |
adapter-list: ${{ steps.changed-adapters.outputs.CHANGED_ADAPTERS }} | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set up and install dependencies | |
uses: ./.github/actions/setup | |
with: | |
base-branch: origin/${{ github.base_ref }} | |
- name: Build list of changed packages and changed adapters | |
id: changed-adapters | |
run: ./.github/scripts/changed-adapters.sh | |
# ---------- Adapter checks (only for changed EAs) ---------- | |
# Check that there are no compilation errors in test. | |
# There are many existing tests with compilation errors, so we skip them | |
# until we can fix them. | |
compile-tests: | |
name: Compile tests for changed packages | |
runs-on: [ubuntu-latest] | |
if: needs.install-packages.outputs.changed-packages != '[]' | |
needs: | |
- check-changesets | |
- install-packages | |
permissions: | |
contents: read | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Set up and install dependencies | |
uses: ./.github/actions/setup | |
- name: Compile tests | |
env: | |
CHANGED_PACKAGES: ${{ needs.install-packages.outputs.changed-packages }} | |
FAILING_TESTS_PATTERN: '/composites/glv-token/|/composites/gm-token/|/core/bootstrap/|/sources/bitgo-reserves-test/|/sources/bitgo-reserves/|/sources/coinpaprika/|/sources/cryptocompare/|/sources/icap/|/sources/ipfs/|/sources/layer2-sequencer-health/|/k6/|/observation/' | |
run: | | |
echo "Tests that should compile:" | |
configs_to_compile=($(echo "$CHANGED_PACKAGES" | jq '.[].location + "/tsconfig.test.json"' -r | grep -v -E "$FAILING_TESTS_PATTERN" || true)) | |
if [ ${#configs_to_compile[@]} -eq 0 ]; then | |
echo "No tests to compile." | |
else | |
yarn tsc -b --noEmit "${configs_to_compile[@]}" | |
fi | |
echo "Tests that should not compile:" | |
for package in $(echo "$CHANGED_PACKAGES" | jq '.[].location + "/"' -r | grep -E "$FAILING_TESTS_PATTERN"); do | |
if yarn tsc -b --noEmit "${package}tsconfig.test.json"; then | |
echo "Compilation succeeded for $package. Remove it from FAILING_TESTS_PATTERN so it doesn't break again in the future." | |
exit 1 | |
fi | |
done | |
# Run unit tests | |
unit-tests: | |
name: Run unit tests for changed adapters | |
runs-on: [ubuntu-latest] | |
if: needs.install-packages.outputs.changed-packages != '[]' | |
needs: | |
- check-changesets | |
- install-packages | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Set up and install dependencies | |
uses: ./.github/actions/setup | |
- name: Run unit tests | |
env: | |
CHANGED_PACKAGES: ${{ needs.install-packages.outputs.changed-packages }} | |
run: yarn test --passWithNoTests $(echo $CHANGED_PACKAGES | jq '.[].location + "/test/unit"' -r | tr '\n' ' ') | |
# Run integration tests | |
integration-tests: | |
name: Run integration tests for changed adapters | |
runs-on: [ubuntu-latest] | |
if: needs.install-packages.outputs.changed-packages != '[]' | |
needs: | |
- check-changesets | |
- install-packages | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Set up and install dependencies | |
uses: ./.github/actions/setup | |
- name: Run integration tests | |
env: | |
CHANGED_PACKAGES: ${{ needs.install-packages.outputs.changed-packages }} | |
run: yarn test --passWithNoTests $(echo $CHANGED_PACKAGES | jq '.[].location + "/test/integration"' -r | tr '\n' ' ') | |
# Run non-unit, non-integration tests | |
non-unit-non-integration-tests: | |
name: Run non-unit, non-integration tests for changed packages | |
runs-on: [ubuntu-latest] | |
if: needs.install-packages.outputs.changed-packages != '[]' | |
needs: | |
- check-changesets | |
- install-packages | |
permissions: | |
contents: read | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Set up and install dependencies | |
uses: ./.github/actions/setup | |
- name: Run tests | |
env: | |
CHANGED_PACKAGES: ${{ needs.install-packages.outputs.changed-packages }} | |
run: | | |
# TODO: Reduce the ignored patterns to only /dist/, /test/unit/ and | |
# /test/integration/ by making the other tests actually pass. | |
yarn test --passWithNoTests $(echo $CHANGED_PACKAGES | jq '.[].location + "/"' -r | tr '\n' ' ') --testPathIgnorePatterns="$(echo $CHANGED_PACKAGES | jq --raw-output 'map(.location | . + "/dist/|" + . + "/test/unit/|" + . + "/test/integration") | join("|")')|/test/e2e/|/test/transports/|packages/scripts/src/docker-build/|packages/scripts/src/schema-flatten/|packages/scripts/src/generate-image-name/|packages/scripts/src/flux-emulator/|packages/k6/src/" | |
# Run linters | |
linters: | |
name: Run linters and formatters | |
runs-on: [ubuntu-latest] | |
needs: | |
- check-changesets | |
- install-packages | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Set up and install dependencies | |
uses: ./.github/actions/setup | |
- name: Lint all files | |
run: yarn lint | |
- name: Check for formatting errors | |
run: yarn format:check | |
# Run documentation tests (check that the doc generation succeeds to avoid problems downstream) | |
run-documentation-check: | |
name: Documentation generation test | |
runs-on: [ubuntu-latest] | |
if: needs.install-packages.outputs.changed-packages != '[]' | |
needs: | |
- check-changesets | |
- install-packages | |
env: | |
METRICS_ENABLED: false | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set up and install dependencies | |
uses: ./.github/actions/setup | |
- name: Test Master List Generation | |
run: yarn generate:master-list -v | |
- name: Test README Generation | |
run: yarn generate:readme -v | |
# Run a script to check that modified v3 adapters have the latest framework version | |
ea-framework-version-check: | |
name: Check that changed adapters have the latest EA framework version | |
runs-on: [ubuntu-latest] | |
if: needs.install-packages.outputs.changed-packages != '[]' | |
needs: | |
- check-changesets | |
- install-packages | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Set up and install dependencies | |
uses: ./.github/actions/setup | |
- name: Check for outdated ea-framework dependencies | |
env: | |
CHANGED_PACKAGES: ${{ needs.install-packages.outputs.changed-packages }} | |
run: | | |
changed_packages=$(echo $CHANGED_PACKAGES | jq '.[].location' -r | tr '\n' ' ') | |
dependency="@chainlink/external-adapter-framework" | |
v3_packages=() | |
outdated_packages=() | |
packages=$(find packages -name 'package.json') | |
latest_version=$(curl -sH "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/smartcontractkit/ea-framework-js/contents/package.json" | jq -r '.content' | base64 -d | jq -r '.version') | |
# get the list of v3 EAs | |
for file in $(echo $packages); do | |
if jq -e ".dependencies[\"$dependency\"]" "$file" >/dev/null; then | |
v3_packages+=("$(dirname $file)") | |
fi | |
done | |
# check if changed code is part of any v3 EA | |
for changedFile in $changed_packages; do | |
for package in "${v3_packages[@]}"; do | |
if [[ "$changedFile" == "$package"* ]]; then | |
# found change in v3 EA, comparing versions | |
local_version=$(jq -r ".dependencies[\"$dependency\"]" "$package/package.json") | |
if [ "$local_version" != "$latest_version" ] && ! grep -q "^$package$" <<< "${outdated_packages[@]}"; then | |
outdated_packages+=("$package") | |
fi | |
fi | |
done | |
done | |
# print and error if there are outdated adapters | |
if [ ${#outdated_packages[@]} -gt 0 ]; then | |
echo "The following packages have an outdated \"$dependency\" dependency:" | |
for file in "${outdated_packages[@]}"; do | |
echo "- $file" | |
done | |
exit 1 | |
fi |