test: 깃액션 테스트 #20
This file contains hidden or 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 Pipeline (planova-server) | |
| on: | |
| push: | |
| branches: | |
| - main | |
| jobs: | |
| deploy: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Set up Java 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: "17" | |
| distribution: "temurin" | |
| - name: Create & Load .env file (for runner) | |
| run: | | |
| printf "%s" "${{secrets.ENV_FILE}}" > ./.env | |
| set -a | |
| source ./.env | |
| set +a | |
| echo "Environment variables loaded:" | |
| env | grep REDIS_PORT | |
| env | grep DATABASE_USERNAME | |
| env | grep MAIL_USERNAME | |
| shell: /usr/bin/bash -e {0} | |
| - name: gradlew mod modify | |
| run: chmod +x gradlew | |
| - name: Cache Gradle packages | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.gradle/caches | |
| ~/.gradle/wrapper | |
| key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} | |
| restore-keys: | | |
| ${{ runner.os }}-gradle- | |
| - name: Spring Boot Build | |
| run: ./gradlew clean build --exclude-task test | |
| - name: docker image build | |
| run: docker build -t ${{ secrets.DOCKER_USERNAME }}/planova-server . | |
| - name: Login to Docker Hub | |
| uses: docker/login-action@v3 | |
| with: | |
| username: ${{ secrets.DOCKER_USERNAME }} | |
| password: ${{ secrets.DOCKER_PASSWORD }} | |
| - name: docker Hub push | |
| run: docker push ${{ secrets.DOCKER_USERNAME }}/planova-server | |
| - name: Deploy to Remote Server | |
| uses: appleboy/ssh-action@master | |
| with: | |
| host: ${{ secrets.REMOTE_HOST }} | |
| username: ${{ secrets.REMOTE_USER }} | |
| key: ${{ secrets.SSH_PRIVATE_KEY }} | |
| port: ${{ secrets.REMOTE_PORT }} | |
| script: | | |
| cd ${{ secrets.REMOTE_PROJECT_PATH }} | |
| docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} | |
| docker compose down --rmi all | |
| echo "${{secrets.ENV_FILE}}" | touch ./.env > /dev/null | |
| docker pull ${{ secrets.DOCKER_USERNAME }}/planova-server | |
| docker compose up -d --remove-orphans | |
| - name: Send success message | |
| if: success() | |
| run: echo "🎉 CI/CD Pipeline completed successfully!" |