테스트 코드 작성 및 오류 검출로 인한 수정 #66
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: PR Review and CI/CD | |
on: | |
pull_request: | |
branches: [ "main" ] | |
push: | |
branches: [ "main" ] | |
permissions: | |
contents: read | |
pull-requests: write | |
jobs: | |
code-review: | |
if: github.event_name == 'pull_request' && github.ref == 'refs/heads/main' | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
java-version: [ 17 ] | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Set up Java | |
uses: actions/setup-java@v3 | |
with: | |
java-version: ${{ matrix.java-version }} | |
distribution: 'adopt' | |
- name: Grant execute permission for gradlew | |
run: chmod +x ./gradlew | |
- name: Cache SonarCloud packages | |
uses: actions/cache@v3 | |
with: | |
path: ~/.sonar/cache | |
key: ${{ runner.os }}-sonar | |
restore-keys: ${{ runner.os }}-sonar | |
- name: Setup Gradle | |
uses: gradle/gradle-build-action@v2 | |
with: | |
arguments: check | |
- name: SonarCloud scan | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} | |
run: ./gradlew sonar --info --stacktrace | |
build-and-deploy: | |
if: github.event_name == 'push' && github.ref == 'refs/heads/main' | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up JDK 17 | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '17' | |
distribution: 'temurin' | |
- name: make configs files | |
run: | | |
cd ./src/main/resources | |
touch ./application-db.yml | |
touch ./application-auth.yml | |
touch ./application-server.yml | |
touch ./application-swagger.yml | |
touch ./application-aws.yml | |
touch ./application-monitor.yml | |
echo "${{ secrets.DB }}" >> ./application-db.yml | |
echo "${{ secrets.AUTH }}" >> ./application-auth.yml | |
echo "${{ secrets.SERVER }}" >> ./application-server.yml | |
echo "${{ secrets.SWAGGER }}" >> ./application-swagger.yml | |
echo "${{ secrets.AWS }}" >> ./application-aws.yml | |
echo "${{ secrets.MONITOR }}" >> ./application-monitor.yml | |
shell: bash | |
- name: Build with Gradle | |
run: | | |
sudo chmod +x ./gradlew | |
./gradlew bootJar | |
- name: docker login | |
run: docker login -u ${{ secrets.DOCKER_ID }} -p ${{ secrets.DOCKER_PASSWORD }} | |
- name: docker image build | |
run: docker build -t ${{ secrets.DOCKER_ID }}/oxox-backend . | |
- name: docker push | |
run: docker push ${{ secrets.DOCKER_ID }}/oxox-backend | |
- name: executing remote ssh commands using password | |
uses: appleboy/ssh-action@master | |
with: | |
host: ${{ secrets.EC2_HOST }} | |
username: ubuntu | |
key: ${{ secrets.EC2_KEY }} | |
script: | | |
sudo docker compose down | |
sudo docker pull ${{ secrets.DOCKER_ID }}/oxox-backend | |
sudo docker image prune -f | |
sudo docker compose up -d |