Skip to content

미션 목록 조회 구현 (issue #200) (#206) #22

미션 목록 조회 구현 (issue #200) (#206)

미션 목록 조회 구현 (issue #200) (#206) #22

Workflow file for this run

name: Backend CD
on:
workflow_dispatch:
push:
branches:
- main
paths:
- backend/**
env:
ARTIFACT_NAME: develup-0.0.1-SNAPSHOT
ARTIFACT_DIRECTORY: ./backend/build/libs
jobs:
build:
name: 🏗️ Build Jar and Upload Artifact
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: 🏗️ Set up JDK 21
uses: actions/setup-java@v4
with:
distribution: 'corretto'
java-version: 21
- name: 🏗️ Set up Gradle
uses: gradle/actions/setup-gradle@v3
- name: 🏗️ Build with Gradle
run: |
cd backend
./gradlew clean bootJar
- name: 📤 Upload Artifact File
uses: actions/upload-artifact@v4
with:
name: ${{ env.ARTIFACT_NAME }}
path: ${{ env.ARTIFACT_DIRECTORY }}/${{ env.ARTIFACT_NAME }}.jar
deploy:
name: 🚀 Server Deployment
needs: build
runs-on: self-hosted
steps:
- name: 📥 Download Artifact File
uses: actions/download-artifact@v4
with:
name: ${{ env.ARTIFACT_NAME }}
path: ${{ env.ARTIFACT_DIRECTORY }}
- name: 🔴 Stop Server
run: |
PID=$(sudo lsof -t -i:80 || true)
if [ -n "$PID" ]; then
sudo kill -15 $PID
tail --pid=$PID -f /dev/null
echo "Server has been stopped. PID: $PID"
else
echo "No server is running."
fi
- name: 🟢 Start Server
run: |
sudo nohup java \
-Dauth.github.client-id=${{ secrets.CLIENT_ID_GITHUB }} \
-Dauth.github.client-secret=${{ secrets.CLIENT_SECRET_GITHUB }} \
-Dspring.profiles.active=dev \
-Dserver.port=80 \
-jar ${{ env.ARTIFACT_DIRECTORY }}/${{ env.ARTIFACT_NAME }}.jar &
slack-notify_success:
runs-on: ubuntu-latest
needs:
- build
- deploy
if: success()
steps:
- name: Extract Commit Title
run: |
COMMIT_TITLE=$(echo "${{ github.event.head_commit.message }}" | head -n 1)
echo "COMMIT_TITLE=$COMMIT_TITLE" >> $GITHUB_ENV
- name: Build and Deploy Success
uses: slackapi/[email protected]
with:
channel-id: ${{ secrets.ISSUE_CHANNEL }}
payload: |
{
"text": "Build and Deploy Status",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "<!channel> \n 📣 Server Build & Deploy 결과를 안내 드립니다. 📣 \n\t • 🚀 Build Success \n\t • 🟢 Deploy Success \n\t • 🏷️ 관련 Commit: <${{ github.event.head_commit.url }}|${{ env.COMMIT_TITLE }}>"
}
}
]
}
env:
SLACK_BOT_TOKEN: ${{ secrets.BOT_TOKEN }}
slack-notify_build-fail:
runs-on: ubuntu-latest
needs:
- build
if: failure()
steps:
- name: Extract Commit Title
run: |
COMMIT_TITLE=$(echo "${{ github.event.head_commit.message }}" | head -n 1)
echo "COMMIT_TITLE=$COMMIT_TITLE" >> $GITHUB_ENV
- name: Build Fail
uses: slackapi/[email protected]
with:
channel-id: ${{ secrets.ISSUE_CHANNEL }}
payload: |
{
"text": "Build and Deploy Status",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "<!channel> \n 📣 Server Build & Deploy 결과를 안내 드립니다. 📣 \n\t • 🔴 Build Fail \n\t • 🏷️ 관련 Commit: <${{ github.event.head_commit.url }}|${{ env.COMMIT_TITLE }}>"
}
}
]
}
env:
SLACK_BOT_TOKEN: ${{ secrets.BOT_TOKEN }}
slack-notify_deploy-fail:
runs-on: ubuntu-latest
needs:
- deploy
if: failure()
steps:
- name: Extract Commit Title
run: |
COMMIT_TITLE=$(echo "${{ github.event.head_commit.message }}" | head -n 1)
echo "COMMIT_TITLE=$COMMIT_TITLE" >> $GITHUB_ENV
- name: Deploy Fail
uses: slackapi/[email protected]
with:
channel-id: ${{ secrets.ISSUE_CHANNEL }}
payload: |
{
"text": "Build and Deploy Status",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "<!channel> \n 📣 Server Build & Deploy 결과를 안내 드립니다. 📣 \n\t • 🚀Build Success \n\t • 🔴Deploy Fail \n\t • 🏷️ 관련 Commit: <${{ github.event.head_commit.url }}|${{ env.COMMIT_TITLE }}>"
}
}
]
}
env:
SLACK_BOT_TOKEN: ${{ secrets.BOT_TOKEN }}