fix(README): fixed README.md for v2.0 ctf #673
Workflow file for this run
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
| # .github/workflows/ci.yml | |
| name: Docker Compose CI | |
| on: | |
| push: | |
| branches: [ dev ] | |
| pull_request: | |
| branches: [ dev ] | |
| jobs: | |
| build-and-run: | |
| runs-on: ubuntu-latest | |
| env: | |
| DB_NAME: ${{ secrets.DB_NAME }} | |
| DB_USERNAME: ${{ secrets.DB_USERNAME }} | |
| DB_PASSWORD: ${{ secrets.DB_PASSWORD }} | |
| DB_PORT: 3306 | |
| SPRING_SECURITY_USER_NAME: ${{ secrets.SPRING_SECURITY_USER_NAME }} | |
| SPRING_SECURITY_USER_PASSWORD: ${{ secrets.SPRING_SECURITY_USER_PASSWORD }} | |
| JWT_SECRET: ${{ secrets.JWT_SECRET }} | |
| DOCKER_HUB_USERNAME: ${{ secrets.DOCKER_HUB_USERNAME }} | |
| GMAIL_USERNAME: ${{ secrets.GMAIL_USERNAME }} | |
| GMAIL_APP_PASSWORD: ${{ secrets.GMAIL_APP_PASSWORD }} | |
| API_KEY: ${{ secrets.API_KEY }} | |
| API_URL: ${{ secrets.API_URL }} | |
| BUCKET: ${{ secrets.BUCKET }} | |
| LOCATION: ${{ secrets.LOCATION }} | |
| PROJECT_ID: ${{ secrets.PROJECT_ID }} | |
| GCP_JSON_FILE: ${{ secrets.GCP_JSON_FILE }} | |
| IMAGE_TAG: latest | |
| SPRING_CLOUD_GCP_STORAGE_CREDENTIALS_LOCATION: /dev/null | |
| SPRING_CLOUD_GCP_STORAGE_BUCKET: ${{ secrets.BUCKET }} | |
| DOMAIN: localhost | |
| WWW_DOMAIN: localhost | |
| # >>> Discord alert bot (CI에서는 호출 방지 권장) | |
| CTF_ALERT_ENABLED: "false" | |
| CTF_ALERT_ENDPOINT: ${{ secrets.CTF_ALERT_ENDPOINT }} | |
| CTF_ALERT_API_KEY: ${{ secrets.CTF_ALERT_API_KEY }} | |
| CTF_ALERT_ENVIRONMENT: "ci" | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Create .env | |
| run: | | |
| { | |
| echo "DB_NAME=${{ env.DB_NAME }}" | |
| echo "DB_USERNAME=${{ env.DB_USERNAME }}" | |
| echo "DB_PASSWORD=${{ env.DB_PASSWORD }}" | |
| echo "DB_PORT=${{ env.DB_PORT }}" | |
| echo "SPRING_SECURITY_USER_NAME=${{ env.SPRING_SECURITY_USER_NAME }}" | |
| echo "SPRING_SECURITY_USER_PASSWORD=${{ env.SPRING_SECURITY_USER_PASSWORD }}" | |
| echo "JWT_SECRET=${{ env.JWT_SECRET }}" | |
| echo "GMAIL_USERNAME=${{ env.GMAIL_USERNAME }}" | |
| echo "GMAIL_APP_PASSWORD=${{ env.GMAIL_APP_PASSWORD }}" | |
| echo "API_KEY=${{ env.API_KEY }}" | |
| echo "API_URL=${{ env.API_URL }}" | |
| echo "BUCKET=${{ env.BUCKET }}" | |
| echo "LOCATION=${{ env.LOCATION }}" | |
| echo "PROJECT_ID=${{ env.PROJECT_ID }}" | |
| echo "GCP_JSON_FILE=${{ env.GCP_JSON_FILE }}" | |
| echo "HOST_GCP_JSON_PATH=/dev/null" | |
| echo "DOCKER_HUB_USERNAME=${{ env.DOCKER_HUB_USERNAME }}" | |
| echo "IMAGE_TAG=${{ env.IMAGE_TAG }}" | |
| echo "SPRING_CLOUD_GCP_STORAGE_CREDENTIALS_LOCATION=${{ env.SPRING_CLOUD_GCP_STORAGE_CREDENTIALS_LOCATION }}" | |
| echo "SPRING_CLOUD_GCP_STORAGE_BUCKET=${{ env.SPRING_CLOUD_GCP_STORAGE_BUCKET }}" | |
| echo "DOMAIN=${{ env.DOMAIN }}" | |
| echo "WWW_DOMAIN=${{ env.WWW_DOMAIN }}" | |
| # >>> Discord alert bot | |
| echo "CTF_ALERT_ENABLED=${{ env.CTF_ALERT_ENABLED }}" | |
| echo "CTF_ALERT_ENDPOINT=${{ env.CTF_ALERT_ENDPOINT }}" | |
| echo "CTF_ALERT_API_KEY=${{ env.CTF_ALERT_API_KEY }}" | |
| echo "CTF_ALERT_ENVIRONMENT=${{ env.CTF_ALERT_ENVIRONMENT }}" | |
| } > .env | |
| # mask secrets in logs | |
| cat .env | sed 's/^\(.*PASSWORD\|JWT_SECRET\|CTF_ALERT_API_KEY\|API_KEY\)=.*/\1=****/' | |
| - name: Show Docker versions | |
| run: | | |
| docker --version | |
| docker compose version | |
| - name: Build Docker images | |
| run: docker compose build backend | |
| - name: Docker Compose Up (db/redis/backend) | |
| run: | | |
| docker compose up -d db redis backend | |
| docker compose ps | |
| - name: Wait for MySQL | |
| run: | | |
| for i in $(seq 1 30); do | |
| if docker compose exec -T db mysqladmin ping -h 127.0.0.1 -uroot -p"${{ env.DB_PASSWORD }}" --silent; then | |
| echo "MySQL is ready" | |
| exit 0 | |
| fi | |
| echo "Waiting for MySQL... ($i/30)" | |
| sleep 2 | |
| done | |
| echo "MySQL did not become ready" | |
| docker compose logs db | |
| exit 1 | |
| - name: Run Gradle Tests in Docker | |
| run: docker compose run --rm test | |
| - name: Backend logs (tail) | |
| if: always() | |
| run: docker compose logs --no-color --tail=200 backend || true | |
| - name: Stop containers | |
| if: always() | |
| run: docker compose down -v |