From 49b77c8d8c2849bc12703f0e516b24f7a60fd864 Mon Sep 17 00:00:00 2001 From: kogeler <25884155+kogeler@users.noreply.github.com> Date: Sat, 13 Jul 2024 11:37:11 +0300 Subject: [PATCH] Docker image CI was added (#12) --- .github/workflows/docker.yml | 64 ++++++++++++++++++++++++++++++++++++ .github/workflows/pr.yml | 20 +++++++++++ docker/subql-node-Dockerfile | 12 +++++++ 3 files changed, 96 insertions(+) create mode 100644 .github/workflows/docker.yml create mode 100644 .github/workflows/pr.yml create mode 100644 docker/subql-node-Dockerfile diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 0000000..b2bb658 --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,64 @@ +name: Build and push Docker images + +on: + push: + branches: + - main + - dev + tags: + - 'v*' + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} +jobs: + build-docker-images: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + strategy: + fail-fast: false + matrix: + node-js-image-version: [20] + subql-node-image-version: [v4.7.0] + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Log in to Container registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + - name: Set image label for the main branch + if: ${{ github.ref_type == 'branch' && github.ref_name == 'main' }} + run: | + echo "IMAGE_LABEL=latest" >> "$GITHUB_ENV" + - name: Set image label for a tag or other branches + if: ${{ github.ref_type == 'tag' || (github.ref_type == 'branch' && github.ref_name != 'main') }} + run: | + echo "IMAGE_LABEL=${{ github.ref_name }}" >> "$GITHUB_ENV" + - name: Set full name of the Docker image + run: | + echo "FULL_IMAGE_NAME=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_LABEL }}-node-js-${{ matrix.node-js-image-version }}-subql-node-${{ matrix.subql-node-image-version }}" >> "$GITHUB_ENV" + - name: Build and push Docker image + uses: docker/build-push-action@v6 + with: + file: docker/subql-node-Dockerfile + push: true + load: true + labels: ${{ steps.meta.outputs.labels }} + build-args: | + NODE_JS_IMAGE_VERSION=${{ matrix.node-js-image-version }}-alpine + SUBQL_NODE_IMAGE_VERSION=${{ matrix.subql-node-image-version }} + tags: ${{ env.FULL_IMAGE_NAME }} diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml new file mode 100644 index 0000000..44f0a2d --- /dev/null +++ b/.github/workflows/pr.yml @@ -0,0 +1,20 @@ +name: PR check +on: + pull_request: + +jobs: + pr: + name: build project + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Setup Node.js environment + uses: actions/setup-node@v4 + with: + node-version: 20 + - name: Install + run: yarn install + - name: Codegen + run: yarn codegen + - name: Build + run: yarn build diff --git a/docker/subql-node-Dockerfile b/docker/subql-node-Dockerfile new file mode 100644 index 0000000..278e4fe --- /dev/null +++ b/docker/subql-node-Dockerfile @@ -0,0 +1,12 @@ +ARG NODE_JS_IMAGE_VERSION=20-alpine +ARG SUBQL_NODE_IMAGE_VERSION=v4.7.0 + +FROM node:${NODE_JS_IMAGE_VERSION} AS build + +ADD . /project +WORKDIR /project +RUN yarn install && yarn codegen && yarn build + +FROM onfinality/subql-node:${SUBQL_NODE_IMAGE_VERSION} + +COPY --from=build /project /project