diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000000..a16527a88f --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,52 @@ +name: CI Build and Deploy + +on: + pull_request: + types: + - closed + +jobs: + build: + if: contains(github.event.pull_request.labels.*.name, 'CI:Build') + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Log in to Docker Hub + run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin + + - name: Build Docker image + run: | + docker build -t ipangelov/go-ethereum:latest . + + - name: Push Docker image to Docker Hub + run: | + docker push ipangelov/go-ethereum:latest + + deploy: + if: contains(github.event.pull_request.labels.*.name, 'CI:Deploy') + runs-on: ubuntu-latest + needs: build + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Start local devnet + run: | + docker-compose up -d + + - name: Deploy Hardhat contracts + run: | + cd hardhat + npx hardhat run scripts/deploy.js --network localhost + + - name: Build & push pre-deployed contracts image + run: | + docker commit $(docker ps -q --filter ancestor=ipangelov/go-ethereum:latest) ipangelov/go-ethereum:contracts + docker push ipangelov/go-ethereum:contracts + + - name: Run Hardhat tests + run: | + cd hardhat + npx hardhat test