diff --git a/.github/workflows/firebase-hosting-merge.yml b/.github/workflows/firebase-hosting-merge.yml index 02a81d7..f94951b 100644 --- a/.github/workflows/firebase-hosting-merge.yml +++ b/.github/workflows/firebase-hosting-merge.yml @@ -13,7 +13,9 @@ permissions: jobs: build_and_deploy: + if: ${{ github.ref == 'refs/heads/master' }} runs-on: ubuntu-latest + environment: production env: APP_TITLE: ${{ vars.APP_TITLE || secrets.APP_TITLE }} APP_API_URL: ${{ vars.APP_API_URL || vars.API_URL || secrets.APP_API_URL || secrets.API_URL }} @@ -40,6 +42,37 @@ jobs: - name: Install dependencies run: npm ci + - name: Validate required environment variables + run: | + missing=() + required=( + APP_TITLE + APP_API_URL + OPENAI_API_KEY + OPEN_WEATHER_MAP_API_KEY + FIREBASE_API_KEY + FIREBASE_AUTH_DOMAIN + FIREBASE_DATABASE_URL + FIREBASE_PROJECT_ID + FIREBASE_STORAGE_BUCKET + FIREBASE_MESSAGING_SENDER_ID + FIREBASE_APP_ID + FIREBASE_MEASUREMENT_ID + ) + + for name in "${required[@]}"; do + if [ -z "${!name}" ]; then + missing+=("$name") + fi + done + + if [ "${#missing[@]}" -gt 0 ]; then + echo "Missing required workflow environment variables:" + printf -- '- %s\n' "${missing[@]}" + echo "Check GitHub repository/environment Variables and Secrets configuration." + exit 1 + fi + - name: Generate Angular environment files run: npm run generate:env diff --git a/.github/workflows/firebase-hosting-pull-request.yml b/.github/workflows/firebase-hosting-pull-request.yml index f8f2226..595e1ad 100644 --- a/.github/workflows/firebase-hosting-pull-request.yml +++ b/.github/workflows/firebase-hosting-pull-request.yml @@ -2,7 +2,10 @@ # https://github.com/firebase/firebase-tools name: Deploy to Firebase Hosting on PR -on: pull_request +on: + pull_request: + branches: + - dev permissions: checks: write contents: read @@ -11,28 +14,9 @@ jobs: build_and_preview: if: ${{ github.event.pull_request.head.repo.full_name == github.repository }} runs-on: ubuntu-latest - env: - APP_TITLE: ${{ vars.APP_TITLE || secrets.APP_TITLE }} - APP_API_URL: ${{ vars.APP_API_URL || vars.API_URL || secrets.APP_API_URL || secrets.API_URL }} - OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY || vars.OPENAI_API_KEY }} - OPEN_WEATHER_MAP_API_KEY: ${{ secrets.OPEN_WEATHER_MAP_API_KEY || vars.OPEN_WEATHER_MAP_API_KEY }} - FIREBASE_API_KEY: ${{ vars.FIREBASE_API_KEY || secrets.FIREBASE_API_KEY }} - FIREBASE_AUTH_DOMAIN: ${{ vars.FIREBASE_AUTH_DOMAIN || secrets.FIREBASE_AUTH_DOMAIN }} - FIREBASE_DATABASE_URL: ${{ vars.FIREBASE_DATABASE_URL || secrets.FIREBASE_DATABASE_URL }} - FIREBASE_PROJECT_ID: ${{ vars.FIREBASE_PROJECT_ID || secrets.FIREBASE_PROJECT_ID }} - FIREBASE_STORAGE_BUCKET: ${{ vars.FIREBASE_STORAGE_BUCKET || secrets.FIREBASE_STORAGE_BUCKET }} - FIREBASE_MESSAGING_SENDER_ID: ${{ vars.FIREBASE_MESSAGING_SENDER_ID || secrets.FIREBASE_MESSAGING_SENDER_ID }} - FIREBASE_APP_ID: ${{ vars.FIREBASE_APP_ID || secrets.FIREBASE_APP_ID }} - FIREBASE_MEASUREMENT_ID: ${{ vars.FIREBASE_MEASUREMENT_ID || secrets.FIREBASE_MEASUREMENT_ID }} steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 20 - cache: npm - run: npm ci - - run: npm run generate:env - - run: npm run build - uses: FirebaseExtended/action-hosting-deploy@v0 with: repoToken: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/firebase_deployment_workflow.yml b/.github/workflows/firebase_deployment_workflow.yml index 7342f58..fbdcb31 100644 --- a/.github/workflows/firebase_deployment_workflow.yml +++ b/.github/workflows/firebase_deployment_workflow.yml @@ -9,6 +9,7 @@ permissions: jobs: deploy: runs-on: ubuntu-latest + environment: production env: APP_TITLE: ${{ vars.APP_TITLE || secrets.APP_TITLE }} APP_API_URL: ${{ vars.APP_API_URL || vars.API_URL || secrets.APP_API_URL || secrets.API_URL }} @@ -35,6 +36,37 @@ jobs: - name: Install dependencies run: npm ci + - name: Validate required environment variables + run: | + missing=() + required=( + APP_TITLE + APP_API_URL + OPENAI_API_KEY + OPEN_WEATHER_MAP_API_KEY + FIREBASE_API_KEY + FIREBASE_AUTH_DOMAIN + FIREBASE_DATABASE_URL + FIREBASE_PROJECT_ID + FIREBASE_STORAGE_BUCKET + FIREBASE_MESSAGING_SENDER_ID + FIREBASE_APP_ID + FIREBASE_MEASUREMENT_ID + ) + + for name in "${required[@]}"; do + if [ -z "${!name}" ]; then + missing+=("$name") + fi + done + + if [ "${#missing[@]}" -gt 0 ]; then + echo "Missing required workflow environment variables:" + printf -- '- %s\n' "${missing[@]}" + echo "Check GitHub repository/environment Variables and Secrets configuration." + exit 1 + fi + - name: Generate Angular environment files run: npm run generate:env