From c9c5bb18ccfd69bac8d330f1dab66592d1481c1e Mon Sep 17 00:00:00 2001 From: Nikita Melnikov Date: Thu, 9 Nov 2023 16:28:34 +0100 Subject: [PATCH 1/4] add workflow for building docker image --- .github/workflows/build.yaml | 53 ++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 .github/workflows/build.yaml diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 00000000..dd7d540a --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,53 @@ +name: Build and push Docker image + +on: + push: + branches: + - main + - build-workflow # todo remove before merge + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Get full image name + id: base_image_name + env: + BASE_IMAGE_NAME: ${{ github.repository }} + REGISTRY: ghcr.io + run: | + if [[ $GITHUB_REF == refs/tags/* ]]; then + echo "image_name=${REGISTRY}/${BASE_IMAGE_NAME}" >> $GITHUB_OUTPUT + else + echo "image_name=${REGISTRY}/${BASE_IMAGE_NAME}/staging" >> $GITHUB_OUTPUT + fi + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ github.token }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ steps.base_image_name.outputs.image_name }} + tags: | + type=raw,value=latest,enable={{is_default_branch}} + type=raw,value={{branch}}-{{sha}}-{{date 'X'}},enable=${{ startsWith(github.ref, 'refs/heads') }} + type=semver,pattern={{version}},prefix=v + type=semver,pattern={{major}}.{{minor}},prefix=v + + - name: Build and push image + uses: docker/build-push-action@v5 + with: + context: . + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + push: true From e9f85fd0b40bd67a665b396669b489c7f7dd1614 Mon Sep 17 00:00:00 2001 From: Nikita Melnikov Date: Fri, 10 Nov 2023 18:38:20 +0100 Subject: [PATCH 2/4] update image name for workflow --- .github/workflows/build.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index dd7d540a..abe3c887 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -20,7 +20,7 @@ jobs: BASE_IMAGE_NAME: ${{ github.repository }} REGISTRY: ghcr.io run: | - if [[ $GITHUB_REF == refs/tags/* ]]; then + if [[ $GITHUB_REF == refs/heads/main ]]; then echo "image_name=${REGISTRY}/${BASE_IMAGE_NAME}" >> $GITHUB_OUTPUT else echo "image_name=${REGISTRY}/${BASE_IMAGE_NAME}/staging" >> $GITHUB_OUTPUT @@ -40,7 +40,7 @@ jobs: images: ${{ steps.base_image_name.outputs.image_name }} tags: | type=raw,value=latest,enable={{is_default_branch}} - type=raw,value={{branch}}-{{sha}}-{{date 'X'}},enable=${{ startsWith(github.ref, 'refs/heads') }} + type=raw,value={{sha}}-{{date 'X'}},enable=${{ startsWith(github.ref, 'refs/heads') }} type=semver,pattern={{version}},prefix=v type=semver,pattern={{major}}.{{minor}},prefix=v From 4b6c4a5d73fd687ed8a423498a716548a20448f7 Mon Sep 17 00:00:00 2001 From: Nikita Melnikov Date: Wed, 15 Nov 2023 10:20:51 +0100 Subject: [PATCH 3/4] add caching, change image name --- .github/workflows/build.yaml | 25 ++++--------------------- 1 file changed, 4 insertions(+), 21 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index abe3c887..6893767a 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -2,9 +2,6 @@ name: Build and push Docker image on: push: - branches: - - main - - build-workflow # todo remove before merge workflow_dispatch: jobs: @@ -14,18 +11,6 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 - - name: Get full image name - id: base_image_name - env: - BASE_IMAGE_NAME: ${{ github.repository }} - REGISTRY: ghcr.io - run: | - if [[ $GITHUB_REF == refs/heads/main ]]; then - echo "image_name=${REGISTRY}/${BASE_IMAGE_NAME}" >> $GITHUB_OUTPUT - else - echo "image_name=${REGISTRY}/${BASE_IMAGE_NAME}/staging" >> $GITHUB_OUTPUT - fi - - name: Login to GitHub Container Registry uses: docker/login-action@v3 with: @@ -37,17 +22,15 @@ jobs: id: meta uses: docker/metadata-action@v5 with: - images: ${{ steps.base_image_name.outputs.image_name }} + images: ghcr.io/${{ github.repository }}/tmp tags: | - type=raw,value=latest,enable={{is_default_branch}} - type=raw,value={{sha}}-{{date 'X'}},enable=${{ startsWith(github.ref, 'refs/heads') }} - type=semver,pattern={{version}},prefix=v - type=semver,pattern={{major}}.{{minor}},prefix=v + type=raw,value={{branch}}-{{sha}}-{{date 'X'}} - name: Build and push image uses: docker/build-push-action@v5 with: - context: . tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max push: true From 5834e3c76f47c688d453352cac7a28c0c47de1ae Mon Sep 17 00:00:00 2001 From: Nikita Melnikov Date: Wed, 15 Nov 2023 10:25:23 +0100 Subject: [PATCH 4/4] add buildx setup --- .github/workflows/build.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 6893767a..b383d4f6 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -18,6 +18,9 @@ jobs: username: ${{ github.actor }} password: ${{ github.token }} + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Extract metadata (tags, labels) for Docker id: meta uses: docker/metadata-action@v5