chore: docker compose 적용 #39
Workflow file for this run
This file contains 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: develop Build And Deploy | |
on: | |
push: | |
branches: [ "develop" ] | |
pull_request: | |
branches: [ "develop" ] | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
environment: DEV | |
strategy: | |
matrix: | |
java-version: [ 17 ] | |
distribution: [ 'temurin' ] | |
outputs: | |
sha: ${{ steps.github-sha-short.outputs.sha }} | |
steps: | |
# 기본 체크아웃 | |
- name: Checkout | |
uses: actions/checkout@v3 | |
# JDK를 17 버전으로 세팅 | |
- name: Set up JDK 17 | |
uses: actions/setup-java@v3 | |
with: | |
java-version: ${{ matrix.java-version }} | |
distribution: ${{ matrix.distribution }} | |
# GITHUB SHA Short | |
- name: GitHub SHA Short | |
id: github-sha-short | |
run: echo "::set-output name=sha::$(echo ${GITHUB_SHA} | cut -c1-7)" | |
# Gradlew 실행 허용 | |
- name: Run chmod to make gradlew executable | |
run: chmod +x ./gradlew | |
# Gradle 빌드 | |
- name: Build with Gradle | |
id: gradle | |
uses: gradle/gradle-build-action@v2 | |
with: | |
arguments: | | |
build | |
--scan | |
cache-read-only: ${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/develop' }} | |
# NCP Container Registry 로그인 | |
- name: Login to NCP Container Registry | |
uses: docker/login-action@v3 | |
with: | |
registry: ${{ secrets.NCP_CONTAINER_REGISTRY }} | |
username: ${{ secrets.NCP_ACCESS_KEY }} | |
password: ${{ secrets.NCP_SECRET_KEY }} | |
# Docker 이미지 빌드 및 푸시 | |
- name: Docker Build and Push | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
push: true | |
tags: ${{ secrets.NCP_CONTAINER_REGISTRY }}/server-spring:${{ steps.github-sha-short.outputs.sha }} | |
# 서버로 docker-compose 파일 전송 | |
- name: Copy docker-compose.yml to NCP Server | |
uses: appleboy/scp-action@master | |
with: | |
host: ${{ secrets.NCP_HOST }} | |
username: tenminute | |
key: ${{ secrets.NCP_PRIVATE_KEY }} | |
port: ${{ secrets.NCP_PORT }} | |
source: docker-compose.yaml | |
target: / | |
deploy: | |
runs-on: ubuntu-latest | |
environment: DEV | |
needs: build | |
env: | |
NCP_CONTAINER_REGISTRY: ${{ secrets.NCP_CONTAINER_REGISTRY }} | |
NCP_IMAGE_TAG: ${{ needs.build.outputs.sha }} | |
steps: | |
- name: Login to NCP Server | |
uses: appleboy/ssh-action@master | |
with: | |
host: ${{ secrets.NCP_HOST }} | |
username: tenminute | |
key: ${{ secrets.NCP_PRIVATE_KEY }} | |
port: ${{ secrets.NCP_PORT }} | |
script: | | |
echo "${{ secrets.NCP_SECRET_KEY }}" | docker login -u "${{ secrets.NCP_ACCESS_KEY }}" --password-stdin "${{ secrets.NCP_CONTAINER_REGISTRY }}" | |
docker pull ${{ secrets.NCP_CONTAINER_REGISTRY }}/server-spring:${{ needs.build.outputs.sha }} | |
docker stop server-spring && docker rm server-spring | |
docker run -d --name server-spring -p 8080:8080 -d ${{ secrets.NCP_CONTAINER_REGISTRY }}/server-spring:${{ needs.build.outputs.sha }} |