diff --git a/.changeset/funny-snails-shake.md b/.changeset/funny-snails-shake.md new file mode 100644 index 00000000000..dad6c90872b --- /dev/null +++ b/.changeset/funny-snails-shake.md @@ -0,0 +1,5 @@ +--- +"chainlink": minor +--- + +Added API for products to query a transaction's status in the TXM #internal diff --git a/.changeset/giant-pumpkins-return.md b/.changeset/giant-pumpkins-return.md new file mode 100644 index 00000000000..c908db198f7 --- /dev/null +++ b/.changeset/giant-pumpkins-return.md @@ -0,0 +1,5 @@ +--- +"chainlink": patch +--- + +#internal bumped chainlink-common version to commit 1eff5dedc9857ed8811186dd2996603942dc1107 diff --git a/.changeset/honest-avocados-heal.md b/.changeset/honest-avocados-heal.md new file mode 100644 index 00000000000..a28c08fde84 --- /dev/null +++ b/.changeset/honest-avocados-heal.md @@ -0,0 +1,5 @@ +--- +"chainlink": patch +--- + +add test for v23 #added diff --git a/.changeset/popular-candles-mix.md b/.changeset/popular-candles-mix.md new file mode 100644 index 00000000000..48221885825 --- /dev/null +++ b/.changeset/popular-candles-mix.md @@ -0,0 +1,5 @@ +--- +"chainlink": patch +--- + +#internal Clean up workflow engine logging diff --git a/.changeset/pretty-dancers-pull.md b/.changeset/pretty-dancers-pull.md new file mode 100644 index 00000000000..af8ec9db0c8 --- /dev/null +++ b/.changeset/pretty-dancers-pull.md @@ -0,0 +1,5 @@ +--- +"chainlink": patch +--- + +#changed Expand EVM implementation compatibility pipeline diff --git a/.changeset/purple-poets-film.md b/.changeset/purple-poets-film.md new file mode 100644 index 00000000000..cc858c72f0f --- /dev/null +++ b/.changeset/purple-poets-film.md @@ -0,0 +1,5 @@ +--- +"chainlink": minor +--- + +#internal Implemented the `GetTransactionStatus` method on the EVM implementation of the `ChainWriter`. diff --git a/.changeset/rotten-emus-work.md b/.changeset/rotten-emus-work.md new file mode 100644 index 00000000000..ecf5ee0b9f5 --- /dev/null +++ b/.changeset/rotten-emus-work.md @@ -0,0 +1,5 @@ +--- +"chainlink": patch +--- + +#internal fixed a bug where we weren't sending the value param to the txm diff --git a/.changeset/tall-walls-agree.md b/.changeset/tall-walls-agree.md new file mode 100644 index 00000000000..6f1f5505b64 --- /dev/null +++ b/.changeset/tall-walls-agree.md @@ -0,0 +1,5 @@ +--- +"chainlink": patch +--- + +#internal upgrade keystone contracts to 0.8.24 diff --git a/.changeset/tender-carpets-cry.md b/.changeset/tender-carpets-cry.md new file mode 100644 index 00000000000..075f769ce00 --- /dev/null +++ b/.changeset/tender-carpets-cry.md @@ -0,0 +1,7 @@ +--- +"chainlink": patch +--- + +Add new relayer type "dummy" for testing. + +#added diff --git a/.changeset/thick-lemons-beam.md b/.changeset/thick-lemons-beam.md new file mode 100644 index 00000000000..0ce6e04780e --- /dev/null +++ b/.changeset/thick-lemons-beam.md @@ -0,0 +1,5 @@ +--- +"chainlink": minor +--- + +#internal Add script to provision capability registry diff --git a/.changeset/tiny-camels-flow.md b/.changeset/tiny-camels-flow.md new file mode 100644 index 00000000000..3271bbb4a39 --- /dev/null +++ b/.changeset/tiny-camels-flow.md @@ -0,0 +1,5 @@ +--- +"chainlink": patch +--- + +#bugfix fixed ureachable code bug which could result in stuck txns diff --git a/.changeset/wise-wasps-drum.md b/.changeset/wise-wasps-drum.md new file mode 100644 index 00000000000..0a4a6eaf665 --- /dev/null +++ b/.changeset/wise-wasps-drum.md @@ -0,0 +1,5 @@ +--- +"chainlink": patch +--- + +#internal Add loggercheck linter to verify that \*w logging methods have even number of args. diff --git a/.changeset/young-parrots-peel.md b/.changeset/young-parrots-peel.md new file mode 100644 index 00000000000..a7b696d14ff --- /dev/null +++ b/.changeset/young-parrots-peel.md @@ -0,0 +1,5 @@ +--- +"chainlink": minor +--- + +Add registry syncer package #internal diff --git a/.github/actions/build-chainlink-image/action.yml b/.github/actions/build-chainlink-image/action.yml index 26d55ed7f5e..bee48af3989 100644 --- a/.github/actions/build-chainlink-image/action.yml +++ b/.github/actions/build-chainlink-image/action.yml @@ -18,12 +18,16 @@ inputs: dep_evm_sha: description: The chainlink-evm commit sha to use in go deps required: false + check_image_exists: + description: "Check if the image exists in ECR before building" + required: false + default: 'false' runs: using: composite steps: - name: Check if image exists - if: ${{ inputs.dep_evm_sha != '' }} + if: ${{ inputs.dep_evm_sha != '' || inputs.check_image_exists == 'true'}} id: check-image uses: smartcontractkit/chainlink-github-actions/docker/image-exists@fc3e0df622521019f50d772726d6bf8dc919dd38 # v2.3.19 with: diff --git a/.github/actions/delete-deployments/action.yml b/.github/actions/delete-deployments/action.yml index 6641b352b37..eaf7e0f61bd 100644 --- a/.github/actions/delete-deployments/action.yml +++ b/.github/actions/delete-deployments/action.yml @@ -31,7 +31,7 @@ runs: steps: - uses: pnpm/action-setup@a3252b78c470c02df07e9d59298aecedc3ccdd6d # v3.0.0 with: - version: ^8.0.0 + version: ^9.0.0 - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: diff --git a/.github/actions/delete-deployments/package.json b/.github/actions/delete-deployments/package.json index d385569b2ea..a2d6f839089 100644 --- a/.github/actions/delete-deployments/package.json +++ b/.github/actions/delete-deployments/package.json @@ -10,6 +10,10 @@ "keywords": [], "author": "", "license": "ISC", + "engines": { + "node": ">=18", + "pnpm": ">=9" + }, "dependencies": { "@actions/core": "^1.10.1", "@octokit/action": "^6.1.0", diff --git a/.github/actions/delete-deployments/pnpm-lock.yaml b/.github/actions/delete-deployments/pnpm-lock.yaml index 92da36617d5..d9f25b3f80d 100644 --- a/.github/actions/delete-deployments/pnpm-lock.yaml +++ b/.github/actions/delete-deployments/pnpm-lock.yaml @@ -1,285 +1,183 @@ -lockfileVersion: '6.0' +lockfileVersion: '9.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false -dependencies: - '@actions/core': - specifier: ^1.10.1 - version: 1.10.1 - '@octokit/action': - specifier: ^6.1.0 - version: 6.1.0 - '@octokit/plugin-retry': - specifier: ^6.0.1 - version: 6.0.1(@octokit/core@5.0.0) - '@octokit/plugin-throttling': - specifier: ^7.0.0 - version: 7.0.0(@octokit/core@5.0.0) - ts-node: - specifier: ^10.9.2 - version: 10.9.2(@types/node@20.12.10)(typescript@5.4.5) - -devDependencies: - '@octokit/types': - specifier: ^11.1.0 - version: 11.1.0 - '@types/node': - specifier: ^20.12.10 - version: 20.12.10 - typescript: - specifier: ^5.4.5 - version: 5.4.5 +importers: + + .: + dependencies: + '@actions/core': + specifier: ^1.10.1 + version: 1.10.1 + '@octokit/action': + specifier: ^6.1.0 + version: 6.1.0 + '@octokit/plugin-retry': + specifier: ^6.0.1 + version: 6.0.1(@octokit/core@5.0.0) + '@octokit/plugin-throttling': + specifier: ^7.0.0 + version: 7.0.0(@octokit/core@5.0.0) + ts-node: + specifier: ^10.9.2 + version: 10.9.2(@types/node@20.12.10)(typescript@5.4.5) + devDependencies: + '@octokit/types': + specifier: ^11.1.0 + version: 11.1.0 + '@types/node': + specifier: ^20.12.10 + version: 20.12.10 + typescript: + specifier: ^5.4.5 + version: 5.4.5 packages: - /@actions/core@1.10.1: + '@actions/core@1.10.1': resolution: {integrity: sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g==} - dependencies: - '@actions/http-client': 2.1.1 - uuid: 8.3.2 - dev: false - /@actions/http-client@2.1.1: + '@actions/http-client@2.1.1': resolution: {integrity: sha512-qhrkRMB40bbbLo7gF+0vu+X+UawOvQQqNAA/5Unx774RS8poaOhThDOG6BGmxvAnxhQnDp2BG/ZUm65xZILTpw==} - dependencies: - tunnel: 0.0.6 - dev: false - /@cspotcode/source-map-support@0.8.1: + '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - dev: false - /@jridgewell/resolve-uri@3.1.1: + '@jridgewell/resolve-uri@3.1.1': resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} - dev: false - /@jridgewell/sourcemap-codec@1.4.15: + '@jridgewell/sourcemap-codec@1.4.15': resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - dev: false - /@jridgewell/trace-mapping@0.3.9: + '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 - dev: false - /@octokit/action@6.1.0: + '@octokit/action@6.1.0': resolution: {integrity: sha512-lo+nHx8kAV86bxvOVOI3vFjX3gXPd/L7guAUbvs3pUvnR2KC+R7yjBkA1uACt4gYhs4LcWP3AXSGQzsbeN2XXw==} engines: {node: '>= 18'} - dependencies: - '@octokit/auth-action': 4.0.0 - '@octokit/core': 5.0.0 - '@octokit/plugin-paginate-rest': 9.2.1(@octokit/core@5.0.0) - '@octokit/plugin-rest-endpoint-methods': 10.4.1(@octokit/core@5.0.0) - '@octokit/types': 12.6.0 - undici: 6.16.0 - dev: false - /@octokit/auth-action@4.0.0: + '@octokit/auth-action@4.0.0': resolution: {integrity: sha512-sMm9lWZdiX6e89YFaLrgE9EFs94k58BwIkvjOtozNWUqyTmsrnWFr/M5LolaRzZ7Kmb5FbhF9hi7FEeE274SoQ==} engines: {node: '>= 18'} - dependencies: - '@octokit/auth-token': 4.0.0 - '@octokit/types': 11.1.0 - dev: false - /@octokit/auth-token@4.0.0: + '@octokit/auth-token@4.0.0': resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==} engines: {node: '>= 18'} - dev: false - /@octokit/core@5.0.0: + '@octokit/core@5.0.0': resolution: {integrity: sha512-YbAtMWIrbZ9FCXbLwT9wWB8TyLjq9mxpKdgB3dUNxQcIVTf9hJ70gRPwAcqGZdY6WdJPZ0I7jLaaNDCiloGN2A==} engines: {node: '>= 18'} - dependencies: - '@octokit/auth-token': 4.0.0 - '@octokit/graphql': 7.0.1 - '@octokit/request': 8.1.1 - '@octokit/request-error': 5.0.0 - '@octokit/types': 11.1.0 - before-after-hook: 2.2.3 - universal-user-agent: 6.0.0 - dev: false - /@octokit/endpoint@9.0.0: + '@octokit/endpoint@9.0.0': resolution: {integrity: sha512-szrQhiqJ88gghWY2Htt8MqUDO6++E/EIXqJ2ZEp5ma3uGS46o7LZAzSLt49myB7rT+Hfw5Y6gO3LmOxGzHijAQ==} engines: {node: '>= 18'} - dependencies: - '@octokit/types': 11.1.0 - is-plain-object: 5.0.0 - universal-user-agent: 6.0.0 - dev: false - /@octokit/graphql@7.0.1: + '@octokit/graphql@7.0.1': resolution: {integrity: sha512-T5S3oZ1JOE58gom6MIcrgwZXzTaxRnxBso58xhozxHpOqSTgDS6YNeEUvZ/kRvXgPrRz/KHnZhtb7jUMRi9E6w==} engines: {node: '>= 18'} - dependencies: - '@octokit/request': 8.1.1 - '@octokit/types': 11.1.0 - universal-user-agent: 6.0.0 - dev: false - /@octokit/openapi-types@18.0.0: + '@octokit/openapi-types@18.0.0': resolution: {integrity: sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==} - /@octokit/openapi-types@20.0.0: + '@octokit/openapi-types@20.0.0': resolution: {integrity: sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==} - dev: false - /@octokit/plugin-paginate-rest@9.2.1(@octokit/core@5.0.0): + '@octokit/plugin-paginate-rest@9.2.1': resolution: {integrity: sha512-wfGhE/TAkXZRLjksFXuDZdmGnJQHvtU/joFQdweXUgzo1XwvBCD4o4+75NtFfjfLK5IwLf9vHTfSiU3sLRYpRw==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': '5' - dependencies: - '@octokit/core': 5.0.0 - '@octokit/types': 12.6.0 - dev: false - /@octokit/plugin-rest-endpoint-methods@10.4.1(@octokit/core@5.0.0): + '@octokit/plugin-rest-endpoint-methods@10.4.1': resolution: {integrity: sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': '5' - dependencies: - '@octokit/core': 5.0.0 - '@octokit/types': 12.6.0 - dev: false - /@octokit/plugin-retry@6.0.1(@octokit/core@5.0.0): + '@octokit/plugin-retry@6.0.1': resolution: {integrity: sha512-SKs+Tz9oj0g4p28qkZwl/topGcb0k0qPNX/i7vBKmDsjoeqnVfFUquqrE/O9oJY7+oLzdCtkiWSXLpLjvl6uog==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': '>=5' - dependencies: - '@octokit/core': 5.0.0 - '@octokit/request-error': 5.0.0 - '@octokit/types': 12.6.0 - bottleneck: 2.19.5 - dev: false - /@octokit/plugin-throttling@7.0.0(@octokit/core@5.0.0): + '@octokit/plugin-throttling@7.0.0': resolution: {integrity: sha512-KL2k/d0uANc8XqP5S64YcNFCudR3F5AaKO39XWdUtlJIjT9Ni79ekWJ6Kj5xvAw87udkOMEPcVf9xEge2+ahew==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': ^5.0.0 - dependencies: - '@octokit/core': 5.0.0 - '@octokit/types': 11.1.0 - bottleneck: 2.19.5 - dev: false - /@octokit/request-error@5.0.0: + '@octokit/request-error@5.0.0': resolution: {integrity: sha512-1ue0DH0Lif5iEqT52+Rf/hf0RmGO9NWFjrzmrkArpG9trFfDM/efx00BJHdLGuro4BR/gECxCU2Twf5OKrRFsQ==} engines: {node: '>= 18'} - dependencies: - '@octokit/types': 11.1.0 - deprecation: 2.3.1 - once: 1.4.0 - dev: false - /@octokit/request@8.1.1: + '@octokit/request@8.1.1': resolution: {integrity: sha512-8N+tdUz4aCqQmXl8FpHYfKG9GelDFd7XGVzyN8rc6WxVlYcfpHECnuRkgquzz+WzvHTK62co5di8gSXnzASZPQ==} engines: {node: '>= 18'} - dependencies: - '@octokit/endpoint': 9.0.0 - '@octokit/request-error': 5.0.0 - '@octokit/types': 11.1.0 - is-plain-object: 5.0.0 - universal-user-agent: 6.0.0 - dev: false - /@octokit/types@11.1.0: + '@octokit/types@11.1.0': resolution: {integrity: sha512-Fz0+7GyLm/bHt8fwEqgvRBWwIV1S6wRRyq+V6exRKLVWaKGsuy6H9QFYeBVDV7rK6fO3XwHgQOPxv+cLj2zpXQ==} - dependencies: - '@octokit/openapi-types': 18.0.0 - /@octokit/types@12.6.0: + '@octokit/types@12.6.0': resolution: {integrity: sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==} - dependencies: - '@octokit/openapi-types': 20.0.0 - dev: false - /@tsconfig/node10@1.0.9: + '@tsconfig/node10@1.0.9': resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} - dev: false - /@tsconfig/node12@1.0.11: + '@tsconfig/node12@1.0.11': resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - dev: false - /@tsconfig/node14@1.0.3: + '@tsconfig/node14@1.0.3': resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - dev: false - /@tsconfig/node16@1.0.4: + '@tsconfig/node16@1.0.4': resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - dev: false - /@types/node@20.12.10: + '@types/node@20.12.10': resolution: {integrity: sha512-Eem5pH9pmWBHoGAT8Dr5fdc5rYA+4NAovdM4EktRPVAAiJhmWWfQrA0cFhAbOsQdSfIHjAud6YdkbL69+zSKjw==} - dependencies: - undici-types: 5.26.5 - /acorn-walk@8.2.0: + acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} - dev: false - /acorn@8.10.0: + acorn@8.10.0: resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} engines: {node: '>=0.4.0'} hasBin: true - dev: false - /arg@4.1.3: + arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - dev: false - /before-after-hook@2.2.3: + before-after-hook@2.2.3: resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} - dev: false - /bottleneck@2.19.5: + bottleneck@2.19.5: resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==} - dev: false - /create-require@1.1.1: + create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - dev: false - /deprecation@2.3.1: + deprecation@2.3.1: resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} - dev: false - /diff@4.0.2: + diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} - dev: false - /is-plain-object@5.0.0: + is-plain-object@5.0.0: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} engines: {node: '>=0.10.0'} - dev: false - /make-error@1.3.6: + make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - dev: false - /once@1.4.0: + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - dependencies: - wrappy: 1.0.2 - dev: false - /ts-node@10.9.2(@types/node@20.12.10)(typescript@5.4.5): + ts-node@10.9.2: resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: @@ -292,6 +190,188 @@ packages: optional: true '@swc/wasm': optional: true + + tunnel@0.0.6: + resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} + engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} + + typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + undici@6.16.0: + resolution: {integrity: sha512-HQfVddOTb5PJtfLnJ1Px8bNGyIg/z7WTj1hjUSna1Itsv59Oca9JdclIU08ToNqvWWXjFLRzc9rqjnpfw5UWcQ==} + engines: {node: '>=18.17'} + + universal-user-agent@6.0.0: + resolution: {integrity: sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==} + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + +snapshots: + + '@actions/core@1.10.1': + dependencies: + '@actions/http-client': 2.1.1 + uuid: 8.3.2 + + '@actions/http-client@2.1.1': + dependencies: + tunnel: 0.0.6 + + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + + '@jridgewell/resolve-uri@3.1.1': {} + + '@jridgewell/sourcemap-codec@1.4.15': {} + + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + + '@octokit/action@6.1.0': + dependencies: + '@octokit/auth-action': 4.0.0 + '@octokit/core': 5.0.0 + '@octokit/plugin-paginate-rest': 9.2.1(@octokit/core@5.0.0) + '@octokit/plugin-rest-endpoint-methods': 10.4.1(@octokit/core@5.0.0) + '@octokit/types': 12.6.0 + undici: 6.16.0 + + '@octokit/auth-action@4.0.0': + dependencies: + '@octokit/auth-token': 4.0.0 + '@octokit/types': 11.1.0 + + '@octokit/auth-token@4.0.0': {} + + '@octokit/core@5.0.0': + dependencies: + '@octokit/auth-token': 4.0.0 + '@octokit/graphql': 7.0.1 + '@octokit/request': 8.1.1 + '@octokit/request-error': 5.0.0 + '@octokit/types': 11.1.0 + before-after-hook: 2.2.3 + universal-user-agent: 6.0.0 + + '@octokit/endpoint@9.0.0': + dependencies: + '@octokit/types': 11.1.0 + is-plain-object: 5.0.0 + universal-user-agent: 6.0.0 + + '@octokit/graphql@7.0.1': + dependencies: + '@octokit/request': 8.1.1 + '@octokit/types': 11.1.0 + universal-user-agent: 6.0.0 + + '@octokit/openapi-types@18.0.0': {} + + '@octokit/openapi-types@20.0.0': {} + + '@octokit/plugin-paginate-rest@9.2.1(@octokit/core@5.0.0)': + dependencies: + '@octokit/core': 5.0.0 + '@octokit/types': 12.6.0 + + '@octokit/plugin-rest-endpoint-methods@10.4.1(@octokit/core@5.0.0)': + dependencies: + '@octokit/core': 5.0.0 + '@octokit/types': 12.6.0 + + '@octokit/plugin-retry@6.0.1(@octokit/core@5.0.0)': + dependencies: + '@octokit/core': 5.0.0 + '@octokit/request-error': 5.0.0 + '@octokit/types': 12.6.0 + bottleneck: 2.19.5 + + '@octokit/plugin-throttling@7.0.0(@octokit/core@5.0.0)': + dependencies: + '@octokit/core': 5.0.0 + '@octokit/types': 11.1.0 + bottleneck: 2.19.5 + + '@octokit/request-error@5.0.0': + dependencies: + '@octokit/types': 11.1.0 + deprecation: 2.3.1 + once: 1.4.0 + + '@octokit/request@8.1.1': + dependencies: + '@octokit/endpoint': 9.0.0 + '@octokit/request-error': 5.0.0 + '@octokit/types': 11.1.0 + is-plain-object: 5.0.0 + universal-user-agent: 6.0.0 + + '@octokit/types@11.1.0': + dependencies: + '@octokit/openapi-types': 18.0.0 + + '@octokit/types@12.6.0': + dependencies: + '@octokit/openapi-types': 20.0.0 + + '@tsconfig/node10@1.0.9': {} + + '@tsconfig/node12@1.0.11': {} + + '@tsconfig/node14@1.0.3': {} + + '@tsconfig/node16@1.0.4': {} + + '@types/node@20.12.10': + dependencies: + undici-types: 5.26.5 + + acorn-walk@8.2.0: {} + + acorn@8.10.0: {} + + arg@4.1.3: {} + + before-after-hook@2.2.3: {} + + bottleneck@2.19.5: {} + + create-require@1.1.1: {} + + deprecation@2.3.1: {} + + diff@4.0.2: {} + + is-plain-object@5.0.0: {} + + make-error@1.3.6: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + ts-node@10.9.2(@types/node@20.12.10)(typescript@5.4.5): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 @@ -308,44 +388,21 @@ packages: typescript: 5.4.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - dev: false - /tunnel@0.0.6: - resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} - engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} - dev: false + tunnel@0.0.6: {} - /typescript@5.4.5: - resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} - engines: {node: '>=14.17'} - hasBin: true + typescript@5.4.5: {} - /undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + undici-types@5.26.5: {} - /undici@6.16.0: - resolution: {integrity: sha512-HQfVddOTb5PJtfLnJ1Px8bNGyIg/z7WTj1hjUSna1Itsv59Oca9JdclIU08ToNqvWWXjFLRzc9rqjnpfw5UWcQ==} - engines: {node: '>=18.17'} - dev: false + undici@6.16.0: {} - /universal-user-agent@6.0.0: - resolution: {integrity: sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==} - dev: false + universal-user-agent@6.0.0: {} - /uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - dev: false + uuid@8.3.2: {} - /v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - dev: false + v8-compile-cache-lib@3.0.1: {} - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: false + wrappy@1.0.2: {} - /yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - dev: false + yn@3.1.1: {} diff --git a/.github/actions/notify-slack-jobs-result/action.yml b/.github/actions/notify-slack-jobs-result/action.yml index f5df87bb909..da7daa5b621 100644 --- a/.github/actions/notify-slack-jobs-result/action.yml +++ b/.github/actions/notify-slack-jobs-result/action.yml @@ -25,6 +25,9 @@ inputs: slack_thread_ts: description: "The Slack thread timestamp to post the message to, handy for keeping multiple related results in a single thread" required: false + base64_parsed_results: + description: "Base64 encoded parsed results to use" + required: false runs: using: composite @@ -33,43 +36,54 @@ runs: shell: bash id: test-results run: | - # I feel like there's some clever, fully jq way to do this, but I ain't got the motivation to figure it out - echo "Querying test results at https://api.github.com/repos/${{inputs.github_repository}}/actions/runs/${{ inputs.workflow_run_id }}/jobs" - - # we can get a maximum of 100 jobs per page, after that we need to start using pagination - PARSED_RESULTS=$(curl \ - -H "Authorization: Bearer ${{ inputs.github_token }}" \ - 'https://api.github.com/repos/${{inputs.github_repository}}/actions/runs/${{ inputs.workflow_run_id }}/jobs?per_page=100' \ - | jq -r --arg pattern "${{ inputs.github_job_name_regex }}" '.jobs[] - | select(.name | test($pattern)) as $job - | $job.steps[] - | select(.name == "Run Tests") - | { conclusion: (if .conclusion == "success" then ":white_check_mark:" else ":x:" end), cap: ("*" + ($job.name | capture($pattern).cap) + "*"), html_url: $job.html_url }') - + if [ -n "${{ inputs.base64_parsed_results }}" ]; then + echo "Using base64 parsed results" + PARSED_RESULTS=$(echo "${{ inputs.base64_parsed_results }}" | base64 -d) + else + go install github.com/smartcontractkit/chainlink-testing-framework/tools/workflowresultparser@v1.0.0 + PATH=$PATH:$(go env GOPATH)/bin + export PATH + + workflowresultparser -workflowRunID ${{ inputs.workflow_run_id }} -githubToken ${{ inputs.github_token }} -githubRepo "${{ inputs.github_repository }}" -jobNameRegex "${{ inputs.github_job_name_regex }}" -outputFile=output.json + + if [ ! -f output.json ]; then + PARSED_RESULTS='""' + else + PARSED_RESULTS=$(cat output.json | jq -c "select(has(\"results\")) | .results[]") + fi + + fi + echo "Parsed Results:" echo $PARSED_RESULTS - + ALL_SUCCESS=true - echo "Checking for failures" - echo "$PARSED_RESULTS" | jq -s | jq -r '.[] | select(.conclusion != ":white_check_mark:")' - for row in $(echo "$PARSED_RESULTS" | jq -s | jq -r '.[] | select(.conclusion != ":white_check_mark:")'); do - ALL_SUCCESS=false - break - done - echo "Success: $ALL_SUCCESS" - - echo all_success=$ALL_SUCCESS >> $GITHUB_OUTPUT - - FORMATTED_RESULTS=$(echo $PARSED_RESULTS | jq -s '[.[] - | { - conclusion: .conclusion, - cap: .cap, - html_url: .html_url - } - ] - | map("{\"type\": \"section\", \"text\": {\"type\": \"mrkdwn\", \"text\": \"<\(.html_url)|\(.cap)>: \(.conclusion)\"}}") - | join(",")') - + + if [ "$PARSED_RESULTS" != '""' ]; then + echo "Checking for failures" + echo "$PARSED_RESULTS" | jq -s | jq -r '.[] | select(.conclusion != ":white_check_mark:")' + for row in $(echo "$PARSED_RESULTS" | jq -s | jq -r '.[] | select(.conclusion != ":white_check_mark:")'); do + ALL_SUCCESS=false + break + done + echo "Success: $ALL_SUCCESS" + + echo all_success=$ALL_SUCCESS >> $GITHUB_OUTPUT + + FORMATTED_RESULTS=$(echo $PARSED_RESULTS | jq -s '[.[] + | { + conclusion: .conclusion, + cap: .cap, + html_url: .html_url + } + ] + | map("{\"type\": \"section\", \"text\": {\"type\": \"mrkdwn\", \"text\": \"<\(.html_url)|\(.cap)>: \(.conclusion)\"}}") + | join(",")') + else + echo "Nothing to post, no results found" + exit 0 + fi + echo "Formatted Results:" echo $FORMATTED_RESULTS @@ -82,6 +96,7 @@ runs: echo results=$CLEAN_RESULTS >> $GITHUB_OUTPUT - name: Post Results uses: slackapi/slack-github-action@6c661ce58804a1a20f6dc5fbee7f0381b469e001 # v1.25.0 + if: steps.test-results.outputs.results != '' env: SLACK_BOT_TOKEN: ${{ inputs.slack_bot_token }} with: @@ -108,4 +123,4 @@ runs: ] } ] - } + } diff --git a/.github/actions/setup-nodejs/action.yaml b/.github/actions/setup-nodejs/action.yaml index ae6975e7415..9dc1cf375d3 100644 --- a/.github/actions/setup-nodejs/action.yaml +++ b/.github/actions/setup-nodejs/action.yaml @@ -9,7 +9,7 @@ runs: steps: - uses: pnpm/action-setup@a3252b78c470c02df07e9d59298aecedc3ccdd6d # v3.0.0 with: - version: ^7.0.0 + version: ^9.0.0 - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: diff --git a/.github/actions/split-tests/action.yaml b/.github/actions/split-tests/action.yaml index 633e897db54..d11f0bcbc3a 100644 --- a/.github/actions/split-tests/action.yaml +++ b/.github/actions/split-tests/action.yaml @@ -13,7 +13,7 @@ runs: steps: - uses: pnpm/action-setup@a3252b78c470c02df07e9d59298aecedc3ccdd6d # v3.0.0 with: - version: ^7.0.0 + version: ^8.0.0 - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: diff --git a/.github/actions/split-tests/package.json b/.github/actions/split-tests/package.json index cddc547bb12..10a71c0b351 100644 --- a/.github/actions/split-tests/package.json +++ b/.github/actions/split-tests/package.json @@ -11,6 +11,10 @@ "keywords": [], "author": "", "license": "MIT", + "engines": { + "node": "^16.0.0", + "pnpm": "^8.0.0" + }, "dependencies": { "@actions/core": "^1.10.1", "ts-node": "^10.9.2", diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 129f46d88ab..291bfe4ce88 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,4 +1,3 @@ -## Ticket -## Requires Dependencies +### Requires Dependencies -## Resolves Dependencies +### Resolves Dependencies