Skip to content

Feature/reward

Feature/reward #89

Workflow file for this run

name: Deploy on develop merge
on:
pull_request:
branches: [develop]
types: [closed]
push:
branches:
- fix/cd
jobs:
deploy:
if: >
(github.event_name == 'pull_request' && github.event.pull_request.merged == true)
|| (github.event_name == 'push' && github.ref == 'refs/heads/fix/cd')
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: ${{ secrets.JAVA_VERSION }}
cache: gradle
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Grant gradlew permission
run: chmod +x gradlew
- name: Build bootJar
run: ./gradlew clean bootJar -x test --no-daemon
env:
GRADLE_OPTS: "-Dorg.gradle.caching=true -Dorg.gradle.daemon=false"
- name: List build outputs
run: ls -l build/libs || true
- name: Prepare SSH
run: |
mkdir -p ~/.ssh
echo "${{ secrets.EC2_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan -H "${{ secrets.EC2_HOST }}" >> ~/.ssh/known_hosts
- name: Ensure remote dir
run: |
ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no -o ConnectTimeout=10 \
${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} \
"mkdir -p ${{ secrets.APP_DIR }}/build/libs"
- name: Compress and Upload JAR to EC2 with rsync
run: |
gzip -f build/libs/*-SNAPSHOT.jar
rsync -avz -e "ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no" \
build/libs/*-SNAPSHOT.jar.gz \
${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }}:${{ secrets.APP_DIR }}/build/libs/
- name: Restart app on EC2
run: |
ssh -i ~/.ssh/id_rsa \
-o StrictHostKeyChecking=no \
-o ConnectTimeout=15 \
${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} \
"cd ${{ secrets.APP_DIR }} && ./run.sh"
- name: Verify remote status
continue-on-error: true
run: |
ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} \
"ps -ef | grep java | grep -v grep || true; \
ss -lntp | grep ':8080' || true; \
tail -n 100 ${{ secrets.APP_DIR }}/app.out || true"