diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 1a43c8b..91ddb36 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -10,10 +10,74 @@ on: - 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: @@ -26,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 @@ -48,8 +106,7 @@ jobs: - name: Update Kubernetes resources run: | cd prd - echo $IMAGE_PATH - kustomize edit set image aviator-registry.kr.ncr.ntruss.com/aviator:${{ steps.image.outputs.version }} + kustomize edit set image ${{ env.PRIVATE_REGISTRY_URL }}/${{ env.SERVICE_NAME }}:${{ github.sha }} cat kustomization.yaml # 수정된 파일 commit & push @@ -57,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_PATH }}:${{ 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