Skip to content

[STMT-6, STMT-151] โœจ๐Ÿ‘ท CI/CD๋ฅผ ์œ„ํ•œ github actions workflow ๊ตฌ์ถ• ๋ฐ ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธโ€ฆ #6

[STMT-6, STMT-151] โœจ๐Ÿ‘ท CI/CD๋ฅผ ์œ„ํ•œ github actions workflow ๊ตฌ์ถ• ๋ฐ ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธโ€ฆ

[STMT-6, STMT-151] โœจ๐Ÿ‘ท CI/CD๋ฅผ ์œ„ํ•œ github actions workflow ๊ตฌ์ถ• ๋ฐ ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธโ€ฆ #6

Workflow file for this run

# github repository actions ํŽ˜์ด์ง€์— ๋‚˜ํƒ€๋‚  ์ด๋ฆ„
name: CI/CD using github actions & docker
# event trigger
on:
push:
branches: [ "main" ]
permissions:
contents: read
jobs:
CI-CD:
runs-on: ubuntu-latest
steps:
# JDK setting
- name: Checkout
uses: actions/checkout@v4
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
- name: set environment variables
working-directory: ./
run: |
touch src/main/resources/application-secret.properties
echo ${{ secrets.ENV }} >> src/main/resources/application-secret.properties
# gradle caching - ๋นŒ๋“œ ์‹œ๊ฐ„ ํ–ฅ์ƒ
- name: Gradle Caching
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
# docker login
- name: Login to Docker Hub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
# build gradle
- name: Build gradlew
run: |
chmod +x gradlew
./gradlew jib \
-Djib.from.auth.username=${{ secrets.DOCKER_USERNAME }} \
-Djib.from.auth.password=${{ secrets.DOCKER_PASSWORD }} \
-Dspring.profiles.active=prod
## deploy to production
- name: Deploy to prod
uses: appleboy/ssh-action@master
id: deploy-prod
if: contains(github.ref, 'main')
with:
host: ${{ secrets.AWS_PUBLIC_IP }}
username: ${{ secrets.AWS_USER }}
key: ${{ secrets.AWS_PRIVATE_KEY }}
port: ${{ secrets.AWS_SSH_PORT }}
script: |
sudo docker pull ${{ secrets.DOCKER_USERNAME }}/server
sudo docker stop stumeet-server
docker container prune -f
sudo docker-compose up -d --no-deps --force-recreate stumeet-server
sudo docker image prune -f