From 8311e607a7be51f6a228543fbf7be5fc89ef95f3 Mon Sep 17 00:00:00 2001 From: Alex Gartner Date: Mon, 19 Aug 2024 10:35:31 -0700 Subject: [PATCH] Add CI testing --- .github/workflows/build.yml | 50 ------------------------ .github/workflows/ci.yml | 77 +++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 50 deletions(-) delete mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index ca2a601..0000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,50 +0,0 @@ -name: build - -on: - push: - branches: - - main - tags: - - v* - pull_request: - -jobs: - docker: - runs-on: ubuntu-latest - env: - IMAGE: ghcr.io/${{ github.repository_owner }}/zetacored - steps: - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Login to GHCR - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Generate version - run: | - # Default tag as commit SHA - VERSION=${GITHUB_SHA::7} - - # Use tag name if it's a tag push - if [ "$GITHUB_EVENT_NAME" == "push" ] && [ "$GITHUB_REF_TYPE" == "tag" ]; then - VERSION=${GITHUB_REF_NAME} - fi - - echo "VERSION=$VERSION" >> $GITHUB_ENV - - - name: Build and push - uses: docker/build-push-action@v6 - with: - platforms: linux/amd64,linux/arm64 - push: true - provenance: mode=max - tags: "${{ env.IMAGE }}:${{ env.VERSION }}" - cache-from: type=registry,ref=${{ env.IMAGE }}:buildcache - cache-to: type=registry,ref=${{ env.IMAGE }}:buildcache,mode=max \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..ab131e7 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,77 @@ +name: ci + +on: + push: + branches: + - main + tags: + - v* + pull_request: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + env: + IMAGE_BASE: ghcr.io/${{ github.repository_owner }}/zetacored + outputs: + IMAGE: ${{ fromJson(steps.build.outputs.metadata)['image.name'] }} + steps: + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to GHCR + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Generate version + run: | + # Default tag as commit SHA + VERSION=${GITHUB_SHA::7} + # Use tag name if it's a tag push + if [ "$GITHUB_EVENT_NAME" == "push" ] && [ "$GITHUB_REF_TYPE" == "tag" ]; then + VERSION=${GITHUB_REF_NAME} + fi + echo "VERSION=$VERSION" >> $GITHUB_ENV + + - name: Build and push + id: build + uses: docker/build-push-action@v6 + with: + platforms: linux/amd64,linux/arm64 + push: true + provenance: mode=max + tags: "${{ env.IMAGE_BASE }}:${{ env.VERSION }}" + cache-from: type=registry,ref=${{ env.IMAGE_BASE }}:buildcache + cache-to: type=registry,ref=${{ env.IMAGE_BASE }}:buildcache,mode=max + test: + runs-on: buildjet-4vcpu-ubuntu-2204 + needs: build + timeout-minutes: 45 + steps: + - name: Start container + run: docker run -d --name zetacored -p 8545:8545 -e MONIKER=$(uuidgen) ${{ needs.build.outputs.IMAGE }} + - name: Wait for healthy + run: | + while ! curl -s -f -X POST --data '{\"jsonrpc\":\"2.0\",\"method\":\"web3_clientVersion\",\"params\":[],\"id\":67}' -H 'Content-Type: application/json' http://localhost:8545; do + if ! docker ps | grep zetacored; then + echo "Container stopped?" + exit 1 + fi + df -h / + echo "waiting for zetacored health" + sleep 15 + done + - name: Dump logs + if: always() + run: docker logs zetacored +