From 94a154278236731abe97296488ff679e1baf66b8 Mon Sep 17 00:00:00 2001 From: Josh Kneubuhl Date: Tue, 15 Nov 2022 12:24:57 -0500 Subject: [PATCH] Run Full Stack Asset Transfer Guide tests on GHA Signed-off-by: Josh Kneubuhl --- .github/actions/fsat-setup/action.yaml | 49 ++++++++ .../actions/test-network-setup/action.yaml | 10 +- .github/workflows/lint.yaml | 4 +- .github/workflows/rest-sample.yaml | 4 +- .github/workflows/test-fsat-appdev.yaml | 58 --------- .github/workflows/test-fsat.yaml | 58 +++++++++ .github/workflows/test-network-basic.yaml | 4 +- .github/workflows/test-network-events.yaml | 4 +- .github/workflows/test-network-gateway.yaml | 4 +- .github/workflows/test-network-hsm.yaml | 4 +- .github/workflows/test-network-k8s.yaml | 4 +- .github/workflows/test-network-ledger.yaml | 4 +- .github/workflows/test-network-off-chain.yaml | 4 +- .github/workflows/test-network-private.yaml | 4 +- .github/workflows/test-network-sbe.yaml | 4 +- .github/workflows/test-network-secured.yaml | 4 +- .github/workflows/test-network.yaml | 110 ------------------ full-stack-asset-transfer-guide/README.md | 1 - .../tests/20-cloud-e2e.sh | 3 +- 19 files changed, 137 insertions(+), 200 deletions(-) create mode 100644 .github/actions/fsat-setup/action.yaml delete mode 100644 .github/workflows/test-fsat-appdev.yaml create mode 100644 .github/workflows/test-fsat.yaml delete mode 100644 .github/workflows/test-network.yaml diff --git a/.github/actions/fsat-setup/action.yaml b/.github/actions/fsat-setup/action.yaml new file mode 100644 index 00000000..2cf6cea4 --- /dev/null +++ b/.github/actions/fsat-setup/action.yaml @@ -0,0 +1,49 @@ +name: Set up the Full Stack Asset Transfer Guide Dependencies +description: Set up the Full Stack Asset Transfer Guide Dependencies +inputs: + node-version: + description: Version of node + default: 16.x + fabric-version: + description: Version of Fabric + default: 2.4.7 + just-version: + description: Just Version + default: 1.2.0 + k9s-version: + description: k9s Version + default: v0.25.3 + +runs: + using: "composite" + steps: + - uses: actions/setup-node@v3 + with: + node-version: ${{ inputs.node-version }} + cache: 'npm' + cache-dependency-path: '**/package-lock.json' + + - name: Install k9s + shell: bash + run: | + curl --fail --silent --show-error -L https://github.com/derailed/k9s/releases/download/${{ inputs.k9s-version }}/k9s_Linux_x86_64.tar.gz -o /tmp/k9s_Linux_x86_64.tar.gz + tar -zxf /tmp/k9s_Linux_x86_64.tar.gz -C /usr/local/bin k9s + sudo chown root /usr/local/bin/k9s + sudo chmod 755 /usr/local/bin/k9s + + - name: Install just + shell: bash + run: | + curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --tag ${{ inputs.just-version }} --to /usr/local/bin + + - name: Install weft + shell: bash + run: | + npm install -g @hyperledger-labs/weft + + - name: Install fabric CLI + shell: bash + working-directory: full-stack-asset-transfer-guide + run: | + curl -sSL https://raw.githubusercontent.com/hyperledger/fabric/main/scripts/install-fabric.sh | bash -s -- -f ${{ inputs.fabric-version }} binary + echo ${PWD}/bin >> $GITHUB_PATH diff --git a/.github/actions/test-network-setup/action.yaml b/.github/actions/test-network-setup/action.yaml index f87251e5..d1084020 100644 --- a/.github/actions/test-network-setup/action.yaml +++ b/.github/actions/test-network-setup/action.yaml @@ -10,10 +10,9 @@ inputs: java-version: description: Version of JDK default: 11.x -# todo : set fabric target version ... -# fabric-version: -# description: Version of Fabric -# default: 2.5 + fabric-version: + description: Version of Fabric + default: 2.4.7 runs: using: "composite" @@ -34,13 +33,12 @@ runs: with: distribution: temurin java-version: ${{ inputs.java-version }} - # todo: how to cache both gradle and maven? (Better: port maven -> gradle) cache: gradle - name: Install fabric CLI shell: bash run: | - curl -sSL https://raw.githubusercontent.com/hyperledger/fabric/main/scripts/install-fabric.sh | bash -s -- binary + curl -sSL https://raw.githubusercontent.com/hyperledger/fabric/main/scripts/install-fabric.sh | bash -s -- -f ${{ inputs.fabric-version }} binary echo ${PWD}/bin >> $GITHUB_PATH - name: Pull Fabric Docker Images diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 7a7ffdf0..4ab1ff67 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -1,8 +1,8 @@ # # SPDX-License-Identifier: Apache-2.0 # -name: Lint -run-name: ${{ github.actor }} is linting fabric-samples +name: Lint 🎉 +run-name: ${{ github.actor }} is linting fabric-samples 🎉 on: workflow_dispatch: diff --git a/.github/workflows/rest-sample.yaml b/.github/workflows/rest-sample.yaml index 8bd90668..ff8659f8 100644 --- a/.github/workflows/rest-sample.yaml +++ b/.github/workflows/rest-sample.yaml @@ -1,8 +1,8 @@ # # SPDX-License-Identifier: Apache-2.0 # -name: REST Sample -run-name: ${{ github.actor }} is testing the REST Sample +name: REST Sample 🐧 +run-name: ${{ github.actor }} is testing the REST Sample 🐧 env: NODE_VER: 16.x diff --git a/.github/workflows/test-fsat-appdev.yaml b/.github/workflows/test-fsat-appdev.yaml deleted file mode 100644 index 1849ec84..00000000 --- a/.github/workflows/test-fsat-appdev.yaml +++ /dev/null @@ -1,58 +0,0 @@ -name: Full Stack AppDev E2E Test -run-name: ${{ github.actor }} is running the FSAT E2E Test 🚀 - -on: - workflow_dispatch: - pull_request: - branches: - - "main" - paths: - - "full-stack-asset-transfer-guide/**" - -env: - GO_VER: 1.18.3 - NODE_VER: 16.x - K9S_VERSION: v0.25.3 - JUST_VERSION: 1.2.0 - -jobs: - appdev: - runs-on: ubuntu-20.04 - - steps: - - uses: actions/checkout@v3 - - - uses: actions/setup-go@v3 - with: - go-version: ${{ env.GO_VER }} - - - uses: actions/setup-node@v3 - with: - node-version: ${{ env.NODE_VER }} - - - name: Install k9s - run: | - curl --fail --silent --show-error -L https://github.com/derailed/k9s/releases/download/${K9S_VERSION}/k9s_Linux_x86_64.tar.gz -o /tmp/k9s_Linux_x86_64.tar.gz - tar -zxf /tmp/k9s_Linux_x86_64.tar.gz -C /usr/local/bin k9s - sudo chown root /usr/local/bin/k9s - sudo chmod 755 /usr/local/bin/k9s - - - name: Install just - run: | - curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --tag ${JUST_VERSION} --to /usr/local/bin - - - name: Install weft - run: | - npm install -g @hyperledger-labs/weft - - - name: Install fabric CLI - working-directory: full-stack-asset-transfer-guide - run: | - curl -sSL https://raw.githubusercontent.com/hyperledger/fabric/main/scripts/install-fabric.sh | bash -s -- binary - echo ${PWD}/bin >> $GITHUB_PATH - - - name: just test-appdev - working-directory: full-stack-asset-transfer-guide - run: just test-appdev - - - run: echo "🍏 This job's status is ${{ job.status }}." diff --git a/.github/workflows/test-fsat.yaml b/.github/workflows/test-fsat.yaml new file mode 100644 index 00000000..934161c6 --- /dev/null +++ b/.github/workflows/test-fsat.yaml @@ -0,0 +1,58 @@ +name: Full Stack Asset Transfer Guide 🚀 +run-name: ${{ github.actor }} is testing the Full Stack Asset Transfer Guide 🚀 + +on: + workflow_dispatch: + pull_request: + branches: + - "main" + paths: + - "full-stack-asset-transfer-guide/**" + +jobs: + ansible: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v3 + - name: Set up Full Stack Runtime + uses: ./.github/actions/fsat-setup + - run: just test-ansible + working-directory: full-stack-asset-transfer-guide + + appdev: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v3 + - name: Set up Full Stack Runtime + uses: ./.github/actions/fsat-setup + - run: just test-appdev + working-directory: full-stack-asset-transfer-guide + + chaincode: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v3 + - name: Set up Full Stack Runtime + uses: ./.github/actions/fsat-setup + - run: just test-chaincode + working-directory: full-stack-asset-transfer-guide + + cloud: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v3 + - name: Set up Full Stack Runtime + uses: ./.github/actions/fsat-setup + - run: just test-cloud + working-directory: full-stack-asset-transfer-guide + + console: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v3 + - name: Set up Full Stack Runtime + uses: ./.github/actions/fsat-setup + - run: just test-console + working-directory: full-stack-asset-transfer-guide + + diff --git a/.github/workflows/test-network-basic.yaml b/.github/workflows/test-network-basic.yaml index 5c1cc52a..eb20869d 100644 --- a/.github/workflows/test-network-basic.yaml +++ b/.github/workflows/test-network-basic.yaml @@ -1,8 +1,8 @@ # # SPDX-License-Identifier: Apache-2.0 # -name: Test Network Basic -run-name: ${{ github.actor }} is running the Test Network Basic tests +name: Test Network Basic 🔎 +run-name: ${{ github.actor }} is running the Test Network Basic tests 🔎 on: workflow_dispatch: diff --git a/.github/workflows/test-network-events.yaml b/.github/workflows/test-network-events.yaml index 78155e5e..a1e3e996 100644 --- a/.github/workflows/test-network-events.yaml +++ b/.github/workflows/test-network-events.yaml @@ -1,8 +1,8 @@ # # SPDX-License-Identifier: Apache-2.0 # -name: Test Network Events -run-name: ${{ github.actor }} is running the Test Network Events tests +name: Test Network Events 💡 +run-name: ${{ github.actor }} is running the Test Network Events tests 💡 on: workflow_dispatch: diff --git a/.github/workflows/test-network-gateway.yaml b/.github/workflows/test-network-gateway.yaml index 4f031c23..a5f195ce 100644 --- a/.github/workflows/test-network-gateway.yaml +++ b/.github/workflows/test-network-gateway.yaml @@ -1,8 +1,8 @@ # # SPDX-License-Identifier: Apache-2.0 # -name: Test Network Gateway -run-name: ${{ github.actor }} is running the Test Network Gateway tests +name: Test Network Gateway 🖥️ +run-name: ${{ github.actor }} is running the Test Network Gateway tests 🖥️ on: workflow_dispatch: diff --git a/.github/workflows/test-network-hsm.yaml b/.github/workflows/test-network-hsm.yaml index 6af50644..51093488 100644 --- a/.github/workflows/test-network-hsm.yaml +++ b/.github/workflows/test-network-hsm.yaml @@ -1,8 +1,8 @@ # # SPDX-License-Identifier: Apache-2.0 # -name: Test Network HSM -run-name: ${{ github.actor }} is running the Test Network HSM tests +name: Test Network HSM 🍏 +run-name: ${{ github.actor }} is running the Test Network HSM tests 🍏 on: workflow_dispatch: diff --git a/.github/workflows/test-network-k8s.yaml b/.github/workflows/test-network-k8s.yaml index ea99078c..cadb4376 100644 --- a/.github/workflows/test-network-k8s.yaml +++ b/.github/workflows/test-network-k8s.yaml @@ -1,8 +1,8 @@ # # SPDX-License-Identifier: Apache-2.0 # -name: Kubernetes Test Network -run-name: ${{ github.actor }} is testing the Kubernetes Test Network +name: Kubernetes Test Network 🍒 +run-name: ${{ github.actor }} is testing the Kubernetes Test Network 🍒 on: workflow_dispatch: diff --git a/.github/workflows/test-network-ledger.yaml b/.github/workflows/test-network-ledger.yaml index 91931c8c..60c566c9 100644 --- a/.github/workflows/test-network-ledger.yaml +++ b/.github/workflows/test-network-ledger.yaml @@ -1,8 +1,8 @@ # # SPDX-License-Identifier: Apache-2.0 # -name: Test Network Ledger -run-name: ${{ github.actor }} is running the Test Network Ledger tests +name: Test Network Ledger 🥑 +run-name: ${{ github.actor }} is running the Test Network Ledger tests 🥑 on: workflow_dispatch: diff --git a/.github/workflows/test-network-off-chain.yaml b/.github/workflows/test-network-off-chain.yaml index f2e0ea6f..fc10b968 100644 --- a/.github/workflows/test-network-off-chain.yaml +++ b/.github/workflows/test-network-off-chain.yaml @@ -1,8 +1,8 @@ # # SPDX-License-Identifier: Apache-2.0 # -name: Test Network Off Chain -run-name: ${{ github.actor }} is running the Test Network Off Chain tests +name: Test Network Off Chain 🍔 +run-name: ${{ github.actor }} is running the Test Network Off Chain tests 🍔 on: workflow_dispatch: diff --git a/.github/workflows/test-network-private.yaml b/.github/workflows/test-network-private.yaml index 43f00957..b8185e4d 100644 --- a/.github/workflows/test-network-private.yaml +++ b/.github/workflows/test-network-private.yaml @@ -1,8 +1,8 @@ # # SPDX-License-Identifier: Apache-2.0 # -name: Test Network Private -run-name: ${{ github.actor }} is running the Test Network Private tests +name: Test Network Private 🔒 +run-name: ${{ github.actor }} is running the Test Network Private tests 🔒 on: workflow_dispatch: diff --git a/.github/workflows/test-network-sbe.yaml b/.github/workflows/test-network-sbe.yaml index 37bef7a2..37682f5c 100644 --- a/.github/workflows/test-network-sbe.yaml +++ b/.github/workflows/test-network-sbe.yaml @@ -1,8 +1,8 @@ # # SPDX-License-Identifier: Apache-2.0 # -name: Test Network SBE -run-name: ${{ github.actor }} is running the Test Network SBE tests +name: Test Network SBE 🎵 +run-name: ${{ github.actor }} is running the Test Network SBE tests 🎵 on: workflow_dispatch: diff --git a/.github/workflows/test-network-secured.yaml b/.github/workflows/test-network-secured.yaml index 2e487245..a0df52ce 100644 --- a/.github/workflows/test-network-secured.yaml +++ b/.github/workflows/test-network-secured.yaml @@ -1,8 +1,8 @@ # # SPDX-License-Identifier: Apache-2.0 # -name: Test Network Secured -run-name: ${{ github.actor }} is running the Test Network Secured tests +name: Test Network Secured 🔔 +run-name: ${{ github.actor }} is running the Test Network Secured tests 🔔 on: workflow_dispatch: diff --git a/.github/workflows/test-network.yaml b/.github/workflows/test-network.yaml deleted file mode 100644 index cb8cda6c..00000000 --- a/.github/workflows/test-network.yaml +++ /dev/null @@ -1,110 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -name: Test Network -run-name: ${{ github.actor }} is testing the Test Network - -on: - workflow_dispatch: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] - -jobs: - basic: - runs-on: ubuntu-20.04 - strategy: - matrix: - chaincode-language: - - go - - javascript - - typescript - - java - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up the test network runtime - uses: ./.github/actions/test-network-setup - - - name: Run Test Network Basic - working-directory: test-network - run: ../ci/scripts/run-test-network-basic.sh - env: - CHAINCODE_LANGUAGE: ${{ matrix.chaincode-language }} - - off-chain: - runs-on: ubuntu-20.04 - strategy: - matrix: - chaincode-language: - - go - - javascript - - typescript - - java - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up the test network runtime - uses: ./.github/actions/test-network-setup - - - name: Run Test Network Off Chain - working-directory: test-network - env: - CHAINCODE_LANGUAGE: ${{ matrix.chaincode-language }} - run: ../ci/scripts/run-test-network-off-chain.sh - - hsm: - runs-on: ubuntu-20.04 - strategy: - matrix: - chaincode-language: - - go - - javascript - - typescript - - java - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up the test network runtime - uses: ./.github/actions/test-network-setup - - - name: Install SoftHSM - run: sudo apt install -y softhsm2 - - - name: Set up SoftHSM - run: | - echo directories.tokendir = /tmp > $HOME/softhsm2.conf - export SOFTHSM2_CONF=$HOME/softhsm2.conf - softhsm2-util --init-token --slot 0 --label "ForFabric" --pin 98765432 --so-pin 1234 - - - name: Run Test Network HSM - working-directory: test-network - env: - CHAINCODE_LANGUAGE: ${{ matrix.chaincode-language }} - run: ../ci/scripts/run-test-network-hsm.sh - - gateway: - runs-on: ubuntu-20.04 - strategy: - matrix: - chaincode-language: - - go - - javascript - - typescript - - java - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up the test network runtime - uses: ./.github/actions/test-network-setup - - - name: Run Test Network Off Chain - working-directory: test-network - env: - CHAINCODE_LANGUAGE: ${{ matrix.chaincode-language }} - run: ../ci/scripts/run-test-network-gateway.sh diff --git a/full-stack-asset-transfer-guide/README.md b/full-stack-asset-transfer-guide/README.md index dd900ad2..b9e4e04a 100644 --- a/full-stack-asset-transfer-guide/README.md +++ b/full-stack-asset-transfer-guide/README.md @@ -106,4 +106,3 @@ We'll create a digital representation of these cards on the blockchain ledger. T - [Go Bananas](docs/CloudReady/40-bananas.md) - [Bring it Home](docs/CloudReady/90-teardown.md) - diff --git a/full-stack-asset-transfer-guide/tests/20-cloud-e2e.sh b/full-stack-asset-transfer-guide/tests/20-cloud-e2e.sh index c39560da..a747ea69 100755 --- a/full-stack-asset-transfer-guide/tests/20-cloud-e2e.sh +++ b/full-stack-asset-transfer-guide/tests/20-cloud-e2e.sh @@ -188,7 +188,8 @@ function build_cc() { CHAINCODE_IMAGE=$CONTAINER_REGISTRY/$CHAINCODE_NAME # Build the chaincode image - docker build -t $CHAINCODE_IMAGE contracts/$CHAINCODE_NAME-typescript + # TODO: configure buildx builders on the CI runners to ensure target arch and os are automatically set. + docker build --build-arg TARGETARCH=amd64 -t $CHAINCODE_IMAGE contracts/$CHAINCODE_NAME-typescript # Push the image to the insecure container registry docker push $CHAINCODE_IMAGE