feat: api key feature #36
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
| name: CI - Spring Boot | |
| on: | |
| push: | |
| branches: [ "main" ] | |
| pull_request: | |
| branches: [ "main" ] | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Validate required secrets | |
| run: | | |
| MISSING_SECRETS=() | |
| MISSING_VARS=() | |
| # Check each required secret | |
| [[ -z "${{ secrets.POSTGRES_USER }}" ]] && MISSING_SECRETS+=("POSTGRES_USER") | |
| [[ -z "${{ secrets.POSTGRES_PASSWORD }}" ]] && MISSING_SECRETS+=("POSTGRES_PASSWORD") | |
| [[ -z "${{ secrets.POSTGRES_DB }}" ]] && MISSING_SECRETS+=("POSTGRES_DB") | |
| [[ -z "${{ secrets.POSTGRES_PORT }}" ]] && MISSING_SECRETS+=("POSTGRES_PORT") | |
| [[ -z "${{ secrets.SPRING_DB_URL }}" ]] && MISSING_SECRETS+=("SPRING_DB_URL") | |
| [[ -z "${{ secrets.SPRING_DB_USERNAME }}" ]] && MISSING_SECRETS+=("SPRING_DB_USERNAME") | |
| [[ -z "${{ secrets.SPRING_DB_PASSWORD }}" ]] && MISSING_SECRETS+=("SPRING_DB_PASSWORD") | |
| [[ -z "${{ secrets.APP_PORT }}" ]] && MISSING_SECRETS+=("APP_PORT") | |
| [[ -z "${{ secrets.SPRING_JWT_SECRET_KEY }}" ]] && MISSING_SECRETS+=("SPRING_JWT_SECRET_KEY") | |
| [[ -z "${{ secrets.SPRING_BOOTSTRAP_SUPERADMIN_USERNAME }}" ]] && MISSING_SECRETS+=("SPRING_BOOTSTRAP_SUPERADMIN_USERNAME") | |
| # Check each required variable | |
| [[ -z "${{ vars.SPRING_JWT_EXPIRATION }}" ]] && MISSING_VARS+=("SPRING_JWT_EXPIRATION") | |
| [[ -z "${{ vars.SPRING_REFRESH_SESSION_EXPIRATION }}" ]] && MISSING_VARS+=("SPRING_REFRESH_SESSION_EXPIRATION") | |
| [[ -z "${{ vars.SPRING_AUTH_COOKIE_SECURE }}" ]] && MISSING_VARS+=("SPRING_AUTH_COOKIE_SECURE") | |
| # If any secrets are missing, print them and fail | |
| if [ ${#MISSING_SECRETS[@]} -ne 0 ]; then | |
| echo "❌ Error: The following required secrets are missing:" | |
| for secret in "${MISSING_SECRETS[@]}"; do | |
| echo " - $secret" | |
| done | |
| exit 1 | |
| fi | |
| # If any vars are missing, print them and fail | |
| if [ ${#MISSING_VARS[@]} -ne 0 ]; then | |
| echo "❌ Error: The following required variables are missing:" | |
| for v in "${MISSING_VARS[@]}"; do | |
| echo " - $v" | |
| done | |
| exit 1 | |
| fi | |
| echo "✅ All required secrets and variables are present" | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Create .env file from secrets | |
| run: | | |
| cat > .env << EOF | |
| POSTGRES_USER=${{ secrets.POSTGRES_USER }} | |
| POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }} | |
| POSTGRES_DB=${{ secrets.POSTGRES_DB }} | |
| POSTGRES_PORT=${{ secrets.POSTGRES_PORT }} | |
| SPRING_DB_URL=${{ secrets.SPRING_DB_URL }} | |
| SPRING_DB_USERNAME=${{ secrets.SPRING_DB_USERNAME }} | |
| SPRING_DB_PASSWORD=${{ secrets.SPRING_DB_PASSWORD }} | |
| APP_PORT=${{ secrets.APP_PORT }} | |
| SPRING_JWT_SECRET_KEY=${{ secrets.SPRING_JWT_SECRET_KEY }} | |
| SPRING_JWT_EXPIRATION=${{ vars.SPRING_JWT_EXPIRATION }} | |
| SPRING_REFRESH_SESSION_EXPIRATION=${{ vars.SPRING_REFRESH_SESSION_EXPIRATION }} | |
| SPRING_AUTH_COOKIE_SECURE=${{ vars.SPRING_AUTH_COOKIE_SECURE }} | |
| SPRING_BOOTSTRAP_SUPERADMIN_USERNAME=${{ secrets.SPRING_BOOTSTRAP_SUPERADMIN_USERNAME }} | |
| EOF | |
| - name: Cache Gradle | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.gradle/caches | |
| ~/.gradle/wrapper | |
| .gradle | |
| key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} | |
| restore-keys: | | |
| ${{ runner.os }}-gradle- | |
| - name: Set up JDK 21 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '21' | |
| distribution: 'temurin' | |
| cache: gradle | |
| - name: Check with Gradle | |
| run: ./gradlew check --no-daemon | |
| - name: Upload test results | |
| if: failure() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: test-results | |
| path: build/reports/tests/test |