chore: main.yml #69
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: CI/CD using github actions & docker | |
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: make application.yml | |
run: | | |
cd ./src/main/resources | |
touch ./application.yml | |
echo "${{ secrets.APPLICATION }}" > ./application.yml | |
- name: Grant execute permission for gradlew | |
run: chmod +x gradlew | |
- name: set chmod | |
run: chmod +x ./gradlew | |
- name: Build with Gradle | |
run: ./gradlew build -x test | |
- name: List build/libs contents | |
run: ls -la build/libs | |
- name: Docker build | |
run: | | |
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} | |
docker build -t ${{ secrets.DOCKER_USERNAME }}/sopo . | |
docker push ${{ secrets.DOCKER_USERNAME }}/sopo:latest | |
- name: Deploy with SSH | |
if: github.ref == 'refs/heads/main' | |
uses: appleboy/ssh-action@master | |
with: | |
host: ${{ secrets.HOST }} # EC2 인스턴스 퍼블릭 DNS | |
username: ubuntu | |
key: ${{ secrets.PRIVATE_KEY }} # pem 키 | |
port: ${{ secrets.PORT }} # ssh port (22) | |
envs: GITHUB_SHA | |
script: | | |
script: | | |
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} | |
docker stop sopo | |
docker rm sopo | |
sudo docker pull redis:latest | |
sudo docker run -d --name redis -p 6379:6379 --network redis-network redis:latest | |
sudo docker rm -f sopo_redis sopo_app | |
docker rmi ${{ secrets.DOCKER_USERNAME }}/sopo:latest | |
docker pull ${{ secrets.DOCKER_USERNAME }}/sopo:latest | |
sudo docker run -d --name alimo_redis_new redis:latest | |
docker run -d -p 80:8080 --name sopo ${{ secrets.DOCKER_USERNAME }}/sopo:latest |