-
Notifications
You must be signed in to change notification settings - Fork 1
Github action
[Github Action 사용법 정리](https://zzsza.github.io/development/2020/06/06/github-action/)
-
코드
name: CI/CD Pipeline on: push: branches: - 'feature/cicd' # - 'main' # - 'dev' # pull_request: # branches: # - 'main' # - 'dev' jobs: ci-cd: runs-on: ubuntu-latest steps: - uses: 'actions/checkout@v3' - name: Set up JDK 17 uses: 'actions/setup-java@v3' with: java-version: '17' distribution: 'corretto' - name: Grant execute permission for gradlew run: chmod +x ./gradlew - name: Test with Gradle run: ./gradlew test - name: Build with Gradle run: ./gradlew build - name: Setup GCP Auth uses: 'google-github-actions/auth@v2' with: credentials_json: ${{ secrets.GCP_SA_KEY }} - name: Set up Cloud SDK uses: 'google-github-actions/setup-gcloud@v2' - name: Configure Docker run: gcloud auth configure-docker asia-northeast3-docker.pkg.dev - name: Create application-dev.yaml run: | echo "${{ secrets.APPLICATION_DEV_YAML }}" > ./src/main/resources/application-dev.yaml - name: Build and push Docker image to GCP Artifact Registry run: | docker build -t ${{ secrets.GCP_ARTIFACT_REGISTRY }}/tfinder:${{ github.sha }} . docker push ${{ secrets.GCP_ARTIFACT_REGISTRY }}/tfinder:${{ github.sha }} - name: Deploy to GCE instance run: | gcloud compute instances update-container "tfinder-vm" \ --zone "asia-northeast3-a" \ --container-image "${{ secrets.GCP_ARTIFACT_REGISTRY }}/tfinder:${{ github.sha }}"
-
코드 설명(gpt)
이 GitHub Actions 워크플로우는
feature/cicd브랜치에 대한 push 이벤트에 반응하여 CI/CD 파이프라인을 실행합니다. 이 파이프라인은 여러 단계로 구성되어 있으며, 각 작업은 Java 애플리케이션을 테스트, 빌드, 컨테이너화하고, Google Cloud Platform으로 배포하는 과정을 포함합니다.-
actions/checkout@v3: 이 액션은 GitHub Actions가 코드를 체크아웃하여 워크플로우가 실행되는 환경에 해당 코드를 가지고 올 수 있도록 해줍니다. 이를 통해 후속 단계에서 코드에 접근하고 작업을 수행할 수 있습니다. -
actions/setup-java@v3: 이 액션은 Java 개발 환경을 설정합니다. 여기서는 Java 17 버전을 사용하며, Amazon Corretto 배포판을 선택했습니다. 이는 Java 애플리케이션을 빌드하고 테스트하는 데 필요한 환경을 제공합니다. -
chmod +x ./gradlew: 이 명령어는 Gradle Wrapper 파일에 실행 권한을 부여합니다. 이는 Linux 기반 시스템에서 Gradle 명령을 실행할 수 있게 해줍니다. -
./gradlew test: 이 명령어는 Gradle을 사용하여 애플리케이션의 테스트를 실행합니다. 이 단계는 코드의 정확성을 검증하는 데 중요합니다. -
./gradlew build: 이 명령어는 애플리케이션을 빌드합니다. 이 과정에서 소스 코드는 실행 가능한 애플리케이션으로 컴파일되고 패키지됩니다. -
google-github-actions/auth@v2: 이 액션은 Google Cloud Platform(GCP)에 대한 인증을 설정합니다. 여기서는 GitHub Secrets에 저장된 서비스 계정 키를 사용하여 인증하며, 이는 GCP 리소스에 접근할 수 있는 권한을 부여합니다. -
google-github-actions/setup-gcloud@v2: 이 액션은 Google Cloud SDK를 설정합니다. 이는 GCP와 상호 작용하는 데 필요한 도구와 라이브러리를 제공합니다. -
gcloud auth configure-docker asia-northeast3-docker.pkg.dev: 이 명령어는 Docker 클라이언트를 GCP의 Artifact Registry와 인증하여 통신할 수 있도록 구성합니다. 이를 통해 Docker 이미지를 Artifact Registry로 푸시할 수 있습니다. -
docker build및docker push: 이 명령어들은 Docker 이미지를 빌드하고 GCP의 Artifact Registry로 푸시합니다. 이미지 태그는 GitHub 커밋 SHA를 사용하여 버전 관리됩니다. -
gcloud compute instances update-container "tfinder-vm": 이 명령어는 Google Compute Engine(GCE) 인스턴스에서 실행 중인 컨테이너를 새로운 이미지로 업데이트합니다. 이를 통해 배포된 애플리케이션을 최신 상태로 유지할 수 있습니다.
이 워크플로우는 코드 변경 사항을 자동으로 테스트하고, 빌드하며, GCP에 배포하는 CI/CD 파이프라인을 구현합니다. 이 과정은 개발 팀이 보다 효율적으로 작업하고, 애플리케이션을 안정적으로 배포할 수 있도록 돕습니다.
-
-
개념 같은 것은 위 블로그에서 정리가 잘돼있어서 확인하면 되고 ci는 금방 끝났음
-
ci과정을 간단하게 설명하면 실행환경 설정하고 코드 가져와서 테스트하고 빌드하는 게 끝이고 캐시를 활용하면 더 빠르다고 함
-
테스트 보여주는 거 참고
-
캐싱 활용(github action도 비용이 있음)
[[GitHub Actions] cache Action 사용해 반복되는 작업 캐싱하기](https://kotlinworld.com/399)
-
cd에서 진짜 시간 많이 잡아먹음, gce에 ssh 연결해서 이것저것 진짜 많이 해봤는데 gce인스턴스 설정을 잘못해서 도커 권한이 없어서 오류가 많이 발생했음, 이거는 gcp에서 설명할 것
-
gcloud 설치
-
application-dev.yaml파일 때문에 github action에서 서브모듈 권한 얻어서 처리해야함
[private 서브 모듈을 Github Actions에서 checkout 하고 사용하기](https://velog.io/@woody35545/private-서브-모듈을-github-actions에서-checkout-하기-위한-토큰-발급)