From ddccc4cd71ce723cdbf4d42bd0383516758f27fa Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Fri, 14 Jul 2023 14:51:09 -0700 Subject: [PATCH] Update CI to work with PR's from forks (backport #187) (#205) Co-authored-by: Dan Kanefsky <56059752+boojamya@users.noreply.github.com> --- .github/workflows/docker-publish-and-E2E.yaml | 175 ------------------ .github/workflows/docker-publish.yaml | 53 ++++++ .github/workflows/e2e-tests.yaml | 72 +++++++ .github/workflows/unit-tests.yaml | 6 +- interchaintest/ci_integration.go | 19 -- interchaintest/genesis_test.go | 10 + interchaintest/globalfee_test.go | 12 +- interchaintest/ibc_bps_fee_test.go | 12 +- interchaintest/noble_test.go | 12 +- interchaintest/packet_forward_test.go | 35 +--- interchaintest/paramauthority_test.go | 12 +- interchaintest/upgrade_grand-1_test.go | 9 +- interchaintest/upgrade_noble-1_test.go | 9 +- 13 files changed, 153 insertions(+), 283 deletions(-) delete mode 100644 .github/workflows/docker-publish-and-E2E.yaml create mode 100644 .github/workflows/docker-publish.yaml create mode 100644 .github/workflows/e2e-tests.yaml delete mode 100644 interchaintest/ci_integration.go diff --git a/.github/workflows/docker-publish-and-E2E.yaml b/.github/workflows/docker-publish-and-E2E.yaml deleted file mode 100644 index 29bd0a22..00000000 --- a/.github/workflows/docker-publish-and-E2E.yaml +++ /dev/null @@ -1,175 +0,0 @@ -name: Create Docker Image + E2E Tests - -on: - push: - tags: - - '**' - branches: - - '**' - -env: - REGISTRY: ghcr.io - IMAGE_NAME: ${{ github.repository }} - -jobs: - build-and-push-image: - runs-on: ubuntu-latest - outputs: - branchTag: ${{ steps.meta.outputs.version }} - permissions: - contents: read - packages: write - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 - - - name: Log in to the Container registry - uses: docker/login-action@v2 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Extract metadata (tags, labels) for Docker - id: meta - uses: docker/metadata-action@v4 - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - - - name: Build and push Docker image - id: push - uses: docker/build-push-action@v3 - with: - context: . - platforms: linux/amd64,linux/arm64 - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - cache-from: type=gha - cache-to: type=gha,mode=max - - test-tkn-factory: - runs-on: ubuntu-latest - needs: build-and-push-image - steps: - - name: Set up Go 1.19 - uses: actions/setup-go@v3 - with: - go-version: 1.19 - id: go - - - name: checkout chain - uses: actions/checkout@v2 - - - run: make ictest-tkn-factory - env: - BRANCH_CI: ${{needs.build-and-push-image.outputs.branchTag}} - - test-packet-forward: - runs-on: ubuntu-latest - needs: build-and-push-image - steps: - - name: Set up Go 1.19 - uses: actions/setup-go@v3 - with: - go-version: 1.19 - id: go - - - name: checkout chain - uses: actions/checkout@v2 - - - run: make ictest-packet-forward - env: - BRANCH_CI: ${{needs.build-and-push-image.outputs.branchTag}} - - test-param-authority: - runs-on: ubuntu-latest - needs: build-and-push-image - steps: - - name: Set up Go 1.19 - uses: actions/setup-go@v3 - with: - go-version: 1.19 - id: go - - - name: checkout chain - uses: actions/checkout@v2 - - - run: make ictest-paramauthority - env: - BRANCH_CI: ${{needs.build-and-push-image.outputs.branchTag}} - - test-chain-upgrade-noble-1: - runs-on: ubuntu-latest - needs: build-and-push-image - steps: - - name: Set up Go 1.19 - uses: actions/setup-go@v3 - with: - go-version: 1.19 - id: go - - - name: checkout chain - uses: actions/checkout@v2 - - - run: make ictest-chain-upgrade-noble-1 - env: - BRANCH_CI: ${{needs.build-and-push-image.outputs.branchTag}} - - test-chain-upgrade-grand-1: - runs-on: ubuntu-latest - needs: build-and-push-image - steps: - - name: Set up Go 1.19 - uses: actions/setup-go@v3 - with: - go-version: 1.19 - id: go - - - name: checkout chain - uses: actions/checkout@v2 - - - run: make ictest-chain-upgrade-grand-1 - env: - BRANCH_CI: ${{needs.build-and-push-image.outputs.branchTag}} - - test-globalfee-module: - runs-on: ubuntu-latest - needs: build-and-push-image - steps: - - name: Set up Go 1.19 - uses: actions/setup-go@v3 - with: - go-version: 1.19 - id: go - - - name: checkout chain - uses: actions/checkout@v2 - - - run: make ictest-globalFee - env: - BRANCH_CI: ${{needs.build-and-push-image.outputs.branchTag}} - - test-ics20-bps-fees: - runs-on: ubuntu-latest - needs: build-and-push-image - steps: - - name: Set up Go 1.19 - uses: actions/setup-go@v3 - with: - go-version: 1.19 - id: go - - - name: checkout chain - uses: actions/checkout@v2 - - - run: make ictest-ics20-bps-fees - env: - BRANCH_CI: ${{needs.build-and-push-image.outputs.branchTag}} diff --git a/.github/workflows/docker-publish.yaml b/.github/workflows/docker-publish.yaml new file mode 100644 index 00000000..0db58f66 --- /dev/null +++ b/.github/workflows/docker-publish.yaml @@ -0,0 +1,53 @@ +name: Create and Push Docker Image + +on: + push: + tags: + - '**' + branches: + - '**' + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +jobs: + build-and-push-image: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Log in to the Container registry + uses: docker/login-action@v2 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v4 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + + - name: Build and push Docker image + uses: docker/build-push-action@v3 + with: + context: . + platforms: linux/amd64,linux/arm64 + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max diff --git a/.github/workflows/e2e-tests.yaml b/.github/workflows/e2e-tests.yaml new file mode 100644 index 00000000..90eb7443 --- /dev/null +++ b/.github/workflows/e2e-tests.yaml @@ -0,0 +1,72 @@ +name: End to End Tests + +on: + pull_request: + +env: + TAR_PATH: ./binary_docker + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build-docker: + runs-on: ubuntu-latest + steps: + - name: Set up Go 1.19 + uses: actions/setup-go@v3 + with: + go-version: 1.19 + + - name: checkout chain + uses: actions/checkout@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Build Docker image + uses: docker/build-push-action@v3 + with: + context: . + platforms: linux/amd64 + tags: noble:local + # Export tarball image to upload and share with other runners + outputs: type=docker,dest=${{ env.TAR_PATH }} + cache-from: type=gha + cache-to: type=gha,mode=max + + - name: Publish Tarball as Artifact + uses: actions/upload-artifact@v3 + with: + name: noble-docker-image + path: ${{ env.TAR_PATH }} + + e2e-tests: + needs: build-docker + runs-on: ubuntu-latest + strategy: + matrix: + # names of `make` commands to run tests + test: ["ictest-tkn-factory", "ictest-packet-forward", "ictest-paramauthority", "ictest-chain-upgrade-noble-1", "ictest-chain-upgrade-grand-1", "ictest-globalFee", "ictest-ics20-bps-fees"] + fail-fast: false + + steps: + - name: Set up Go 1.19 + uses: actions/setup-go@v3 + with: + go-version: 1.19 + + - name: checkout chain + uses: actions/checkout@v3 + + - name: Download Tarball Artifact + uses: actions/download-artifact@v3 + with: + name: noble-docker-image + + - name: Load Docker Image + run: docker image load -i ${{ env.TAR_PATH }} + + - name: run test + run: make ${{ matrix.test }} \ No newline at end of file diff --git a/.github/workflows/unit-tests.yaml b/.github/workflows/unit-tests.yaml index e3b66021..82646304 100644 --- a/.github/workflows/unit-tests.yaml +++ b/.github/workflows/unit-tests.yaml @@ -1,11 +1,7 @@ name: Unit Tests on: - push: - tags: - - '**' - branches: - - '**' + pull_request: jobs: unit-tests: diff --git a/interchaintest/ci_integration.go b/interchaintest/ci_integration.go deleted file mode 100644 index f4b61c79..00000000 --- a/interchaintest/ci_integration.go +++ /dev/null @@ -1,19 +0,0 @@ -package interchaintest - -import ( - "os" -) - -// The remote runner sets the BRANCH_CI env var. If present, interchaintest -// will use the docker image pushed up to repo. -// If testing locally, user should run `make local-image` and interchaintest -// will use the local image. -func GetDockerImageInfo() (repo, version string) { - branchVersion, found := os.LookupEnv("BRANCH_CI") - repo = "ghcr.io/strangelove-ventures/noble" - if !found { - repo = "noble" - branchVersion = "local" - } - return repo, branchVersion -} diff --git a/interchaintest/genesis_test.go b/interchaintest/genesis_test.go index 0a2970ca..8f903ec7 100644 --- a/interchaintest/genesis_test.go +++ b/interchaintest/genesis_test.go @@ -18,6 +18,16 @@ import ( upgradetypes "github.com/strangelove-ventures/paramauthority/x/upgrade/types" ) +var ( + nobleImageInfo = []ibc.DockerImage{ + { + Repository: "noble", + Version: "local", + UidGid: "1025:1025", + }, + } +) + var ( denomMetadataFrienzies = DenomMetadata{ Display: "ufrienzies", diff --git a/interchaintest/globalfee_test.go b/interchaintest/globalfee_test.go index e0e5f2dc..19f29061 100644 --- a/interchaintest/globalfee_test.go +++ b/interchaintest/globalfee_test.go @@ -13,12 +13,12 @@ import ( "github.com/strangelove-ventures/interchaintest/v3/ibc" "github.com/strangelove-ventures/interchaintest/v3/testreporter" "github.com/strangelove-ventures/noble/cmd" - integration "github.com/strangelove-ventures/noble/interchaintest" proposaltypes "github.com/strangelove-ventures/paramauthority/x/params/types/proposal" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) +// run `make local-image`to rebuild updated binary before running test func TestGlobalFee(t *testing.T) { if testing.Short() { t.Skip() @@ -33,8 +33,6 @@ func TestGlobalFee(t *testing.T) { client, network := interchaintest.DockerSetup(t) - repo, version := integration.GetDockerImageInfo() - var ( noble *cosmos.CosmosChain roles NobleRoles @@ -55,13 +53,7 @@ func TestGlobalFee(t *testing.T) { GasAdjustment: 1.1, TrustingPeriod: "504h", NoHostMount: false, - Images: []ibc.DockerImage{ - { - Repository: repo, - Version: version, - UidGid: "1025:1025", - }, - }, + Images: nobleImageInfo, EncodingConfig: NobleEncoding(), PreGenesis: func(cc ibc.ChainConfig) (err error) { val := noble.Validators[0] diff --git a/interchaintest/ibc_bps_fee_test.go b/interchaintest/ibc_bps_fee_test.go index 2077916d..7cca6740 100644 --- a/interchaintest/ibc_bps_fee_test.go +++ b/interchaintest/ibc_bps_fee_test.go @@ -12,11 +12,11 @@ import ( "github.com/strangelove-ventures/interchaintest/v3/ibc" "github.com/strangelove-ventures/interchaintest/v3/testreporter" "github.com/strangelove-ventures/interchaintest/v3/testutil" - integration "github.com/strangelove-ventures/noble/interchaintest" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) +// run `make local-image`to rebuild updated binary before running test func TestICS20BPSFees(t *testing.T) { if testing.Short() { t.Skip() @@ -31,8 +31,6 @@ func TestICS20BPSFees(t *testing.T) { client, network := interchaintest.DockerSetup(t) - repo, version := integration.GetDockerImageInfo() - var ( noble, gaia *cosmos.CosmosChain roles, roles2 NobleRoles @@ -52,13 +50,7 @@ func TestICS20BPSFees(t *testing.T) { GasAdjustment: 1.1, TrustingPeriod: "504h", NoHostMount: false, - Images: []ibc.DockerImage{ - { - Repository: repo, - Version: version, - UidGid: "1025:1025", - }, - }, + Images: nobleImageInfo, EncodingConfig: NobleEncoding(), PreGenesis: func(cc ibc.ChainConfig) (err error) { val := noble.Validators[0] diff --git a/interchaintest/noble_test.go b/interchaintest/noble_test.go index 97460f56..19dc60c8 100644 --- a/interchaintest/noble_test.go +++ b/interchaintest/noble_test.go @@ -10,12 +10,12 @@ import ( "github.com/strangelove-ventures/interchaintest/v3/chain/cosmos" "github.com/strangelove-ventures/interchaintest/v3/ibc" "github.com/strangelove-ventures/interchaintest/v3/testreporter" - integration "github.com/strangelove-ventures/noble/interchaintest" "github.com/strangelove-ventures/noble/x/tokenfactory/types" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) +// run `make local-image`to rebuild updated binary before running test func TestNobleChain(t *testing.T) { if testing.Short() { t.Skip() @@ -30,8 +30,6 @@ func TestNobleChain(t *testing.T) { client, network := interchaintest.DockerSetup(t) - repo, version := integration.GetDockerImageInfo() - var ( noble *cosmos.CosmosChain roles NobleRoles @@ -52,13 +50,7 @@ func TestNobleChain(t *testing.T) { GasAdjustment: 1.1, TrustingPeriod: "504h", NoHostMount: false, - Images: []ibc.DockerImage{ - { - Repository: repo, - Version: version, - UidGid: "1025:1025", - }, - }, + Images: nobleImageInfo, EncodingConfig: NobleEncoding(), PreGenesis: func(cc ibc.ChainConfig) (err error) { val := noble.Validators[0] diff --git a/interchaintest/packet_forward_test.go b/interchaintest/packet_forward_test.go index 213388fb..8aa47702 100644 --- a/interchaintest/packet_forward_test.go +++ b/interchaintest/packet_forward_test.go @@ -14,7 +14,6 @@ import ( "github.com/strangelove-ventures/interchaintest/v3/ibc" "github.com/strangelove-ventures/interchaintest/v3/testreporter" "github.com/strangelove-ventures/interchaintest/v3/testutil" - integration "github.com/strangelove-ventures/noble/interchaintest" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) @@ -33,6 +32,7 @@ type ForwardMetadata struct { RefundSequence *uint64 `json:"refund_sequence,omitempty"` } +// run `make local-image`to rebuild updated binary before running test func TestPacketForwardMiddleware(t *testing.T) { if testing.Short() { t.Skip("skipping in short mode") @@ -44,7 +44,6 @@ func TestPacketForwardMiddleware(t *testing.T) { rep = testreporter.NewNopReporter() eRep = rep.RelayerExecReporter(t) chainID_A, chainID_B, chainID_C, chainID_D = "chain-a", "chain-b", "chain-c", "chain-d" - repo, version = integration.GetDockerImageInfo() chainA, chainB, chainC, chainD *cosmos.CosmosChain nv = 1 nf = 0 @@ -75,13 +74,7 @@ func TestPacketForwardMiddleware(t *testing.T) { GasAdjustment: 1.1, TrustingPeriod: "504h", NoHostMount: false, - Images: []ibc.DockerImage{ - { - Repository: repo, - Version: version, - UidGid: "1025:1025", - }, - }, + Images: nobleImageInfo, EncodingConfig: NobleEncoding(), PreGenesis: func(cc ibc.ChainConfig) error { val := chainA.Validators[0] @@ -136,13 +129,7 @@ func TestPacketForwardMiddleware(t *testing.T) { GasAdjustment: 1.1, TrustingPeriod: "504h", NoHostMount: false, - Images: []ibc.DockerImage{ - { - Repository: repo, - Version: version, - UidGid: "1025:1025", - }, - }, + Images: nobleImageInfo, EncodingConfig: NobleEncoding(), PreGenesis: func(cc ibc.ChainConfig) error { val := chainB.Validators[0] @@ -197,13 +184,7 @@ func TestPacketForwardMiddleware(t *testing.T) { GasAdjustment: 1.1, TrustingPeriod: "504h", NoHostMount: false, - Images: []ibc.DockerImage{ - { - Repository: repo, - Version: version, - UidGid: "1025:1025", - }, - }, + Images: nobleImageInfo, EncodingConfig: NobleEncoding(), PreGenesis: func(cc ibc.ChainConfig) error { val := chainC.Validators[0] @@ -258,13 +239,7 @@ func TestPacketForwardMiddleware(t *testing.T) { GasAdjustment: 1.1, TrustingPeriod: "504h", NoHostMount: false, - Images: []ibc.DockerImage{ - { - Repository: repo, - Version: version, - UidGid: "1025:1025", - }, - }, + Images: nobleImageInfo, EncodingConfig: NobleEncoding(), PreGenesis: func(cc ibc.ChainConfig) error { val := chainD.Validators[0] diff --git a/interchaintest/paramauthority_test.go b/interchaintest/paramauthority_test.go index 67eae5db..3fdf9982 100644 --- a/interchaintest/paramauthority_test.go +++ b/interchaintest/paramauthority_test.go @@ -14,7 +14,6 @@ import ( "github.com/strangelove-ventures/interchaintest/v3/ibc" "github.com/strangelove-ventures/interchaintest/v3/testreporter" "github.com/strangelove-ventures/noble/cmd" - integration "github.com/strangelove-ventures/noble/interchaintest" proposaltypes "github.com/strangelove-ventures/paramauthority/x/params/types/proposal" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" @@ -74,6 +73,7 @@ func testParamsCase(t *testing.T, ctx context.Context, broadcaster *cosmos.Broad } } +// run `make local-image`to rebuild updated binary before running test func TestNobleParamAuthority(t *testing.T) { if testing.Short() { t.Skip() @@ -88,8 +88,6 @@ func TestNobleParamAuthority(t *testing.T) { client, network := interchaintest.DockerSetup(t) - repo, version := integration.GetDockerImageInfo() - var noble *cosmos.CosmosChain var roles NobleRoles var paramauthorityWallet ibc.Wallet @@ -107,13 +105,7 @@ func TestNobleParamAuthority(t *testing.T) { GasAdjustment: 1.1, TrustingPeriod: "504h", NoHostMount: false, - Images: []ibc.DockerImage{ - { - Repository: repo, - Version: version, - UidGid: "1025:1025", - }, - }, + Images: nobleImageInfo, EncodingConfig: NobleEncoding(), PreGenesis: func(cc ibc.ChainConfig) error { val := noble.Validators[0] diff --git a/interchaintest/upgrade_grand-1_test.go b/interchaintest/upgrade_grand-1_test.go index 83e2ab04..f7aed166 100644 --- a/interchaintest/upgrade_grand-1_test.go +++ b/interchaintest/upgrade_grand-1_test.go @@ -4,11 +4,10 @@ import ( "testing" "github.com/strangelove-ventures/interchaintest/v3/ibc" - integration "github.com/strangelove-ventures/noble/interchaintest" ) +// run `make local-image`to rebuild updated binary before running test func TestGrand1ChainUpgrade(t *testing.T) { - repo, version := integration.GetDockerImageInfo() const ( grand1ChainID = "grand-1" @@ -47,11 +46,7 @@ func TestGrand1ChainUpgrade(t *testing.T) { }, { // post radon patch upgrade (will be applied as rolling upgrade due to lack of upgradeName) - image: ibc.DockerImage{ - Repository: repo, - Version: version, - UidGid: containerUidGid, - }, + image: nobleImageInfo[0], }, } diff --git a/interchaintest/upgrade_noble-1_test.go b/interchaintest/upgrade_noble-1_test.go index 6847422f..659f4b41 100644 --- a/interchaintest/upgrade_noble-1_test.go +++ b/interchaintest/upgrade_noble-1_test.go @@ -4,11 +4,10 @@ import ( "testing" "github.com/strangelove-ventures/interchaintest/v3/ibc" - integration "github.com/strangelove-ventures/noble/interchaintest" ) +// run `make local-image`to rebuild updated binary before running test func TestNoble1ChainUpgrade(t *testing.T) { - repo, version := integration.GetDockerImageInfo() const ( noble1ChainID = "noble-1" @@ -41,11 +40,7 @@ func TestNoble1ChainUpgrade(t *testing.T) { }, { upgradeName: "radon", - image: ibc.DockerImage{ - Repository: repo, - Version: version, - UidGid: containerUidGid, - }, + image: nobleImageInfo[0], postUpgrade: testPostRadonUpgrade, }, }