Skip to content

chore/#100 Github Actions, Docker를 이용한 CD #3

chore/#100 Github Actions, Docker를 이용한 CD

chore/#100 Github Actions, Docker를 이용한 CD #3

name: CD using github actions & docker
on:
pull_request:
branches: [ "main", "develop" ]
permissions:
contents: read
jobs:
build-docker-image:
runs-on: ubuntu-latest
steps:
- name: get repo from github
uses: actions/checkout@v3
# JDK setting
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
# gradle 빌드
- name: Setup Gradle
run: chmod +x gradlew
- name: Build with Gradle Wrapper
run: ./gradlew build -p aics-api -x test
# DockerHub 로그인
- name: Docker login
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
# Docker 이미지 빌드
- name: Docker image build
run: docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/aics-api:latest .
# Docker Hub 이미지 푸시
- name: docker Hub push
run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/aics-api:latest
deploy-to-dev:
runs-on: ubuntu-latest
needs: build-docker-image
steps:
- name: Deploy to dev
uses: appleboy/ssh-action@v1.1.0
id: deploy-dev
if: contains(github.ref, 'develop')
with:
host: ${{ secrets.HOST_DEV }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
port: ${{ secrets.PORT }}
script: |
sudo docker-compose pull ${{ secrets.DOCKERHUB_USERNAME }}/aics-api:latest
sudo docker-compose up -d