chore: setting redis in yaml #185
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: Java CI/CD with Gradle | |
| on: | |
| push: | |
| branches: [ "dev" ] | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| steps: | |
| - uses: actions/checkout@v4 | |
| # π₯ SSH ν€ λμ½λ©μ κ°μ₯ λ¨Όμ μν | |
| - name: Decode SSH Key | |
| run: | | |
| echo "${{ secrets.AWS_PRIVATE_KEY }}" | base64 --decode > private_key.pem | |
| chmod 600 private_key.pem | |
| - name: Set up SSH tunnel to EC2 | |
| run: | | |
| ssh -o StrictHostKeyChecking=no -N -L 13306:${{ secrets.RDS_HOST }}:3306 ubuntu@${{ secrets.EC2_PUBLIC_IP }} -i private_key.pem & | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| - name: Setup Gradle | |
| uses: gradle/actions/setup-gradle@v4 | |
| # β Jasypt 볡νΈνλ₯Ό μν νκ²½λ³μ μΆκ° | |
| - name: Build without Tests | |
| env: | |
| JASYPT_SECRET_KEY: ${{ secrets.JASYPT_SECRET_KEY }} | |
| run: ./gradlew build -x test | |
| - name: Debug Build Output | |
| run: ls -lah build/libs/ | |
| # π κΈ°μ‘΄ JAR νμΌ μμ (μ λ‘λ μ μμ νκ² μμ ) | |
| - name: Remove Old JAR from EC2 | |
| run: | | |
| ssh -o StrictHostKeyChecking=no -i private_key.pem ubuntu@${{ secrets.EC2_PUBLIC_IP }} << 'EOF' | |
| echo "Deleting old application files..." | |
| rm -rf /home/ubuntu/app.jar /home/ubuntu/app.tar.gz | |
| EOF | |
| # π μμΆ ν μ λ‘λ (JARμ tar.gzμΌλ‘ μμΆ) | |
| - name: Upload JAR to EC2 (Optimized) | |
| run: | | |
| echo "Finding correct JAR file..." | |
| JAR_FILE=$(ls build/libs/*.jar | grep -v plain | head -n 1) | |
| if [ -z "$JAR_FILE" ]; then | |
| echo "ERROR: No valid JAR file found!" | |
| exit 1 | |
| fi | |
| echo "Compressing JAR file..." | |
| tar czf app.tar.gz -C build/libs $(basename $JAR_FILE) | |
| echo "Uploading JAR to EC2..." | |
| scp -o StrictHostKeyChecking=no -i private_key.pem app.tar.gz ubuntu@${{ secrets.EC2_PUBLIC_IP }}:/home/ubuntu/ | |
| # π λ°°ν¬ λ° μ€ν | |
| - name: Deploy to EC2 | |
| run: | | |
| ssh -o StrictHostKeyChecking=no -i private_key.pem ubuntu@${{ secrets.EC2_PUBLIC_IP }} << 'EOF' | |
| echo "Stopping old application..." | |
| pids=$(pgrep -f 'java -jar') | |
| if [ -n "$pids" ]; then | |
| echo "Killing process: $pids" | |
| kill -9 $pids | |
| else | |
| echo "No process found." | |
| fi | |
| echo "Extracting new application..." | |
| tar xzf /home/ubuntu/app.tar.gz -C /home/ubuntu/ | |
| echo "Finding correct JAR file..." | |
| APP_JAR=$(ls /home/ubuntu/*.jar | grep -v plain | head -n 1) | |
| if [ -z "$APP_JAR" ]; then | |
| echo "ERROR: No valid JAR file found!" | |
| exit 1 | |
| fi | |
| echo "Starting new application with $APP_JAR..." | |
| export JASYPT_SECRET_KEY=${{ secrets.JASYPT_SECRET_KEY }} | |
| nohup java -jar $APP_JAR --spring.profiles.active=prod > /home/ubuntu/app.log 2>&1 & | |
| echo "Application started successfully!" | |
| EOF | |
| dependency-submission: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| - name: Generate and submit dependency graph | |
| uses: gradle/actions/dependency-submission@v4.0.0 |