Skip to content

Compatibility E2E

Compatibility E2E #231

# Runs compatibility tests for ibc-go.
# Can be triggered manually by setting values for release-branch and ibc-go-version.
# On a weekly schedule with default values of 'main' for release-branch and 'main-cron-job' for ibc-go-version.
name: Compatibility E2E
on:
schedule:
# run on 20:00 on Sunday.
- cron: '0 20 * * 6'
workflow_dispatch:
inputs:
release-branch:
description: 'Release branch to test'
required: true
type: choice
options:
- release/v7.4.x
- release/v7.5.x
- release/v7.6.x
- release/v8.2.x
- release/v8.3.x
- main
ibc-go-version:
description: 'The version of ibc-go that is going to be released'
required: true
type: string
env:
REGISTRY: ghcr.io
ORG: cosmos
IMAGE_NAME: ibc-go-simd
RELEASE_BRANCH: ${{ inputs.release-branch || 'main' }}
IBC_GO_VERSION: ${{ inputs.ibc-go-version || 'latest' }}
jobs:
determine-test-directory:
runs-on: ubuntu-latest
outputs:
test-directory: ${{ steps.set-test-dir.outputs.test-directory }}
steps:
- run: |
# we sanitize the release branch name. Docker images cannot contain "/"
# characters so we replace them with a "-".
test_dir="$(echo $RELEASE_BRANCH | sed 's/\//-/')"
echo "test-directory=$test_dir" >> $GITHUB_OUTPUT
id: set-test-dir
# build-release-images builds all docker images that are relevant for the compatibility tests. If a single release
# branch is specified, only that image will be built, e.g. release-v6.0.x.
build-release-images:
runs-on: ubuntu-latest
strategy:
matrix:
release-branch:
- release/v7.4.x
- release/v7.5.x
- release/v7.6.x
- release/v8.2.x
- release/v8.3.x
- main
steps:
- uses: actions/checkout@v4
if: env.RELEASE_BRANCH == matrix.release-branch
with:
ref: "${{ matrix.release-branch }}"
fetch-depth: 0
- name: Log in to the Container registry
if: env.RELEASE_BRANCH == matrix.release-branch
uses: docker/login-action@0d4c9c5ea7693da7b068278f7b52bda2a190a446
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build image
if: env.RELEASE_BRANCH == matrix.release-branch
run: |
docker_tag="$(echo ${{ matrix.release-branch }} | sed 's/[^a-zA-Z0-9\.]/-/g')"
docker build . -t "${REGISTRY}/${ORG}/${IMAGE_NAME}:$docker_tag" --build-arg IBC_GO_VERSION=${{ env.IBC_GO_VERSION }}
docker push "${REGISTRY}/${ORG}/${IMAGE_NAME}:$docker_tag"
- name: Display image details
if: env.RELEASE_BRANCH == matrix.release-branch
run: |
docker_tag="$(echo ${{ matrix.release-branch }} | sed 's/[^a-zA-Z0-9\.]/-/g')"
docker inspect "${REGISTRY}/${ORG}/${IMAGE_NAME}:$docker_tag"
transfer-chain-a:
needs:
- build-release-images
- determine-test-directory
uses: ./.github/workflows/e2e-compatibility-workflow-call.yaml
with:
test-file-directory: "${{ needs.determine-test-directory.outputs.test-directory }}"
test-suite: "transfer-chain-a"
transfer-chain-b:
needs:
- build-release-images
- determine-test-directory
uses: ./.github/workflows/e2e-compatibility-workflow-call.yaml
with:
test-file-directory: "${{ needs.determine-test-directory.outputs.test-directory }}"
test-suite: "transfer-chain-b"
transfer-authz-chain-a:
needs:
- build-release-images
- determine-test-directory
uses: ./.github/workflows/e2e-compatibility-workflow-call.yaml
with:
test-file-directory: "${{ needs.determine-test-directory.outputs.test-directory }}"
test-suite: "transfer-authz-chain-a"
transfer-authz-chain-b:
needs:
- build-release-images
- determine-test-directory
uses: ./.github/workflows/e2e-compatibility-workflow-call.yaml
with:
test-file-directory: "${{ needs.determine-test-directory.outputs.test-directory }}"
test-suite: "transfer-authz-chain-b"
connection-chain-a:
needs:
- build-release-images
- determine-test-directory
uses: ./.github/workflows/e2e-compatibility-workflow-call.yaml
with:
test-file-directory: "${{ needs.determine-test-directory.outputs.test-directory }}"
test-suite: "connection-chain-a"
client-chain-a:
needs:
- build-release-images
- determine-test-directory
uses: ./.github/workflows/e2e-compatibility-workflow-call.yaml
with:
test-file-directory: "${{ needs.determine-test-directory.outputs.test-directory }}"
test-suite: "client-chain-a"
incentivized-transfer-chain-a:
needs:
- build-release-images
- determine-test-directory
uses: ./.github/workflows/e2e-compatibility-workflow-call.yaml
with:
test-file-directory: "${{ needs.determine-test-directory.outputs.test-directory }}"
test-suite: "incentivized-transfer-chain-a"
incentivized-transfer-chain-b:
needs:
- build-release-images
- determine-test-directory
uses: ./.github/workflows/e2e-compatibility-workflow-call.yaml
with:
test-file-directory: "${{ needs.determine-test-directory.outputs.test-directory }}"
test-suite: "incentivized-transfer-chain-b"
ica-chain-a:
needs:
- build-release-images
- determine-test-directory
uses: ./.github/workflows/e2e-compatibility-workflow-call.yaml
with:
test-file-directory: "${{ needs.determine-test-directory.outputs.test-directory }}"
test-suite: "ica-chain-a"
ica-chain-b:
needs:
- build-release-images
- determine-test-directory
uses: ./.github/workflows/e2e-compatibility-workflow-call.yaml
with:
test-file-directory: "${{ needs.determine-test-directory.outputs.test-directory }}"
test-suite: "ica-chain-b"
incentivized-ica-chain-a:
needs:
- build-release-images
- determine-test-directory
uses: ./.github/workflows/e2e-compatibility-workflow-call.yaml
with:
test-file-directory: "${{ needs.determine-test-directory.outputs.test-directory }}"
test-suite: "incentivized-ica-chain-a"
incentivized-ica-chain-b:
needs:
- build-release-images
- determine-test-directory
uses: ./.github/workflows/e2e-compatibility-workflow-call.yaml
with:
test-file-directory: "${{ needs.determine-test-directory.outputs.test-directory }}"
test-suite: "incentivized-ica-chain-b"
ica-groups-chain-a:
needs:
- build-release-images
- determine-test-directory
uses: ./.github/workflows/e2e-compatibility-workflow-call.yaml
with:
test-file-directory: "${{ needs.determine-test-directory.outputs.test-directory }}"
test-suite: "ica-groups-chain-a"
ica-groups-chain-b:
needs:
- build-release-images
- determine-test-directory
uses: ./.github/workflows/e2e-compatibility-workflow-call.yaml
with:
test-file-directory: "${{ needs.determine-test-directory.outputs.test-directory }}"
test-suite: "ica-groups-chain-b"
ica-gov-chain-a:
needs:
- build-release-images
- determine-test-directory
uses: ./.github/workflows/e2e-compatibility-workflow-call.yaml
with:
test-file-directory: "${{ needs.determine-test-directory.outputs.test-directory }}"
test-suite: "ica-gov-chain-a"
ica-gov-chain-b:
needs:
- build-release-images
- determine-test-directory
uses: ./.github/workflows/e2e-compatibility-workflow-call.yaml
with:
test-file-directory: "${{ needs.determine-test-directory.outputs.test-directory }}"
test-suite: "ica-gov-chain-b"
ica-queries-chain-a:
needs:
- build-release-images
- determine-test-directory
uses: ./.github/workflows/e2e-compatibility-workflow-call.yaml
with:
test-file-directory: "${{ needs.determine-test-directory.outputs.test-directory }}"
test-suite: "ica-queries-chain-a"
ica-queries-chain-b:
needs:
- build-release-images
- determine-test-directory
uses: ./.github/workflows/e2e-compatibility-workflow-call.yaml
with:
test-file-directory: "${{ needs.determine-test-directory.outputs.test-directory }}"
test-suite: "ica-queries-chain-b"
ica-unordered-channel-chain-a:
needs:
- build-release-images
- determine-test-directory
uses: ./.github/workflows/e2e-compatibility-workflow-call.yaml
with:
test-file-directory: "${{ needs.determine-test-directory.outputs.test-directory }}"
test-suite: "ica-unordered-channel-chain-a"
ica-unordered-channel-chain-b:
needs:
- build-release-images
- determine-test-directory
uses: ./.github/workflows/e2e-compatibility-workflow-call.yaml
with:
test-file-directory: "${{ needs.determine-test-directory.outputs.test-directory }}"
test-suite: "ica-unordered-channel-chain-b"
localhost-transfer-chain-a:
needs:
- build-release-images
- determine-test-directory
uses: ./.github/workflows/e2e-compatibility-workflow-call.yaml
with:
test-file-directory: "${{ needs.determine-test-directory.outputs.test-directory }}"
test-suite: "localhost-transfer-chain-a"
localhost-ica-chain-a:
needs:
- build-release-images
- determine-test-directory
uses: ./.github/workflows/e2e-compatibility-workflow-call.yaml
with:
test-file-directory: "${{ needs.determine-test-directory.outputs.test-directory }}"
test-suite: "localhost-ica-chain-a"
genesis-chain-a:
needs:
- build-release-images
- determine-test-directory
uses: ./.github/workflows/e2e-compatibility-workflow-call.yaml
with:
test-file-directory: "${{ needs.determine-test-directory.outputs.test-directory }}"
test-suite: "genesis-chain-a"
transfer-channel-upgrade-chain-a:
needs:
- build-release-images
- determine-test-directory
uses: ./.github/workflows/e2e-compatibility-workflow-call.yaml
with:
test-file-directory: "${{ needs.determine-test-directory.outputs.test-directory }}"
test-suite: "transfer-channel-upgrade-chain-a"
transfer-channel-upgrade-chain-b:
needs:
- build-release-images
- determine-test-directory
uses: ./.github/workflows/e2e-compatibility-workflow-call.yaml
with:
test-file-directory: "${{ needs.determine-test-directory.outputs.test-directory }}"
test-suite: "transfer-channel-upgrade-chain-b"
ica-channel-upgrade-chain-a:
needs:
- build-release-images
- determine-test-directory
uses: ./.github/workflows/e2e-compatibility-workflow-call.yaml
with:
test-file-directory: "${{ needs.determine-test-directory.outputs.test-directory }}"
test-suite: "transfer-channel-upgrade-chain-a"
ica-channel-upgrade-chain-b:
needs:
- build-release-images
- determine-test-directory
uses: ./.github/workflows/e2e-compatibility-workflow-call.yaml
with:
test-file-directory: "${{ needs.determine-test-directory.outputs.test-directory }}"
test-suite: "transfer-channel-upgrade-chain-b"