From a05f15367965e2bca6a420e1fe2fb2a23026ed41 Mon Sep 17 00:00:00 2001 From: Vaclav Pavlin Date: Mon, 4 Sep 2023 10:47:12 +0200 Subject: [PATCH] chore(ci): enable experimental for the PR image builds (#1976) --- .github/workflows/ci-experimental.yml | 12 +++++ .github/workflows/ci.yml | 61 +++-------------------- .github/workflows/container-image.yml | 71 +++++++++++++++++++++++++++ 3 files changed, 90 insertions(+), 54 deletions(-) create mode 100644 .github/workflows/container-image.yml diff --git a/.github/workflows/ci-experimental.yml b/.github/workflows/ci-experimental.yml index cf64d12f4..b86ae1c90 100644 --- a/.github/workflows/ci-experimental.yml +++ b/.github/workflows/ci-experimental.yml @@ -42,9 +42,13 @@ jobs: - 'tests/all_tests_waku.nim' - 'tests/**' + docker: + - 'docker/**' + outputs: common: ${{ steps.filter.outputs.common }} v2: ${{ steps.filter.outputs.v2 }} + docker: ${{ steps.filter.outputs.docker }} build: needs: changes @@ -116,3 +120,11 @@ jobs: fi make V=1 LOG_LEVEL=DEBUG QUICK_AND_DIRTY_COMPILER=1 test testwakunode2 + + build-docker-image: + needs: changes + if: ${{ needs.changes.outputs.v2 == 'true' || needs.changes.outputs.common == 'true' || needs.changes.outputs.docker == 'true' }} + uses: waku-org/nwaku/.github/workflows/container-image.yml@master + with: + experimental: true + secrets: inherit diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index db9484571..f10674b31 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,9 +41,13 @@ jobs: - 'tests/all_tests_v2.nim' - 'tests/**' + docker: + - 'docker/**' + outputs: common: ${{ steps.filter.outputs.common }} v2: ${{ steps.filter.outputs.v2 }} + docker: ${{ steps.filter.outputs.docker }} build: needs: changes @@ -117,57 +121,6 @@ jobs: build-docker-image: needs: changes - if: ${{ needs.changes.outputs.v2 == 'true' || needs.changes.outputs.common == 'true' }} - strategy: - matrix: - os: [ubuntu-latest] - runs-on: ${{ matrix.os }} - timeout-minutes: 60 - - name: docker-build-${{ matrix.os }} - steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Get submodules hash - id: submodules - run: | - echo "hash=$(git submodule status | awk '{print $1}' | sort | shasum -a 256 | sed 's/[ -]*//g')" >> $GITHUB_OUTPUT - - - name: Cache submodules - uses: actions/cache@v3 - with: - path: | - vendor/ - .git/modules - key: ${{ runner.os }}-vendor-modules-${{ steps.submodules.outputs.hash }} - - - name: Build binaries - id: build - run: | - make -j${NPROC} V=1 QUICK_AND_DIRTY_COMPILER=1 NIMFLAGS="-d:disableMarchNative" wakunode2 - - TAG=$([ "${PR_NUMBER}" == "" ] && echo "master" || echo "${PR_NUMBER}") - IMAGE=quay.io/wakuorg/nwaku-pr:${TAG} - - echo "image=${IMAGE}" >> $GITHUB_OUTPUT - - docker login -u ${QUAY_USER} -p ${QUAY_PASSWORD} quay.io - docker build -t ${IMAGE} -f docker/binaries/Dockerfile.bn.amd64 --label quay.expires-after=7d . - docker push ${IMAGE} - env: - QUAY_PASSWORD: ${{ secrets.QUAY_PASSWORD }} - QUAY_USER: ${{ secrets.QUAY_USER }} - PR_NUMBER: ${{ github.event.number }} - - - name: Comment PR - uses: thollander/actions-comment-pull-request@v2 - if: ${{ github.event_name == 'pull_request' }} - with: - message: | - You can find the image built from this PR at - - ``` - ${{steps.build.outputs.image}} - ``` - comment_tag: execution + if: ${{ needs.changes.outputs.v2 == 'true' || needs.changes.outputs.common == 'true' || needs.changes.outputs.docker == 'true' }} + uses: waku-org/nwaku/.github/workflows/container-image.yml@master + secrets: inherit diff --git a/.github/workflows/container-image.yml b/.github/workflows/container-image.yml new file mode 100644 index 000000000..83ad2b844 --- /dev/null +++ b/.github/workflows/container-image.yml @@ -0,0 +1,71 @@ +name: container-image-build + +on: + workflow_call: + inputs: + experimental: + type: boolean + +env: + NPROC: 2 + MAKEFLAGS: "-j${NPROC}" + NIMFLAGS: "--parallelBuild:${NPROC}" + +jobs: + build-docker-image: + strategy: + matrix: + os: [ubuntu-latest] + runs-on: ${{ matrix.os }} + timeout-minutes: 60 + + name: docker-build-${{ matrix.os }} + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Get submodules hash + id: submodules + run: | + echo "hash=$(git submodule status | awk '{print $1}' | sort | shasum -a 256 | sed 's/[ -]*//g')" >> $GITHUB_OUTPUT + + - name: Cache submodules + uses: actions/cache@v3 + with: + path: | + vendor/ + .git/modules + key: ${{ runner.os }}-vendor-modules-${{ steps.submodules.outputs.hash }} + + - name: Build binaries + id: build + run: | + EXPERIMENTAL=${{ inputs.experimental }} + + make -j${NPROC} V=1 QUICK_AND_DIRTY_COMPILER=1 NIMFLAGS="-d:disableMarchNative" wakunode2 EXPERIMENTAL=${{EXPERIMENTAL}} + + TAG=$([ "${PR_NUMBER}" == "" ] && echo "master" || echo "${PR_NUMBER}") + TAG=$([ "${EXPERIMENTAL}" == "true" ] && echo "${TAG}-experimental" || echo "${TAG}") + IMAGE=quay.io/wakuorg/nwaku-pr:${TAG} + + echo "image=${IMAGE}" >> $GITHUB_OUTPUT + + docker login -u ${QUAY_USER} -p ${QUAY_PASSWORD} quay.io + docker build -t ${IMAGE} -f docker/binaries/Dockerfile.bn.amd64 --label quay.expires-after=7d . + docker push ${IMAGE} + env: + QUAY_PASSWORD: ${{ secrets.QUAY_PASSWORD }} + QUAY_USER: ${{ secrets.QUAY_USER }} + PR_NUMBER: ${{ github.event.number }} + + - name: Comment PR + uses: thollander/actions-comment-pull-request@v2 + if: ${{ github.event_name == 'pull_request' }} + with: + message: | + You can find the ${{ inputs.experimental && '**experimental**' || ''}} image built from this PR at + + ``` + ${{steps.build.outputs.image}} + ``` + comment_tag: execution${{ inputs.experimental && '**experimental**' || ''}}