728x90
목차
Workflow 작성 전 Secrets, Variables 설정
spring-cloud-hlem의 git token을 먼저 발급해야 한다.
Git token 발급
좌측 하단에 Developer settings 클릭 후 Personal access tokens > Fine-grained tokens에 접속한다.
Generate new token을 클릭한 후 아래 화면에 필요한 내용들을 작성 및 선택한다.
Secrets, Variables 설정
GIT_TOKEN을 등록한 동일한 방법으로 아래 3가지도 등록한다.
DOCKER_HUB_REGISTRY_NAME
DOCKER_USERNAME
DOCKER_PASSWORD
Github actions - workflow 작성
![](https://blog.kakaocdn.net/dn/c6vsg3/btsGpUZHGWf/a6Bkczy1qXrTeqxN8djWQk/img.png)
![](https://blog.kakaocdn.net/dn/2GIqa/btsGqsg5eWU/USRNAMCnEkrBJxie6j7VBK/img.png)
![](https://blog.kakaocdn.net/dn/YWsfz/btsGp4ntu9P/N2KmeQd1IfHIMKbh2xzNUK/img.png)
name: Image CI discovery-service
# main 브랜치 push & discovery-service의 변경 내역이 있는 경우
on:
push:
branches: [ "main" ]
paths:
- 'discovery-service/**'
env:
GIT_TOKEN: ${{ secrets.GIT_TOKEN }} # helm chart가 존재하는 github target repository에 token이 있어야 접근 가능
TARGET_REPOSITORY: ${{ vars.TARGET_REPOSITORY }} # helm chart github path : ex) Parkjinman/discovery-helm
SEQUENCE_NUMBER: ${{ github.run_number }} # workflow 생성 순번 - 이미지 tag 이름을 짓기 위해 필요요
DOCKER_HUB_REGISTRY_NAME: ${{ secrets.DOCKER_HUB_REGISTRY_NAME }} # docker hub 접속 url
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} # docker hub username
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} # docker hub password
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
- name: Gradle Caching
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Setup Gradle
uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0
with:
gradle-version: '8.5'
- name: Build with Gradle 8.5
run: |
cd discovery-service
gradle clean build --exclude-task test
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: docker hub login
run: echo "${{ env.DOCKER_PASSWORD }}" | docker login -u "${{ env.DOCKER_USERNAME }}" --password-stdin
- name: Build the Docker image
run: |
cd discovery-service
docker build -t woodpecker-msa-discovery-service .
docker tag woodpecker-msa-discovery-service ${{ env.DOCKER_HUB_REGISTRY_NAME }}/woodpecker-msa-discovery-service:${{ env.SEQUENCE_NUMBER }}
- name: Push Docker image to Docker Hub
run: docker push ${{ env.DOCKER_HUB_REGISTRY_NAME }}/woodpecker-msa-discovery-service:${{ env.SEQUENCE_NUMBER }}
- uses: actions/checkout@v4
with:
repository: ${{ env.TARGET_REPOSITORY }}
token: ${{ env.GIT_TOKEN }}
- uses: fjogeleit/yaml-update-action@main
with:
valueFile: 'values.yaml'
value: ${{ env.SEQUENCE_NUMBER }}
propertyPath: 'deployment.discovery.image.tag'
message: 'ci: Update image tag to ${{ env.SEQUENCE_NUMBER }}'
commitChange: true
branch: main
repository: ${{ env.TARGET_REPOSITORY }}
token: ${{ env.GIT_TOKEN }}
![](https://blog.kakaocdn.net/dn/d28kl2/btsGqvriJZH/WFQuQMQxT5W6yOQkFh6Y6K/img.png)
Github commit & push 하여 workflow 테스트
성공했다면 argocd에서는 default로 설정했기 때문에 3분 후에 자동 적용한다.
즉시 적용하고 싶다면 REFRESH를 클릭하자!
728x90
'Infrastructure > Docker & Kubernetes' 카테고리의 다른 글
[kubernetes] pv, pvc, storageClass 개념 (0) | 2024.04.16 |
---|---|
[kubernetes] on-premise 내부 환경 적합한 Service Type 비교 (0) | 2024.04.11 |
[kubernetes] CI&CD 2탄 - Spring-cloud를 활용해 만든 msa framework를 k8s에 배포하기 (0) | 2024.04.07 |
[kubernetes] CI&CD 4탄 - Argocd Github 연동 및 APP 설정으로 k8s환경에 배포하기 (2) | 2024.04.06 |
[kubernetes] CI&CD 3탄 - Argocd 설치 및 로그인 (2) | 2024.04.06 |