Merge pull request #368 from CSID-DGU/fix/expires-at-change-request-json #71
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI/CD to On-Prem Kubernetes with Helm | |
| on: | |
| push: | |
| branches: [ "main" ] | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: 📦 소스 코드 체크아웃 | |
| uses: actions/checkout@v4 | |
| - name: ☕️ JDK 17 설정 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| - name: 🛠 application.yml 생성 | |
| run: | | |
| mkdir -p ./src/main/resources | |
| echo "${{ secrets.APPLICATION }}" > ./src/main/resources/application.yml | |
| - name: ⚡ Gradle Build (테스트 제외) | |
| run: ./gradlew build -x test | |
| - name: 🐳 Docker Build & Push to Docker Hub | |
| run: | | |
| echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin | |
| docker build -t ${{ secrets.DOCKER_USERNAME }}/admin-prod:latest . | |
| docker push ${{ secrets.DOCKER_USERNAME }}/admin-prod:latest | |
| docker logout | |
| deploy: | |
| runs-on: ubuntu-latest | |
| needs: build | |
| steps: | |
| - name: 🚀 Helm을 통한 쿠버네티스 배포 | |
| uses: appleboy/ssh-action@v1.2.5 | |
| with: | |
| host: ${{ secrets.K8S_HOST }} | |
| port: ${{ secrets.K8S_PORT }} | |
| username: ${{ secrets.K8S_USERNAME }} | |
| key: ${{ secrets.K8S_PRIVATE_KEY }} | |
| script: | | |
| set -e # 실패 시 즉시 중단 | |
| export KUBECONFIG=/etc/kubernetes/ci-deployer.conf | |
| echo "✅ 쿠버네티스 연결 테스트" | |
| kubectl get nodes | |
| echo "📦 Helm 차트 배포 (절대 경로 사용)" | |
| helm upgrade --install admin-prod /opt/admin_be/helm/admin-prod \ | |
| --namespace default \ | |
| --create-namespace \ | |
| --set image.repository=${{ secrets.DOCKER_USERNAME }}/admin-prod \ | |
| --set image.tag=latest \ | |
| --set env.application="$(echo "${{ secrets.APPLICATION }}" | base64 -w 0)" \ | |
| --set args[0]="--spring.profiles.active=prod" \ | |
| --set forceReload=$(date +%s) | |
| echo "🎉 배포 완료!" |