Skip to content

Workflow file for this run

name: Java CI with Gradle #수행할 Action명
#수행결과 확인할때 헷갈리지 않게 서비스명 적읍시다
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name : permission for gradlew #빌드 전 권한 부여
run : chmod +x gradlew
working-directory: ./user #빌드 할 경로 지정
- name: Build with Gradle #프로젝트 빌드
run : ./gradlew clean build --exclude-task test
working-directory: ./user
- name : 도커 이미지 빌드
run : docker build -t heesung98/weatheruser . #도커허브아이디/서비스명으로 정의
working-directory: ./user
- name : 도커 허브 로그인
uses : docker/login-action@v2
with :
username : ${{ secrets.WEATHER_USER_DOCKERHUB_USERNAME }} #레포지토리 시크릿 키값에 도커허브 아이디
password : ${{ secrets.WEATHER_USER_DOCKERHUB_TOKEN }} #이전에 발급한 토큰값
- name : 도커 퍼블리싱
run : docker push heesung98/weatheruser #빌드한 이미지 도커허브에 push
- name : ec2 접속 및 애플리케이션 실행
uses : appleboy/[email protected]
with :
host : ${{ secrets.EC2_HOST }} #배포할 인스턴스 ip
username : ubuntu #인스턴스 기본 username
key : ${{ secrets.EC2_PEMKEY }} #인스턴스 생성 시 발급받은 키페어
port : 22
script : | # 서버 셸스크립트 명령어 실행
echo "${{ secrets.APPLICATION_YML }}" | base64 --decode > /home/ubuntu/application.yml
sudo docker stop $(sudo docker ps -a -q)
sudo docker rm $(sudo docker ps -a -q)
sudo docker pull heesung98/weatheruser
sudo docker run -d -p 8080:8080 -v /home/ubuntu/application.yml:/app/config/application.yml heesung98/weatheruser
# 실행중인 컨테이너 중지
# 삭제
# 도커허브에서 이미지 최신버전 가져오기
#이미지 사용해 컨테이너 실행(포트번호 주의)