Skip to content

배포 테스트

배포 테스트 #77

Workflow file for this run

name: Java CI with Gradle
on:
push:
branches: [ "release-test" ]
pull_request:
branches: [ "develop" ]
jobs:
build:
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: Setup Gradle
uses: gradle/actions/setup-gradle@af1da67850ed9a4cedd57bfd976089dd991e2582 # v4.0.0
- name: Grant for gradlew
run: chmod +x ./gradlew
shell: bash
- name: Generate YAML Configuration Files
run: |
mkdir -p ./RevUp-domain/src/main/resources
echo "${{ secrets.DOMAIN_VARIABLE_YML }}" > ./RevUp-domain/src/main/resources/domain-variable.yaml
mkdir -p ./RevUp-infra/src/main/resources
echo "${{ secrets.INFRA_VARIABLE_YML }}" > ./RevUp-infra/src/main/resources/infra-variable.yaml
mkdir -p ./RevUp-common/src/main/resources
echo "${{ secrets.COMMON_VARIABLE_YML }}" > ./RevUp-common/src/main/resources/common-variable.yaml
mkdir -p ./RevUp-security/src/main/resources
echo "${{ secrets.SECURITY_VARIABLE_YML }}" > ./RevUp-security/src/main/resources/security-variable.yaml
- name: Build with Gradle Wrapper
run: ./gradlew bootJar
- name: Docker build
run: |
JAR_FILE=$(find ./RevUp-api/build/libs -name "*.jar" | head -n 1)
if [ -z "$JAR_FILE" ]; then
echo "JAR file not found! Ensure ./gradlew bootJar executed successfully."
exit 1
fi
echo "Using JAR file: $JAR_FILE"
docker login -u ${{ secrets.MINU_DOCKERHUB_USERNAME }} -p ${{ secrets.MINU_DOCKERHUB_PASSWORD }}
docker build --build-arg JAR_FILE=$JAR_FILE -t ${{ secrets.MINU_DOCKERHUB_USERNAME }}/revup:latest .
docker push ${{ secrets.MINU_DOCKERHUB_USERNAME }}/revup:latest
- name: Copy docker-compose.yml to EC2
run: |
echo "${{ secrets.MINU_EC2_PRIVATE_KEY }}" > private_key.pem
chmod 600 private_key.pem
scp -i private_key.pem -o StrictHostKeyChecking=no docker-compose.yml ${{ secrets.MINU_SSH_USER }}@${{ secrets.MINU_KNOWN_HOSTS }}:/home/ubuntu/
- name: Deploy
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.MINU_KNOWN_HOSTS }} # EC2 인스턴스 퍼블릭 DNS
username: ${{secrets.MINU_SSH_USER}}
key: ${{ secrets.MINU_EC2_PRIVATE_KEY }} # pem 키
# 도커 작업
script: |
sudo docker pull ${{ secrets.MINU_DOCKERHUB_USERNAME }}/revup:latest
sudo docker compose up -d
sudo docker compose logs -f
echo "Waiting for Spring Boot to start..."
sleep 40 # Adjust this time if necessary depending on your app startup time
sudo docker compose ps
sudo docker image prune -f
- name: Check docker-compose status
run: |
sudo docker compose ps
sudo docker compose logs