From 4ca645534a0c7fb4b859204ee7b218223f43459e Mon Sep 17 00:00:00 2001 From: Kimdoyoung <52124111+dev-kimdoyoung@users.noreply.github.com> Date: Wed, 22 Nov 2023 21:28:48 +0900 Subject: [PATCH] =?UTF-8?q?[Feature/kustomize]=20CI/CD=20=EB=B0=B0?= =?UTF-8?q?=ED=8F=AC=20=EC=9E=90=EB=8F=99=ED=99=94=EB=A5=BC=20=EC=9C=84?= =?UTF-8?q?=ED=95=9C=20CI=20=EC=BD=94=EB=93=9C=20=EC=9E=91=EC=84=B1=20?= =?UTF-8?q?=EC=99=84=EB=A3=8C=20(#15)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. GO Build - GO 1.21.x 버전으로 Build 테스트 2. Docker Build - Dockerfile 기반으로 Build 테스트 3. Docker Private Registry push - NCP Registry에 Docker Image Push 4. Push image tag CICD Repo - aviator-cicd repo에 image tag 업데이트 --- .github/workflows/go.yml | 77 +++++++++++++++++++++++++++++++++++----- Dockerfile | 2 +- 2 files changed, 69 insertions(+), 10 deletions(-) diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index f0d2a28..91ddb36 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -8,11 +8,76 @@ on: branches: - master - develop + - feature/** + +env: + PRIVATE_REGISTRY_URL: "aviator-registry.kr.ncr.ntruss.com" + SERVICE_NAME: "aviator" jobs: - deploy: + build: runs-on: ubuntu-latest + strategy: + matrix: + go-version: ['1.21.x'] + steps: + - uses: actions/checkout@v4 + + - name: Setup Go ${{ matrix.go-version }} + uses: actions/setup-go@v4 + with: + go-version: ${{ matrix.go-version }} + + # You can test your matrix by printing the current Go version + - name: Display Go version + run: go version + + build-and-push-image: + name: Push Docker image to Docker Hub + runs-on: ubuntu-latest + needs: build + + permissions: + contents: read + packages: write + + steps: + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Check out the repo + uses: actions/checkout@v4 + + ### Private Docker Registry Login + - name: Log in to the Container registry + uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 + with: + registry: ${{ env.PRIVATE_REGISTRY_URL }} + username: ${{ secrets.PRIVATE_REGISTRY_USERNAME }} + password: ${{ secrets.PRIVATE_REGISTRY_PASSWORD }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 + with: + images: ${{ env.PRIVATE_REGISTRY_URL }}/${{ env.SERVICE_NAME }} + + ### Private Registry push + - name: Build and push Docker image + uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4 + with: + context: . + push: true + tags: ${{ env.PRIVATE_REGISTRY_URL }}/${{ env.SERVICE_NAME }}:${{ github.sha }} + labels: ${{ github.sha }} + + deploy: + runs-on: ubuntu-latest + needs: build-and-push-image steps: - uses: actions/labeler@v2 with: @@ -25,12 +90,6 @@ jobs: echo VERSION=$VERSION echo "::set-output name=version::$VERSION" - ### Private Docker Registry 정보 가져오기 - - ### Docker Build - - ### Docker Registry에 image push - # kustomize 명령을 가져온다. - name: Setup Kustomize uses: imranismail/setup-kustomize@v1 @@ -47,7 +106,7 @@ jobs: - name: Update Kubernetes resources run: | cd prd - kustomize edit set image ${{ env.IMAGE_NAME }}:${{ steps.image.outputs.version }} + kustomize edit set image ${{ env.PRIVATE_REGISTRY_URL }}/${{ env.SERVICE_NAME }}:${{ github.sha }} cat kustomization.yaml # 수정된 파일 commit & push @@ -55,5 +114,5 @@ jobs: run: | git config user.name github-actions git config user.email github-actions@github.com - git commit -am "Update image tag ${{ env.IMAGE_NAME }}:${{ steps.image.outputs.version }}" + git commit -am "Update image tag ${{ env.PRIVATE_REGISTRY_URL }}/${{ env.SERVICE_NAME }}:${{ github.sha }}" git push origin main diff --git a/Dockerfile b/Dockerfile index c389c09..aa74435 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Build the manager binary -FROM golang:1.20 as builder +FROM golang:1.21 as builder ARG TARGETOS ARG TARGETARCH