Skip to content
Latchkey

Integration Tests workflow (hyperledger-cello/cello)

The Integration Tests workflow from hyperledger-cello/cello, explained and optimized by Latchkey.

C

CI health: C - fair

Point runs-on at Latchkey and get run de-duplication, job timeouts, self-healing for flaky steps, and up to 58% lower cost, applied automatically.

Grade your own workflow free or run it on Latchkey →
Source: hyperledger-cello/cello.github/workflows/integration-tests.ymlLicense Apache-2.0View source

What it does

This is the Integration Tests workflow from the hyperledger-cello/cello repository, a real project running GitHub Actions. It is shown here with attribution under its Apache-2.0 license.

Below, Latchkey shows a faster, safer version produced by its optimization engine.

The workflow

workflow (.yml)
name: Integration Tests

on:
  push:
    branches: ["main"]
  pull_request:
    branches: ["main"]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3

      - name: Start Dashboard, DB, and API Engine
        run: docker compose -f docker-compose.dev.yaml up -d --build

      - name: Start Hyperledger Fabric Agent
        working-directory: src/agents/hyperledger-fabric
        run: |
          docker build -t cello-hyperledger-fabric-agent .
          docker run -d --network cello-net -v /var/run/docker.sock:/var/run/docker.sock --name cello-hyperledger-fabric-agent cello-hyperledger-fabric-agent

      - name: Build Hyperledger Fabric Node
        working-directory: src/nodes/hyperledger-fabric
        run: docker build -t hyperledger/fabric:2.5.15 .

      - name: Run newman tests
        working-directory: tests/postman
        run: docker compose up --abort-on-container-exit

      - name: Stop Hyperledger Fabric Chaincode
        run: docker ps -q --filter "name=dev-peer0.org1.foo.com-basic_1.0" | xargs -r docker stop

      - name: Stop Hyperledger Fabric Nodes
        run: docker stop orderer0.foo.com peer0.org1.foo.com

      - name: Stop Hyperledger Fabric Agent
        run: docker stop cello-hyperledger-fabric-agent

      - name: Stop Dashboard, DB, and API Engine
        run: docker compose -f docker-compose.dev.yaml down -v

      - name: Clean up
        if: always()
        run: docker system prune -a -f

The same workflow, on Latchkey

Removes redundant runs and caps runaway jobs. Added and changed lines are highlighted.

name: Integration Tests
 
on:
  push:
    branches: ["main"]
  pull_request:
    branches: ["main"]
 
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true
 
jobs:
  build:
    timeout-minutes: 30
    runs-on: latchkey-small
 
    steps:
      - uses: actions/checkout@v3
 
      - name: Start Dashboard, DB, and API Engine
        run: docker compose -f docker-compose.dev.yaml up -d --build
 
      - name: Start Hyperledger Fabric Agent
        working-directory: src/agents/hyperledger-fabric
        run: |
          docker build -t cello-hyperledger-fabric-agent .
          docker run -d --network cello-net -v /var/run/docker.sock:/var/run/docker.sock --name cello-hyperledger-fabric-agent cello-hyperledger-fabric-agent
 
      - name: Build Hyperledger Fabric Node
        working-directory: src/nodes/hyperledger-fabric
        run: docker build -t hyperledger/fabric:2.5.15 .
 
      - name: Run newman tests
        working-directory: tests/postman
        run: docker compose up --abort-on-container-exit
 
      - name: Stop Hyperledger Fabric Chaincode
        run: docker ps -q --filter "name=dev-peer0.org1.foo.com-basic_1.0" | xargs -r docker stop
 
      - name: Stop Hyperledger Fabric Nodes
        run: docker stop orderer0.foo.com peer0.org1.foo.com
 
      - name: Stop Hyperledger Fabric Agent
        run: docker stop cello-hyperledger-fabric-agent
 
      - name: Stop Dashboard, DB, and API Engine
        run: docker compose -f docker-compose.dev.yaml down -v
 
      - name: Clean up
        if: always()
        run: docker system prune -a -f
 

What changed

What Latchkey heals here

This workflow has steps that commonly fail on transient issues (network, registries, flaky browsers). On Latchkey managed runners they are detected, retried, and self-healed instead of failing your build:

This workflow runs 1 job per trigger. On Latchkey the same minutes cost up to 58% less than GitHub-hosted, with zero queue time.

Actions used in this workflow