Skip to content

feat: api key feature #36

feat: api key feature

feat: api key feature #36

Workflow file for this run

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