Skip to content

[STMT-6] πŸ’š CI/CD dev ν…ŒμŠ€νŠΈμš© μ½”λ“œ μΆ”κ°€ #7

[STMT-6] πŸ’š CI/CD dev ν…ŒμŠ€νŠΈμš© μ½”λ“œ μΆ”κ°€

[STMT-6] πŸ’š CI/CD dev ν…ŒμŠ€νŠΈμš© μ½”λ“œ μΆ”κ°€ #7

Workflow file for this run

# github repository actions νŽ˜μ΄μ§€μ— λ‚˜νƒ€λ‚  이름
name: CI/CD using github actions & docker
# event trigger
on:
push:
branches: [ "dev", "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') || contains(github.ref, 'dev')
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