CD for Release #5
Workflow file for this run
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
| # github repository actions 페이지에 나타날 이름 | |
| name: CD for Release | |
| # event trigger | |
| on: | |
| release: | |
| types: [created] | |
| permissions: | |
| contents: read | |
| jobs: | |
| Release-CD: | |
| runs-on: ubuntu-latest | |
| env: | |
| DOCKER_CLIENT_TIMEOUT: 600 | |
| COMPOSE_HTTP_TIMEOUT: 600 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: 'Set up JDK' | |
| uses: actions/[email protected] | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| - name: Extract release version | |
| id: version | |
| run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT | |
| - run: touch ./Dockerfile | |
| - run: echo "${{ secrets.DEV_DOCKERFILE }}" > ./Dockerfile | |
| # gradle caching - 빌드 시간 향상 | |
| - name: Gradle Caching | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.gradle/caches | |
| ~/.gradle/wrapper | |
| key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} | |
| restore-keys: | | |
| ${{ runner.os }}-gradle- | |
| # gradle build | |
| - name: Build with Gradle | |
| run: | | |
| chmod +x ./gradlew | |
| ./gradlew build -x test | |
| # docker build & push | |
| - name: Docker build & push | |
| run: | | |
| docker login clap.kr-central-2.kcr.dev -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} | |
| docker build -t ${{ secrets.DOCKER_REPO }}:${{ steps.version.outputs.VERSION }} -t ${{ secrets.DOCKER_REPO }}:latest . | |
| docker push ${{ secrets.DOCKER_REPO }}:${{ steps.version.outputs.VERSION }} | |
| docker push ${{ secrets.DOCKER_REPO }}:latest | |
| - name: Update Kubernetes Deployment | |
| run: | | |
| envsubst < ./taskflow.yaml | |
| env: | |
| IMAGE_TAG: ${{ steps.version.outputs.VERSION }} | |
| # deploy | |
| - name: Transport taskflow.yaml to kubectl server | |
| uses: appleboy/scp-action@master | |
| with: | |
| host: ${{ secrets.KUBE_HOST }} | |
| username: ${{ secrets.KUBE_HOST_USERNAME }} | |
| key: ${{ secrets.KUBE_HOST_KEY }} | |
| port: ${{ secrets.KUBE_HOST_PORT }} | |
| overwrite: true | |
| source: ./taskflow.yaml | |
| target: ~/taskflow-back.yaml | |
| - name: Deploy | |
| uses: appleboy/ssh-action@master | |
| id: deploy | |
| with: | |
| host: ${{ secrets.KUBE_HOST }} | |
| username: ${{ secrets.KUBE_HOST_USERNAME }} | |
| key: ${{ secrets.KUBE_HOST_KEY }} | |
| port: ${{ secrets.KUBE_HOST_PORT }} | |
| script: | | |
| kubectl apply --filename taskflow-back.yaml | |