From 86e247f885c2d3285de58e9d63326a4807ea21df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cilhanu=E2=80=9D?= Date: Sun, 5 Feb 2023 12:04:48 +0100 Subject: [PATCH] change Docker build action --- .github/workflows/docker.yml | 75 +++++++++++++++++++++--------------- Dockerfile | 10 +++-- 2 files changed, 51 insertions(+), 34 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 60c95a2e..47d33e41 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -1,42 +1,55 @@ -name: docker-image-builder +# You need to add the following secrets to your GitHub Repository or Organization to make this work +# - DOCKER_USERNAME: The username of the DockerHub account. E.g. parity +# - DOCKER_TOKEN: Access token for DockerHub, see https://docs.docker.com/docker-hub/access-tokens/. E.g. VVVVVVVV-WWWW-XXXXXX-YYYY-ZZZZZZZZZ +# The following are setup as an environment variable below +# - DOCKER_REPO: The unique name of the DockerHub repository. E.g. parity/polkadot +name: Build & Publish Docker Image + +# Controls when the action will run. on: push: tags: - v* + # Triggers the workflow on push events but only for the main branch + # push: + # branches: [ main ] + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Set an environment variable (that can be overriden) for the Docker Repo env: - IMAGE_NAME: fs-node + DOCKER_REPO: ilhanu/fs-node +# A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: - docker: - runs-on: ubuntu-latest - permissions: - packages: write - contents: read - - steps: - - uses: actions/checkout@v3 - - - name: Build image - run: docker build . --file Dockerfile --tag $IMAGE_NAME --label "runnumber=${GITHUB_RUN_ID}" + build: + # The type of runner that the job will run on + runs-on: ubuntu-22.04 - - name: Log in to registry - run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $ --password-stdin - - - name: Push image - run: | - IMAGE_ID=ghcr.io/${{ github.repository_owner }}/$IMAGE_NAME + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - name: Check out the repo + uses: actions/checkout@v2.5.0 + + # Login to Docker hub using the credentials stored in the repository secrets + - name: Log in to Docker Hub + uses: docker/login-action@v2.1.0 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_TOKEN }} + + # Get the commit short hash, to use as the rev + - name: Calculate rev hash + id: rev + run: echo "value=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT - # Change all uppercase to lowercase - IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]') - # Strip git ref prefix from version - VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,') - # Strip "v" prefix from tag name - [[ "${{ github.ref }}" == "refs/tags/"* ]] && VERSION=$(echo $VERSION | sed -e 's/^v//') - # Use Docker `latest` tag convention - [ "$VERSION" == "master" ] && VERSION=latest - echo IMAGE_ID=$IMAGE_ID - echo VERSION=$VERSION - docker tag $IMAGE_NAME $IMAGE_ID:$VERSION - docker push $IMAGE_ID:$VERSION \ No newline at end of file + # Build and push 2 images, One with the version tag and the other with latest tag + - name: Build and push Docker images + uses: docker/build-push-action@v3.2.0 + with: + context: . + push: true + tags: ${{ env.DOCKER_REPO }}:v${{ steps.rev.outputs.value }}, ${{ secrets.DOCKER_REPO }}:latest diff --git a/Dockerfile b/Dockerfile index 2d20c3c6..730a5a94 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,15 @@ -FROM docker.io/paritytech/ci-linux:staging as builder +FROM docker.io/paritytech/ci-linux:production as builder WORKDIR /substrate COPY . /substrate RUN cargo build --release --locked FROM docker.io/library/ubuntu:20.04 -LABEL org.opencontainers.image.source = "https://github.com/Fair-Squares/fair-squares" +LABEL description="Docker image for Fair Squares Node Software" \ + image.source="https://github.com/Fair-Squares/fair-squares" \ + image.authors="hello@fair-squares.nl" \ + image.documentation="https://github.com/Fair-Squares/fair-squares" \ + image.vendor="Fair Squares" COPY --from=builder /substrate/target/release/fs-node /usr/local/bin @@ -19,6 +23,6 @@ RUN useradd -m -u 1000 -U -s /bin/sh -d /fs fs && \ USER fs EXPOSE 30333 9933 9944 9615 -VOLUME ["/data"] +VOLUME ["/chain-data"] CMD ["/usr/local/bin/fs-node"] \ No newline at end of file