From 24a90d40afe6b6e4058e5ca3c94377cb233f7549 Mon Sep 17 00:00:00 2001 From: Sandeep Nishad Date: Wed, 17 Jan 2024 19:33:38 +0530 Subject: [PATCH] ci(github): refactor the code change check logic to skip at job level Signed-off-by: Sandeep Nishad --- .../test_weaver-asset-exchange-besu.yaml | 4 +- .../test_weaver-corda-interop-app.yaml | 39 ++-- .../workflows/test_weaver-docker-build.yaml | 164 +++++++---------- .github/workflows/test_weaver-go.yaml | 174 +++++++----------- .github/workflows/test_weaver-node-pkgs.yaml | 113 ++++++------ .github/workflows/test_weaver-relay.yaml | 137 +++++--------- 6 files changed, 261 insertions(+), 370 deletions(-) diff --git a/.github/workflows/test_weaver-asset-exchange-besu.yaml b/.github/workflows/test_weaver-asset-exchange-besu.yaml index bdd8216409..8f655d90be 100644 --- a/.github/workflows/test_weaver-asset-exchange-besu.yaml +++ b/.github/workflows/test_weaver-asset-exchange-besu.yaml @@ -39,7 +39,7 @@ jobs: asset-exchange-besu: needs: check_code_changed - if: ${{ false && needs.check_code_changed.outputs.status == 'true' }} + if: ${{ false }} # The type of runner that the job will run on runs-on: ubuntu-latest @@ -47,6 +47,8 @@ jobs: fail-fast: false matrix: app_contract: ["AliceERC1155", "AliceERC20", "AliceERC721"] + exclude: + - app_contract: ${{ needs.check_code_changed.outputs.status != 'true' }} # Steps represent a sequence of tasks that will be executed as part of the job steps: diff --git a/.github/workflows/test_weaver-corda-interop-app.yaml b/.github/workflows/test_weaver-corda-interop-app.yaml index 950b7a62c7..076eec3fa4 100644 --- a/.github/workflows/test_weaver-corda-interop-app.yaml +++ b/.github/workflows/test_weaver-corda-interop-app.yaml @@ -18,38 +18,43 @@ concurrency: cancel-in-progress: true jobs: + check_code_changed: + outputs: + interop_cordapp_changed: ${{ steps.changes.outputs.interop_cordapp_changed }} + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3.5.2 + + - uses: dorny/paths-filter@v2.11.1 + id: changes + with: + filters: | + interop_cordapp_changed: + - './weaver/common/protos-java-kt/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' + - './weaver/core/network/corda-interop-app/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' + - '.github/workflows/test_weaver-corda-interop-app.yaml' + unit_test_interop_cordapp: + needs: check_code_changed + if: needs.check_code_changed.outputs.interop_cordapp_changed == 'true' runs-on: ubuntu-latest steps: - uses: actions/checkout@v3.5.2 - - uses: dorny/paths-filter@v2.11.1 - id: changes - with: - filters: | - weaver_code_changed: - - './weaver/common/protos-java-kt/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - './weaver/core/network/corda-interop-app/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - '.github/workflows/test_weaver-corda-interop-app.yaml' - - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Set up JDK 8 + - name: Set up JDK 8 uses: actions/setup-java@v3.11.0 with: java-version: '8' distribution: 'adopt' - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build Protos (Local) + - name: Build Protos (Local) run: make build working-directory: weaver/common/protos-java-kt - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build Corda Interop App (Local) + - name: Build Corda Interop App (Local) run: make build-local working-directory: weaver/core/network/corda-interop-app - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Run Tests (Local) + - name: Run Tests (Local) run: make test working-directory: weaver/core/network/corda-interop-app diff --git a/.github/workflows/test_weaver-docker-build.yaml b/.github/workflows/test_weaver-docker-build.yaml index b85a824902..9ffdf1f070 100644 --- a/.github/workflows/test_weaver-docker-build.yaml +++ b/.github/workflows/test_weaver-docker-build.yaml @@ -18,164 +18,151 @@ concurrency: cancel-in-progress: true jobs: - build_docker_relay: - # if: ${{ false }} + check_code_changed: + outputs: + relay_changed: ${{ steps.changes.outputs.relay_changed }} + fabric_driver_changed: ${{ steps.changes.outputs.fabric_driver_changed }} + corda_driver_changed: ${{ steps.changes.outputs.corda_driver_changed }} + iin_agent_changed: ${{ steps.changes.outputs.iin_agent_changed }} runs-on: ubuntu-latest steps: - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v3.5.2 - uses: dorny/paths-filter@v2.11.1 id: changes with: filters: | - weaver_code_changed: + relay_changed: - './weaver/common/protos-rs/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - './weaver/core/relay/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - '.github/workflows/test_weaver-docker-build.yaml' - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build Image + fabric_driver_changed: + - './weaver/common/protos/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' + - './weaver/common/protos-js/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' + - './weaver/sdks/fabric/interoperation-node-sdk/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' + - './weaver/weaver/core/drivers/fabric-driver/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' + - '.github/workflows/test_weaver-docker-build.yaml' + + corda_driver_changed: + - './weaver/common/protos/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' + - './weaver/common/protos-java-kt/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' + - './weaver/core/network/corda-interop-app/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' + - './weaver/sdks/corda/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' + - './weaver/core/drivers/corda-driver/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' + - '.github/workflows/test_weaver-docker-build.yaml' + + iin_agent_changed: + - './weaver/common/protos/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' + - './weaver/common/protos-js/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' + - './weaver/sdks/fabric/interoperation-node-sdk/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' + - './weaver/core/identity-management/iin-agent/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' + - '.github/workflows/test_weaver-docker-build.yaml' + + build_docker_relay: + needs: check_code_changed + if: needs.check_code_changed.outputs.relay_changed == 'true' + # if: ${{ false }} + runs-on: ubuntu-latest + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v3.5.2 + + - name: Build Image run: make build-server-local working-directory: weaver/core/relay build_docker_fabric_driver_local: + needs: check_code_changed + if: needs.check_code_changed.outputs.fabric_driver_changed == 'true' # if: ${{ false }} runs-on: ubuntu-latest steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v3.5.2 - - uses: dorny/paths-filter@v2.11.1 - id: changes - with: - filters: | - weaver_code_changed: - - './weaver/common/protos/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - './weaver/common/protos-js/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - './weaver/sdks/fabric/interoperation-node-sdk/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - './weaver/weaver/core/drivers/fabric-driver/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - '.github/workflows/test_weaver-docker-build.yaml' - - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Use Node.js ${{ env.NODEJS_VERSION }} + - name: Use Node.js ${{ env.NODEJS_VERSION }} uses: actions/setup-node@v3.6.0 with: node-version: ${{ env.NODEJS_VERSION }} - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Use Protoc 3.15 + - name: Use Protoc 3.15 run: | curl -LO https://github.com/protocolbuffers/protobuf/releases/download/v3.15.6/protoc-3.15.6-linux-x86_64.zip unzip protoc-3.15.6-linux-x86_64.zip -d protoc - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build JS Protos (Local) + - name: Build JS Protos (Local) run: | export PATH="$PATH:${GITHUB_WORKSPACE}/protoc/bin" make build working-directory: weaver/common/protos-js - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build Fabric Interop Node SDK (Local) + - name: Build Fabric Interop Node SDK (Local) run: make build-local working-directory: weaver/sdks/fabric/interoperation-node-sdk - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build Image (Local) + - name: Build Image (Local) run: make build-image-local working-directory: weaver/core/drivers/fabric-driver build_docker_fabric_driver_packages: - if: ${{ false }} + needs: check_code_changed + if: ${{ false && needs.check_code_changed.outputs.fabric_driver_changed == 'true' }} runs-on: ubuntu-latest steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v3.5.2 - - uses: dorny/paths-filter@v2.11.1 - id: changes - with: - filters: | - weaver_code_changed: - - './weaver/weaver/core/drivers/fabric-driver/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - '.github/workflows/test_weaver-docker-build.yaml' - - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Setup .npmrc + - name: Setup .npmrc run: | cp .npmrc.template .npmrc sed -i "s//${{ secrets.GITHUB_TOKEN }}/g" .npmrc cat .npmrc working-directory: weaver/core/drivers/fabric-driver - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build Image + - name: Build Image run: make build-image working-directory: weaver/core/drivers/fabric-driver build_docker_corda_driver_local: + needs: check_code_changed + if: needs.check_code_changed.outputs.corda_driver_changed == 'true' runs-on: ubuntu-latest steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v3.5.2 - - uses: dorny/paths-filter@v2.11.1 - id: changes - with: - filters: | - weaver_code_changed: - - './weaver/common/protos/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - './weaver/common/protos-java-kt/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - './weaver/core/network/corda-interop-app/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - './weaver/sdks/corda/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - './weaver/core/drivers/corda-driver/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - '.github/workflows/test_weaver-docker-build.yaml' - - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Set up JDK 8 + - name: Set up JDK 8 uses: actions/setup-java@v3.11.0 with: java-version: '8' distribution: 'adopt' - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build Protos (Local) + - name: Build Protos (Local) run: make build working-directory: weaver/common/protos-java-kt - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build Corda Interop App (Local) + - name: Build Corda Interop App (Local) run: make build-local working-directory: weaver/core/network/corda-interop-app - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build Corda Interop SDK (Local) + - name: Build Corda Interop SDK (Local) run: make build working-directory: weaver/sdks/corda - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build Image (Local) + - name: Build Image (Local) run: make image-local working-directory: weaver/core/drivers/corda-driver build_docker_corda_driver_packages: - if: ${{ false }} + needs: check_code_changed + if: ${{ false && needs.check_code_changed.outputs.corda_driver_changed == 'true' }} runs-on: ubuntu-latest steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v3.5.2 - - uses: dorny/paths-filter@v2.11.1 - id: changes - with: - filters: | - weaver_code_changed: - - './weaver/core/drivers/corda-driver/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - '.github/workflows/test_weaver-docker-build.yaml' - - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Generate github.properties + - name: Generate github.properties run: | echo "Using ${GITHUB_ACTOR} user." echo "username=${GITHUB_ACTOR}" >> github.properties @@ -193,53 +180,38 @@ jobs: cat github.properties working-directory: weaver/core/drivers/corda-driver - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build Image + - name: Build Image run: make image working-directory: weaver/core/drivers/corda-driver build_docker_iin_agent_local: + needs: check_code_changed + if: needs.check_code_changed.outputs.iin_agent_changed == 'true' runs-on: ubuntu-latest steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v3.5.2 - - uses: dorny/paths-filter@v2.11.1 - id: changes - with: - filters: | - weaver_code_changed: - - './weaver/common/protos/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - './weaver/common/protos-js/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - './weaver/sdks/fabric/interoperation-node-sdk/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - './weaver/core/identity-management/iin-agent/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - '.github/workflows/test_weaver-docker-build.yaml' - - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Use Node.js ${{ env.NODEJS_VERSION }} + - name: Use Node.js ${{ env.NODEJS_VERSION }} uses: actions/setup-node@v3.6.0 with: node-version: ${{ env.NODEJS_VERSION }} - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Use Protoc 3.15 + - name: Use Protoc 3.15 run: | curl -LO https://github.com/protocolbuffers/protobuf/releases/download/v3.15.6/protoc-3.15.6-linux-x86_64.zip unzip protoc-3.15.6-linux-x86_64.zip -d protoc - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build JS Protos (Local) + - name: Build JS Protos (Local) run: | export PATH="$PATH:${GITHUB_WORKSPACE}/protoc/bin" make build working-directory: weaver/common/protos-js - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build Fabric Interop Node SDK (Local) + - name: Build Fabric Interop Node SDK (Local) run: make build-local working-directory: weaver/sdks/fabric/interoperation-node-sdk - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build Image + - name: Build Image run: make build-image-local working-directory: weaver/core/identity-management/iin-agent diff --git a/.github/workflows/test_weaver-go.yaml b/.github/workflows/test_weaver-go.yaml index 7c15feec9a..21c711dfd4 100644 --- a/.github/workflows/test_weaver-go.yaml +++ b/.github/workflows/test_weaver-go.yaml @@ -15,217 +15,179 @@ concurrency: cancel-in-progress: true jobs: + check_code_changed: + outputs: + interopcc_changed: ${{ steps.changes.outputs.interopcc_changed }} + simplestate_changed: ${{ steps.changes.outputs.simplestate_changed }} + simpleasset_changed: ${{ steps.changes.outputs.simpleasset_changed }} + simpleassetandinterop_changed: ${{ steps.changes.outputs.simpleassetandinterop_changed }} + simpleassettransfer_changed: ${{ steps.changes.outputs.simpleassettransfer_changed }} + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3.5.2 + + - uses: dorny/paths-filter@v2.11.1 + id: changes + with: + filters: | + interopcc_changed: + - 'weaver/common/protos-go/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' + - 'weaver/core/network/fabric-interop-cc/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' + - '.github/workflows/test_weaver-go.yaml' + + simplestate_changed: + - 'weaver/samples/fabric/simplestate/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' + + simpleasset_changed: + - 'weaver/samples/fabric/simpleasset/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' + + simpleassetandinterop_changed: + - 'weaver/samples/fabric/simpleassetandinterop/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' + + simpleassettransfer_changed: + - 'weaver/samples/fabric/simpleassettransfer/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' + unit_test_interopcc: + needs: check_code_changed + if: needs.check_code_changed.outputs.interopcc_changed == 'true' runs-on: ubuntu-latest steps: - uses: actions/checkout@v3.5.2 - - uses: dorny/paths-filter@v2.11.1 - id: changes - with: - filters: | - weaver_code_changed: - - 'weaver/common/protos-go/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - 'weaver/core/network/fabric-interop-cc/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - '.github/workflows/test_weaver-go.yaml' - - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Set up Go + - name: Set up Go uses: actions/setup-go@v4.0.0 with: go-version: '1.20.2' - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Vendor + - name: Vendor run: make run-vendor working-directory: weaver/core/network/fabric-interop-cc/contracts/interop - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build + - name: Build run: go build -v ./... working-directory: weaver/core/network/fabric-interop-cc/contracts/interop - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Test + - name: Test run: go test -v ./... working-directory: weaver/core/network/fabric-interop-cc/contracts/interop unit_test_assetmgmt: + needs: check_code_changed + if: needs.check_code_changed.outputs.interopcc_changed == 'true' # if: ${{ false }} # disable runs-on: ubuntu-latest steps: - uses: actions/checkout@v3.5.2 - - uses: dorny/paths-filter@v2.11.1 - id: changes - with: - filters: | - weaver_code_changed: - - 'weaver/common/protos-go/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - 'weaver/core/network/fabric-interop-cc/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - '.github/workflows/test_weaver-go.yaml' - - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Set up Go + - name: Set up Go uses: actions/setup-go@v4.0.0 with: go-version: '1.20.2' - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Vendor + - name: Vendor run: make run-vendor working-directory: weaver/core/network/fabric-interop-cc/interfaces/asset-mgmt - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build + - name: Build run: go build -v ./... working-directory: weaver/core/network/fabric-interop-cc/interfaces/asset-mgmt - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Test + - name: Test run: go test -v ./... working-directory: weaver/core/network/fabric-interop-cc/interfaces/asset-mgmt unit_test_simplestate: + needs: check_code_changed + if: ${{ needs.check_code_changed.outputs.interopcc_changed == 'true' || needs.check_code_changed.outputs.simplestate_changed == 'true' }} runs-on: ubuntu-latest steps: - uses: actions/checkout@v3.5.2 - - uses: dorny/paths-filter@v2.11.1 - id: changes - with: - filters: | - weaver_code_changed: - - 'weaver/common/protos-go/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - 'weaver/core/network/fabric-interop-cc/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - 'weaver/samples/fabric/simplestate/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - '.github/workflows/test_weaver-go.yaml' - - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Set up Go + - name: Set up Go uses: actions/setup-go@v4.0.0 with: go-version: '1.20.2' - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Vendor + - name: Vendor run: make run-vendor working-directory: weaver/samples/fabric/simplestate - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build + - name: Build run: go build -v ./... working-directory: weaver/samples/fabric/simplestate - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Test + - name: Test run: go test -v ./... working-directory: weaver/samples/fabric/simplestate unit_test_simpleasset: + needs: check_code_changed + if: ${{ needs.check_code_changed.outputs.interopcc_changed == 'true' || needs.check_code_changed.outputs.simpleasset_changed == 'true' }} runs-on: ubuntu-latest steps: - uses: actions/checkout@v3.5.2 - - uses: dorny/paths-filter@v2.11.1 - id: changes - with: - filters: | - weaver_code_changed: - - 'weaver/common/protos-go/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - 'weaver/core/network/fabric-interop-cc/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - 'weaver/samples/fabric/simpleasset/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - '.github/workflows/test_weaver-go.yaml' - - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Set up Go + - name: Set up Go uses: actions/setup-go@v4.0.0 with: go-version: '1.20.2' - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Vendor + - name: Vendor run: make run-vendor working-directory: weaver/samples/fabric/simpleasset - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build + - name: Build run: go build -v ./... working-directory: weaver/samples/fabric/simpleasset - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Test + - name: Test run: go test -v ./... working-directory: weaver/samples/fabric/simpleasset unit_test_simpleassetandinterop: + needs: check_code_changed + if: ${{ needs.check_code_changed.outputs.interopcc_changed == 'true' || needs.check_code_changed.outputs.simpleassetandinterop_changed == 'true' }} runs-on: ubuntu-latest steps: - uses: actions/checkout@v3.5.2 - - uses: dorny/paths-filter@v2.11.1 - id: changes - with: - filters: | - weaver_code_changed: - - 'weaver/common/protos-go/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - 'weaver/core/network/fabric-interop-cc/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - 'weaver/samples/fabric/simpleassetandinterop/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - '.github/workflows/test_weaver-go.yaml' - - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Set up Go + - name: Set up Go uses: actions/setup-go@v4.0.0 with: go-version: '1.20.2' - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Vendor + - name: Vendor run: make run-vendor working-directory: weaver/samples/fabric/simpleassetandinterop - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build + - name: Build run: go build -v ./... working-directory: weaver/samples/fabric/simpleassetandinterop - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Test + - name: Test run: go test -v ./... working-directory: weaver/samples/fabric/simpleassetandinterop unit_test_simpleassettransfer: + needs: check_code_changed + if: ${{ needs.check_code_changed.outputs.interopcc_changed == 'true' || needs.check_code_changed.outputs.simpleassettransfer_changed == 'true' }} runs-on: ubuntu-latest steps: - uses: actions/checkout@v3.5.2 - - uses: dorny/paths-filter@v2.11.1 - id: changes - with: - filters: | - weaver_code_changed: - - 'weaver/common/protos-go/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - 'weaver/core/network/fabric-interop-cc/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - 'weaver/samples/fabric/simpleassettransfer/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - '.github/workflows/test_weaver-go.yaml' - - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Set up Go + - name: Set up Go uses: actions/setup-go@v4.0.0 with: go-version: '1.20.2' - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Vendor + - name: Vendor run: make run-vendor working-directory: weaver/samples/fabric/simpleassettransfer - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build + - name: Build run: go build -v ./... working-directory: weaver/samples/fabric/simpleassettransfer - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Test + - name: Test run: go test -v ./... working-directory: weaver/samples/fabric/simpleassettransfer diff --git a/.github/workflows/test_weaver-node-pkgs.yaml b/.github/workflows/test_weaver-node-pkgs.yaml index 31f38a245c..7074d6e2e5 100644 --- a/.github/workflows/test_weaver-node-pkgs.yaml +++ b/.github/workflows/test_weaver-node-pkgs.yaml @@ -22,140 +22,133 @@ concurrency: cancel-in-progress: true jobs: - unit_test_weaver_node_sdk_local: + check_code_changed: + outputs: + fabric_sdk_changed: ${{ steps.changes.outputs.fabric_sdk_changed }} + iin_agent_changed: ${{ steps.changes.outputs.iin_agent_changed }} + docs_changed: ${{ steps.changes.outputs.docs_changed }} + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3.5.2 + + - uses: dorny/paths-filter@v2.11.1 + id: changes + with: + filters: | + fabric_sdk_changed: + - '.github/workflows/test_weaver-node-pkgs.yaml' + - 'weaver/common/protos/**' + - 'weaver/common/protos-js/**' + - 'weaver/sdks/fabric/interoperation-node-sdk/**' + iin_agent_changed: + - '.github/workflows/test_weaver-node-pkgs.yaml' + - 'weaver/common/protos/**' + - 'weaver/common/protos-js/**' + - 'weaver/sdks/fabric/interoperation-node-sdk/**' + - 'weaver/core/identity-management/**' + + docs_changed: + - '.github/workflows/test_weaver-node-pkgs.yaml' + - 'weaver/docs/**' + + unit_test_weaver_node_sdk_local: + needs: check_code_changed runs-on: ubuntu-latest strategy: matrix: node-version: [v18.18.2, v20.9.0] + exclude: + - node-version: ${{ needs.check_code_changed.outputs.fabric_sdk_changed != 'true' }} # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: - uses: actions/checkout@v3.5.2 - - uses: dorny/paths-filter@v2.11.1 - id: changes - with: - filters: | - weaver_code_changed: - - '.github/workflows/test_weaver-node-pkgs.yaml' - - 'weaver/common/protos/**' - - 'weaver/common/protos-js/**' - - 'weaver/sdks/fabric/interoperation-node-sdk/**' - - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Use Node.js ${{ matrix.node-version }} + - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3.6.0 with: node-version: ${{ matrix.node-version }} - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Use Protoc 3.15 + - name: Use Protoc 3.15 run: | curl -LO https://github.com/protocolbuffers/protobuf/releases/download/v3.15.6/protoc-3.15.6-linux-x86_64.zip unzip protoc-3.15.6-linux-x86_64.zip -d protoc - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build JS Protos + - name: Build JS Protos run: | export PATH="$PATH:${GITHUB_WORKSPACE}/protoc/bin" make build working-directory: weaver/common/protos-js - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build + - name: Build run: make build-local working-directory: weaver/sdks/fabric/interoperation-node-sdk - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Tests + - name: Tests run: npm run test working-directory: weaver/sdks/fabric/interoperation-node-sdk unit_test_iin_agent_local: - + needs: check_code_changed runs-on: ubuntu-latest strategy: matrix: - node-version: [v18.18.2] + node-version: [v18.18.2, v20.9.0] + exclude: + - node-version: ${{ needs.check_code_changed.outputs.iin_agent_changed != 'true' }} # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: - uses: actions/checkout@v3.5.2 - - uses: dorny/paths-filter@v2.11.1 - id: changes - with: - filters: | - weaver_code_changed: - - '.github/workflows/test_weaver-node-pkgs.yaml' - - 'weaver/common/protos/**' - - 'weaver/common/protos-js/**' - - 'weaver/sdks/fabric/interoperation-node-sdk/**' - - 'weaver/core/identity-management/**' - - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Use Node.js ${{ matrix.node-version }} + - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3.6.0 with: node-version: ${{ matrix.node-version }} - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Use Protoc 3.15 + - name: Use Protoc 3.15 run: | curl -LO https://github.com/protocolbuffers/protobuf/releases/download/v3.15.6/protoc-3.15.6-linux-x86_64.zip unzip protoc-3.15.6-linux-x86_64.zip -d protoc - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build JS Protos + - name: Build JS Protos run: | export PATH="$PATH:${GITHUB_WORKSPACE}/protoc/bin" make build working-directory: weaver/common/protos-js - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build + - name: Build run: make build-local working-directory: weaver/sdks/fabric/interoperation-node-sdk - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build IIN Agent + - name: Build IIN Agent run: make build-local working-directory: weaver/core/identity-management/iin-agent - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Tests + - name: Tests run: npm run test working-directory: weaver/core/identity-management/iin-agent build_docs: + needs: check_code_changed + if: needs.check_code_changed.outputs.docs_changed == 'true' runs-on: ubuntu-latest steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v3.5.2 - - uses: dorny/paths-filter@v2.11.1 - id: changes - with: - filters: | - weaver_code_changed: - - '.github/workflows/test_weaver-node-pkgs.yaml' - - 'weaver/docs/**' - - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Use Node.js ${{ env.NODEJS_LTS_VERSION }} + - name: Use Node.js ${{ env.NODEJS_LTS_VERSION }} uses: actions/setup-node@v3.6.0 with: node-version: ${{ env.NODEJS_LTS_VERSION }} - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: NPM INSTALL + - name: NPM INSTALL run: npm install working-directory: weaver/docs - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build + - name: Build run: npm run build working-directory: weaver/docs diff --git a/.github/workflows/test_weaver-relay.yaml b/.github/workflows/test_weaver-relay.yaml index b8608841c5..6bcbbb75de 100644 --- a/.github/workflows/test_weaver-relay.yaml +++ b/.github/workflows/test_weaver-relay.yaml @@ -15,69 +15,70 @@ concurrency: cancel-in-progress: true jobs: - unit_test_relay_local: - # if: ${{ false }} + check_code_changed: + outputs: + relay_changed: ${{ steps.changes.outputs.relay_changed }} runs-on: ubuntu-latest steps: - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v3.5.2 - uses: dorny/paths-filter@v2.11.1 id: changes with: filters: | - weaver_code_changed: + relay_changed: - '.weaver/common/protos/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - '.weaver/common/protos-rs/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - '.weaver/core/relay/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - .github/workflows/test_weaver-relay.yaml' - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Install RUST Toolchain minimal stable with clippy and rustfmt + unit_test_relay_local: + needs: check_code_changed + if: needs.check_code_changed.outputs.relay_changed == 'true' + # if: ${{ false }} + runs-on: ubuntu-latest + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v3.5.2 + + - name: Install RUST Toolchain minimal stable with clippy and rustfmt uses: actions-rs/toolchain@v1.0.6 with: profile: minimal toolchain: stable components: rustfmt, clippy - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Use Protoc 3.15 + - name: Use Protoc 3.15 run: | curl -LO https://github.com/protocolbuffers/protobuf/releases/download/v3.15.6/protoc-3.15.6-linux-x86_64.zip unzip protoc-3.15.6-linux-x86_64.zip -d protoc - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build Protos RS + - name: Build Protos RS run: | export PATH="$PATH:${GITHUB_WORKSPACE}/protoc/bin" make build working-directory: weaver/common/protos-rs - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Get Latest Relay Dependencies + - name: Get Latest Relay Dependencies run: | make protos-local cargo update -p nom cargo update -p lexical-core working-directory: weaver/core/relay - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build Image + - name: Build Image run: make working-directory: weaver/core/relay - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Run Dummy Relay + - name: Run Dummy Relay run: RELAY_CONFIG=config/Dummy_Relay.toml cargo run --bin server &> relay-dummy.out & working-directory: weaver/core/relay - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Run Dummy Driver + - name: Run Dummy Driver run: RELAY_CONFIG=config/Dummy_Relay.toml cargo run --bin dummy-driver &> driver-dummy.out & working-directory: weaver/core/relay - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Mock Client Test + - name: Mock Client Test run: | echo "Waiting for Dummy Relay and Driver to come up" sleep 30 @@ -85,68 +86,52 @@ jobs: working-directory: weaver/core/relay unit_test_relay_tls_local: + needs: check_code_changed + if: needs.check_code_changed.outputs.relay_changed == 'true' # if: ${{ false }} runs-on: ubuntu-latest steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v3.5.2 - - uses: dorny/paths-filter@v2.11.1 - id: changes - with: - filters: | - weaver_code_changed: - - '.weaver/common/protos/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - '.weaver/common/protos-rs/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - '.weaver/core/relay/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - .github/workflows/test_weaver-relay.yaml' - - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Install RUST Toolchain minimal stable with clippy and rustfmt + - name: Install RUST Toolchain minimal stable with clippy and rustfmt uses: actions-rs/toolchain@v1.0.6 with: profile: minimal toolchain: stable components: rustfmt, clippy - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Use Protoc 3.15 + - name: Use Protoc 3.15 run: | curl -LO https://github.com/protocolbuffers/protobuf/releases/download/v3.15.6/protoc-3.15.6-linux-x86_64.zip unzip protoc-3.15.6-linux-x86_64.zip -d protoc - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build Protos RS + - name: Build Protos RS run: | export PATH="$PATH:${GITHUB_WORKSPACE}/protoc/bin" make build working-directory: weaver/common/protos-rs - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Get Latest Relay Dependencies + - name: Get Latest Relay Dependencies run: | make protos-local cargo update -p nom cargo update -p lexical-core working-directory: weaver/core/relay - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build Image + - name: Build Image run: make working-directory: weaver/core/relay - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Run Dummy Relay + - name: Run Dummy Relay run: RELAY_CONFIG=config/Dummy_Relay_tls.toml cargo run --bin server &> relay-dummy.out & working-directory: weaver/core/relay - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Run Dummy Driver + - name: Run Dummy Driver run: RELAY_CONFIG=config/Dummy_Relay_tls.toml cargo run --bin dummy-driver &> driver-dummy.out & working-directory: weaver/core/relay - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Mock Client Test + - name: Mock Client Test run: | echo "Waiting for Dummy Relay and Driver to come up" sleep 30 @@ -154,53 +139,39 @@ jobs: working-directory: weaver/core/relay unit_test_relay: - if: ${{ false }} + needs: check_code_changed + if: ${{ false && needs.check_code_changed.outputs.relay_changed == 'true' }} runs-on: ubuntu-latest steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v3.5.2 - - uses: dorny/paths-filter@v2.11.1 - id: changes - with: - filters: | - weaver_code_changed: - - '.weaver/common/protos-rs/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - '.weaver/core/relay/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - .github/workflows/test_weaver-relay.yaml' - - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Install RUST Toolchain minimal stable with clippy and rustfmt + - name: Install RUST Toolchain minimal stable with clippy and rustfmt uses: actions-rs/toolchain@v1.0.6 with: profile: minimal toolchain: stable components: rustfmt, clippy - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Get Latest Relay Dependencies + - name: Get Latest Relay Dependencies run: | cargo update -p nom cargo update -p lexical-core working-directory: weaver/core/relay - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build Image + - name: Build Image run: make build working-directory: weaver/core/relay - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Run Dummy Relay + - name: Run Dummy Relay run: RELAY_CONFIG=config/Dummy_Relay.toml cargo run --bin server &> relay-dummy.out & working-directory: weaver/core/relay - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Run Dummy Driver + - name: Run Dummy Driver run: RELAY_CONFIG=config/Dummy_Relay.toml cargo run --bin dummy-driver &> driver-dummy.out & working-directory: weaver/core/relay - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Mock Client Test + - name: Mock Client Test run: | echo "Waiting for Dummy Relay and Driver to come up" sleep 30 @@ -208,53 +179,39 @@ jobs: working-directory: weaver/core/relay unit_test_relay_tls: - if: ${{ false }} + needs: check_code_changed + if: ${{ false && needs.check_code_changed.outputs.relay_changed == 'true' }} runs-on: ubuntu-latest steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v3.5.2 - - uses: dorny/paths-filter@v2.11.1 - id: changes - with: - filters: | - weaver_code_changed: - - '.weaver/common/protos-rs/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - '.weaver/core/relay/**!(*.md|*.css|*.html|*.jpg|*.jpeg|*.png)' - - .github/workflows/test_weaver-relay.yaml' - - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Install RUST Toolchain minimal stable with clippy and rustfmt + - name: Install RUST Toolchain minimal stable with clippy and rustfmt uses: actions-rs/toolchain@v1.0.6 with: profile: minimal toolchain: stable components: rustfmt, clippy - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Get Latest Relay Dependencies + - name: Get Latest Relay Dependencies run: | cargo update -p nom cargo update -p lexical-core working-directory: weaver/core/relay - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Build Image + - name: Build Image run: make build working-directory: weaver/core/relay - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Run Dummy Relay + - name: Run Dummy Relay run: RELAY_CONFIG=config/Dummy_Relay_tls.toml cargo run --bin server &> relay-dummy.out & working-directory: weaver/core/relay - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Run Dummy Driver + - name: Run Dummy Driver run: RELAY_CONFIG=config/Dummy_Relay_tls.toml cargo run --bin dummy-driver &> driver-dummy.out & working-directory: weaver/core/relay - - if: steps.changes.outputs.weaver_code_changed == 'true' - name: Mock Client Test + - name: Mock Client Test run: | echo "Waiting for Dummy Relay and Driver to come up" sleep 30