Skip to content

Integration In-Memory Tests #41442

Integration In-Memory Tests

Integration In-Memory Tests #41442

#
# Workflow to run in-memory integration tests
# Test matrix is defined in .github/integration-in-memory-tests.yml
#
name: Integration In-Memory Tests
run-name: Integration In-Memory Tests
on:
merge_group:
pull_request:
push:
tags:
- "*"
workflow_dispatch:
inputs:
cl_ref:
description: "The ref to checkout, defaults to the calling branch"
required: false
type: string
# Only run 1 of this workflow at a time per PR
concurrency:
group: ${{ github.ref }}-${{ github.repository }}-${{ github.event_name }}--integration-tests
cancel-in-progress: true
jobs:
changes:
environment:
# http://docs.github.com/en/actions/how-tos/deploy/configure-and-manage-deployments/control-deployments#using-environments-without-deployments
name: integration
deployment: false
name: Check Paths That Require Tests To Run
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
issues: read
# We don't directly merge dependabot PRs, so let's not waste the resources
if: github.actor != 'dependabot[bot]'
outputs:
run-tests: ${{ steps.advanced-triggers.outputs.run-tests }}
should_use_self_hosted_runner: ${{ steps.label-runs-on-opt-out.outputs.check-label-found == 'false' }}
steps:
- name: Checkout the repo
uses: actions/checkout@v6
with:
persist-credentials: false
repository: smartcontractkit/chainlink
ref: ${{ inputs.cl_ref }}
- name: Advanced Triggers
uses: smartcontractkit/.github/actions/advanced-triggers@advanced-triggers/v1
id: advanced-triggers
with:
file-sets: |
go-files:
- "**/*.go"
- "**/go.mod"
- "**/go.sum"
core-files:
- "core/**"
deployment-files:
- "deployment/**"
workflow-files:
- ".github/workflows/integration-in-memory-tests.yml"
- ".github/integration-in-memory-tests.yml"
- ".github/actions/**/*.y*ml"
core-test-files:
- "testdata/**"
- "core/**/testdata/**"
- "core/**/*_test.go"
deployment-test-files:
- "deployment/**/*_test.go"
- "deployment/**/testdata/**"
to-ignore-files:
- "system-tests/**"
- "devenv/**"
- "core/scripts/cre/**"
triggers: |
run-tests:
exclusion-sets: [ core-test-files, deployment-test-files, to-ignore-files ]
inclusion-sets: [ go-files, core-files, deployment-files, workflow-files ]
paths:
- "integration-tests/**"
- "**/*Dockerfile"
- '**/ccip/**'
- '**/*ccip*/**'
- name: Get PR Labels (runs-on-opt-out)
id: label-runs-on-opt-out
uses: smartcontractkit/.github/actions/get-pr-labels@get-pr-labels/v1
with:
check-label: "runs-on-opt-out"
run-ccip-integration-in-memory-tests-for-pr:
name: Run CCIP Tests For PR
permissions:
actions: read
checks: write
pull-requests: write
id-token: write
contents: read
needs: changes
if: github.event_name == 'pull_request' && needs.changes.outputs.run-tests == 'true'
uses: smartcontractkit/.github/.github/workflows/run-e2e-tests.yml@9c49ffcf252efbedd7ec280e1993ba29dcbc9443 # 2026-04-28
with:
workflow_name: Run CCIP Integration Tests For PR
chainlink_version: ${{ inputs.cl_ref || github.sha }}
test_path: .github/integration-in-memory-tests.yml
test_trigger: PR Integration CCIP Tests
skip_image_build: true # in-memory tests do not require an image
use-self-hosted-runners: ${{ needs.changes.outputs.should_use_self_hosted_runner }}
quarantine: "true"
secrets:
QA_AWS_REGION: ${{ secrets.QA_AWS_REGION }}
AWS_REGION: ${{ secrets.AWS_REGION }}
QA_AWS_ROLE_TO_ASSUME: ${{ secrets.QA_AWS_ROLE_TO_ASSUME }}
QA_AWS_ACCOUNT_NUMBER: ${{ secrets.QA_AWS_ACCOUNT_NUMBER }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SLACK_BOT_TOKEN: ${{ secrets.QA_SLACK_API_KEY }}
MAIN_DNS_ZONE_PUBLIC_SDLC: ${{ secrets.MAIN_DNS_ZONE_PUBLIC_SDLC }}
AWS_K8S_CLUSTER_NAME_SDLC: ${{ secrets.AWS_K8S_CLUSTER_NAME_SDLC }}
OPTIONAL_GATI_AWS_ROLE_ARN: ${{ secrets.AWS_OIDC_CHAINLINK_READ_ONLY_TOKEN_ISSUER_ROLE_ARN }}
OPTIONAL_GATI_LAMBDA_URL: ${{ secrets.AWS_INFRA_RELENG_TOKEN_ISSUER_LAMBDA_URL}}
TRUNK_API_KEY: ${{ secrets.TRUNK_API_KEY }}
run-ccip-integration-in-memory-tests-for-merge-queue:
name: Run CCIP Integration In Memory Tests For Merge Queue
permissions:
actions: read
checks: write
pull-requests: write
id-token: write
contents: read
needs: changes
if: github.event_name == 'merge_group' && needs.changes.outputs.run-tests == 'true'
uses: smartcontractkit/.github/.github/workflows/run-e2e-tests.yml@9c49ffcf252efbedd7ec280e1993ba29dcbc9443 # 2026-04-28
with:
workflow_name: Run CCIP Integration Tests For Merge Queue
chainlink_version: ${{ inputs.cl_ref || github.sha }}
test_path: .github/integration-in-memory-tests.yml
test_trigger: Merge Queue Integration CCIP Tests
slack_notification_after_tests: on_failure
slack_notification_after_tests_channel_id: "#ccip-testing"
slack_notification_after_tests_name: CCIP Integration Tests In Merge Queue
use-self-hosted-runners: ${{ needs.changes.outputs.should_use_self_hosted_runner }}
skip_image_build: true # in-memory tests do not require an image
quarantine: "true"
secrets:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SLACK_BOT_TOKEN: ${{ secrets.QA_SLACK_API_KEY }}
QA_AWS_REGION: ${{ secrets.QA_AWS_REGION }}
QA_AWS_ROLE_TO_ASSUME: ${{ secrets.QA_AWS_ROLE_TO_ASSUME }}
AWS_REGION: ${{ secrets.AWS_REGION }}
QA_AWS_ACCOUNT_NUMBER: ${{ secrets.QA_AWS_ACCOUNT_NUMBER }}
MAIN_DNS_ZONE_PUBLIC_SDLC: ${{ secrets.MAIN_DNS_ZONE_PUBLIC_SDLC }}
AWS_K8S_CLUSTER_NAME_SDLC: ${{ secrets.AWS_K8S_CLUSTER_NAME_SDLC }}
OPTIONAL_GATI_AWS_ROLE_ARN: ${{ secrets.AWS_OIDC_CHAINLINK_READ_ONLY_TOKEN_ISSUER_ROLE_ARN }}
OPTIONAL_GATI_LAMBDA_URL: ${{ secrets.AWS_INFRA_RELENG_TOKEN_ISSUER_LAMBDA_URL}}
TRUNK_API_KEY: ${{ secrets.TRUNK_API_KEY }}
check-integration-test-results:
if: always()
name: Integration Tests
runs-on: ubuntu-latest
needs:
[
run-ccip-integration-in-memory-tests-for-pr,
run-ccip-integration-in-memory-tests-for-merge-queue,
]
steps:
- name: Fail the job if ccip tests in PR not successful
if: always() && needs.run-ccip-integration-in-memory-tests-for-pr.result == 'failure'
run: exit 1
- name: Fail the job if ccip tests in merge queue not successful
if: always() && needs.run-ccip-integration-in-memory-tests-for-merge-queue.result == 'failure'
run: exit 1