name: Test the stack. on: workflow_call: inputs: stack-orchestrator-ref: required: false type: string ipld-eth-beacon-db-ref: required: false type: string ssz-data-ref: required: false type: string secrets: GHA_KEY: required: true env: stack-orchestrator-ref: ${{ inputs.stack-orchestrator-ref || '7fb664270a0ba09e2caa3095e8c91f3fdb5b38af' }} ipld-eth-beacon-db-ref: ${{ inputs.ipld-eth-beacon-db-ref || '3dfe416302d553f8240f6051c08a7899b0e39e12' }} ssz-data-ref: ${{ inputs.ssz-data-ref || 'main' }} GOPATH: /tmp/go jobs: build: name: Run Docker Build runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: path: "./ipld-eth-beacon-indexer" - uses: actions/checkout@v3 with: ref: ${{ env.stack-orchestrator-ref }} path: "./stack-orchestrator/" repository: vulcanize/stack-orchestrator fetch-depth: 0 - uses: actions/checkout@v3 with: ref: ${{ env.ipld-eth-beacon-db-ref }} repository: vulcanize/ipld-eth-beacon-db path: "./ipld-eth-beacon-db/" ssh-key: ${{secrets.GHA_KEY}} fetch-depth: 0 - name: Create config file run: | echo vulcanize_ipld_eth_beacon_db=$GITHUB_WORKSPACE/ipld-eth-beacon-db/ > ./config.sh echo vulcanize_ipld_eth_beacon_indexer=$GITHUB_WORKSPACE/ipld-eth-beacon-indexer >> ./config.sh echo eth_beacon_config_file=$GITHUB_WORKSPACE/ipld-eth-beacon-indexer/config/cicd/boot.ipld-eth-beacon-indexer.json >> ./config.sh cat ./config.sh - name: Run docker compose run: | docker-compose \ -f "$GITHUB_WORKSPACE/stack-orchestrator/docker/local/docker-compose-ipld-eth-beacon-db.yml" \ -f "$GITHUB_WORKSPACE/stack-orchestrator/docker/latest/docker-compose-lighthouse.yml" \ -f "$GITHUB_WORKSPACE/stack-orchestrator/docker/local/docker-compose-ipld-eth-beacon-indexer.yml" \ --env-file ./config.sh \ up -d --build - name: Check to make sure HEALTH file is present shell: bash run: | until $(docker compose -f "$GITHUB_WORKSPACE/stack-orchestrator/docker/local/docker-compose-ipld-eth-beacon-indexer.yml" cp ipld-eth-beacon-indexer:/root/HEALTH ./HEALTH) ; do sleep 10; done cat ./HEALTH if [[ "$(cat ./HEALTH)" -eq "0" ]]; then echo "Application boot successful" && (exit 0); else docker compose -f "$GITHUB_WORKSPACE/stack-orchestrator/docker/local/docker-compose-ipld-eth-beacon-indexer.yml" cp ipld-eth-beacon-indexer:/root/ipld-eth-beacon-indexer.log . && cat ipld-eth-beacon-indexer.log && (exit 1); fi unit-test: name: Run Unit Tests runs-on: ubuntu-latest ## IF you want to update the default branch for `pull_request runs, do it after the ||` steps: - name: Create GOPATH run: mkdir -p /tmp/go - uses: actions/checkout@v2 with: path: "./ipld-eth-beacon-indexer" - uses: actions/checkout@v3 with: ref: ${{ env.stack-orchestrator-ref }} path: "./stack-orchestrator/" repository: vulcanize/stack-orchestrator fetch-depth: 0 - uses: actions/checkout@v3 with: ref: ${{ env.ipld-eth-beacon-db-ref }} repository: vulcanize/ipld-eth-beacon-db path: "./ipld-eth-beacon-db/" ssh-key: ${{ secrets.GHA_KEY }} fetch-depth: 0 - uses: actions/checkout@v3 with: ref: ${{ env.ssz-data-ref }} repository: vulcanize/ssz-data path: "./ipld-eth-beacon-indexer/pkg/beaconclient/ssz-data" fetch-depth: 0 - name: Create config file run: | echo vulcanize_ipld_eth_beacon_db=$GITHUB_WORKSPACE/ipld-eth-beacon-db/ > ./config.sh echo vulcanize_ipld_eth_beacon_indexer=$GITHUB_WORKSPACE/ipld-eth-beacon-indexer >> ./config.sh cat ./config.sh - name: Run docker compose run: | docker-compose \ -f "$GITHUB_WORKSPACE/stack-orchestrator/docker/local/docker-compose-ipld-eth-beacon-db.yml" \ --env-file ./config.sh \ up -d --build - uses: actions/setup-go@v3 with: go-version: ">=1.18.0" check-latest: true - name: Install packages run: | go install github.com/onsi/ginkgo/v2/ginkgo@latest which ginkgo - name: Run the tests using Make run: | cd ipld-eth-beacon-indexer make unit-test-ci integration-test: name: Run Integration Tests runs-on: ubuntu-latest steps: - name: Create GOPATH run: mkdir -p /tmp/go - uses: actions/checkout@v2 with: path: "./ipld-eth-beacon-indexer" - uses: actions/checkout@v3 with: ref: ${{ env.stack-orchestrator-ref }} path: "./stack-orchestrator/" repository: vulcanize/stack-orchestrator fetch-depth: 0 - uses: actions/checkout@v3 with: ref: ${{ env.ipld-eth-beacon-db-ref }} repository: vulcanize/ipld-eth-beacon-db path: "./ipld-eth-beacon-db/" ssh-key: ${{secrets.GHA_KEY}} fetch-depth: 0 - name: Create config file run: | echo vulcanize_ipld_eth_beacon_db=$GITHUB_WORKSPACE/ipld-eth-beacon-db/ > ./config.sh echo vulcanize_ipld_eth_beacon_indexer=$GITHUB_WORKSPACE/ipld-eth-beacon-indexer >> ./config.sh echo eth_beacon_capture_mode=boot >> ./config.sh cat ./config.sh - name: Run docker compose run: | docker-compose \ -f "$GITHUB_WORKSPACE/stack-orchestrator/docker/local/docker-compose-ipld-eth-beacon-db.yml" \ -f "$GITHUB_WORKSPACE/stack-orchestrator/docker/latest/docker-compose-lighthouse.yml" \ --env-file ./config.sh \ up -d --build - uses: actions/setup-go@v3 with: go-version: ">=1.18.0" check-latest: true - name: Install packages run: | go install github.com/onsi/ginkgo/v2/ginkgo@latest which ginkgo - name: Run the tests using Make run: | cd ipld-eth-beacon-indexer make integration-test-ci golangci: runs-on: ubuntu-latest steps: - uses: actions/setup-go@v3 with: go-version: ">=1.18.0" - uses: actions/checkout@v3 - name: golangci-lint uses: golangci/golangci-lint-action@v3 with: args: --timeout 90s --disable deadcode,unused # args: --timeout 90s --disable deadcode,