Skip to content

Fix: 어드민 - 멘토 권한 API 허용 #147

Fix: 어드민 - 멘토 권한 API 허용

Fix: 어드민 - 멘토 권한 API 허용 #147

Workflow file for this run

name: MJSEC LMS CI
on:
push: { branches: [ dev, main ], tags: [ 'v*' ] }
pull_request: { branches: [ dev ] }
jobs:
build-and-run:
runs-on: ubuntu-latest
env:
MYSQL_ROOT_PASSWORD: ${{ secrets.MYSQL_ROOT_PASSWORD }}
MYSQL_DATABASE: ${{ secrets.MYSQL_DATABASE }}
MYSQL_USER: ${{ secrets.MYSQL_USER }}
MYSQL_PASSWORD: ${{ secrets.MYSQL_PASSWORD }}
JWT_SECRET: ${{ secrets.JWT_SECRET }}
ADMIN_NUMBER: ${{ secrets.ADMIN_NUMBER }}
ADMIN_PASSWORD: ${{ secrets.ADMIN_PASSWORD }}
GMAIL_USERNAME: ${{ secrets.GMAIL_USERNAME }}
GMAIL_PASSWORD: ${{ secrets.GMAIL_PASSWORD }}
WIKI_API_TOKEN: ${{ secrets.WIKI_API_TOKEN }}
WIKI_DOMAIN: ${{ secrets.WIKI_DOMAIN }}
WIKI_GROUP_ID: ${{ secrets.WIKI_GROUP_ID }}
IMAGE_NAME: ${{ secrets.DOCKERHUB_USERNAME }}/mjsec-lms-back
steps:
- uses: actions/checkout@v4
- name: Create .env
run: |
{
echo "MYSQL_ROOT_PASSWORD=${{ env.MYSQL_ROOT_PASSWORD }}"
echo "MYSQL_DATABASE=${{ env.MYSQL_DATABASE }}"
echo "MYSQL_USER=${{ env.MYSQL_USER }}"
echo "MYSQL_PASSWORD=${{ env.MYSQL_PASSWORD }}"
echo "JWT_SECRET=${{ env.JWT_SECRET }}"
echo "ADMIN_NUMBER=${{ env.ADMIN_NUMBER }}"
echo "ADMIN_PASSWORD=${{ env.ADMIN_PASSWORD }}"
echo "GMAIL_USERNAME=${{ env.GMAIL_USERNAME }}"
echo "GMAIL_PASSWORD=${{ env.GMAIL_PASSWORD }}"
echo "WIKI_API_TOKEN=${{ env.WIKI_API_TOKEN }}"
echo "WIKI_GROUP_ID=${{ env.WIKI_GROUP_ID }}"
echo "WIKI_DOMAIN=${{ env.WIKI_DOMAIN }}"
} > .env
cat .env | sed 's/^\(.*PASSWORD\|JWT_SECRET\)=.*/\1=****/'
# GitHub 호스트 러너엔 docker compose v2가 기본 포함되어 있어 일반적으로 설치 불필요
# 꼭 필요하면 아래 유지
- name: Install Docker Compose (optional)
run: |
sudo apt-get update
sudo apt-get install -y docker-compose
- name: Docker Compose Build and Up
run: docker-compose up --build -d
- name: Wait for MySQL
run: |
for i in {1..30}; do
docker-compose exec -T db mysqladmin ping -h localhost --silent && break
echo "Waiting for MySQL..."
sleep 2
done
- name: Run Gradle Tests in Docker
run: docker-compose run --rm test
- name: Start Backend Container
run: docker-compose up -d app
- name: Check Backend Container Logs
run: docker-compose logs app
- name: Set up QEMU (for multi-arch, optional)
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Extract Docker metadata (tags/labels)
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.IMAGE_NAME }}
tags: |
# 브랜치
type=raw,value=dev,enable=${{ github.ref == 'refs/heads/dev' }}
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }}
type=ref,event=branch
# 태그 릴리즈
type=ref,event=tag
# 짧은 SHA
type=sha,format=short,prefix=sha-
- name: Build and push Docker image
uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile
platforms: linux/amd64 # multi-arch 필요하면 "linux/amd64,linux/arm64"
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Stop containers
if: always()
run: docker-compose down
- name: Upload Test Report
if: failure()
uses: actions/upload-artifact@v4
with:
name: test-report
path: Back/build/reports/tests/test