Fix: 어드민 - 멘토 권한 API 허용 #147
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: 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 |