diff --git a/.github/workflows/PROD-all-webs-and-studios.yaml b/.github/workflows/PROD-all-webs-and-studios.yaml new file mode 100644 index 000000000..b4ec5a66c --- /dev/null +++ b/.github/workflows/PROD-all-webs-and-studios.yaml @@ -0,0 +1,172 @@ +name: PROD - Deploy All Studios and Webs +on: + workflow_dispatch: +permissions: + id-token: write +jobs: + # Update Radix config for both studios and webs + update-radix-config: + runs-on: ubuntu-latest + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} + steps: + - name: Checkout internal 🛎️ + id: checkout-internal + uses: actions/checkout@v3 + with: + repository: 'equinor/energyvision-internal' + ref: main + token: ${{ secrets.PADMS_PAT }} + - name: Promote preprod tag to prod (studios) 🗒️ + if: github.ref == 'refs/heads/main' + shell: bash + id: promote-studios + run: | + python3 -m venv venv + source venv/bin/activate + python -m pip install ruamel.yaml + python ci/promoteAllToProduction.py studio + git config --global user.name 'github' + git config --global user.email 'padms@users.noreply.github.com' + git remote set-url origin https://x-access-token:${{ secrets.PADMS_PAT }}@github.com/equinor/energyvision-internal + if [[ `git status --porcelain` ]]; then + git commit -am "🚀 Deploy all studios to production" + git pull --rebase origin main + git push origin HEAD:main + fi + - name: Promote preprod tag to prod (webs) 🗒️ + if: github.ref == 'refs/heads/main' + shell: bash + id: promote-webs + run: | + python3 -m venv venv + source venv/bin/activate + python -m pip install ruamel.yaml + python ci/promoteAllToProduction.py web + git config --global user.name 'github' + git config --global user.email 'padms@users.noreply.github.com' + git remote set-url origin https://x-access-token:${{ secrets.PADMS_PAT }}@github.com/equinor/energyvision-internal + if [[ `git status --porcelain` ]]; then + git commit -am "🚀 Deploy all web sites to production" + git pull --rebase origin main + git push origin HEAD:main + fi + - uses: act10ns/slack@v2 + with: + status: ${{ job.status }} + steps: ${{ toJson(steps) }} + if: failure() + + # Deploy all studios + deploy-studios: + needs: update-radix-config + runs-on: ubuntu-latest + environment: + name: production + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} + SANITY_STUDIO_API_PROJECT_ID: w3b4om14 + SANITY_STUDIO_MUTATION_TOKEN: ${{ secrets.SANITY_STUDIO_SECRET_MUTATION_TOKEN }} + SANITY_STUDIO_PREVIEW_SECRET: ${{ secrets.SANITY_STUDIO_SECRET_PREVIEW_SECRET }} + SANITY_STUDIO_BRANDMASTER_URL: ${{ secrets.SANITY_STUDIO_BRANDMASTER_URL }} + SANITY_STUDIO_BRANDMASTER_PLUGIN_SOURCE: ${{ secrets.SANITY_STUDIO_BRANDMASTER_PLUGIN_SOURCE }} + SANITY_STUDIO_API_DATASET: secret + SANITY_STUDIO_FOTOWARE_CLIENT_ID: ${{ secrets.SANITY_STUDIO_FOTOWARE_CLIENT_ID }} + SANITY_STUDIO_FOTOWARE_TENANT_URL: ${{ secrets.SANITY_STUDIO_FOTOWARE_TENANT_URL }} + SANITY_STUDIO_FOTOWARE_REDIRECT_ORIGIN: ${{ secrets.SANITY_STUDIO_FOTOWARE_REDIRECT_ORIGIN }} + SANITY_STUDIO_FOTOWARE_AF_EXPORT_URL: ${{ secrets.SANITY_STUDIO_FOTOWARE_AF_EXPORT_URL }} + SANITY_STUDIO_FOTOWARE_AF_EXPORT_KEY: ${{ secrets.SANITY_STUDIO_FOTOWARE_AF_EXPORT_KEY }} + SANITY_STUDIO_SCREEN9_ACCOUNT_ID: ${{ secrets.SANITY_STUDIO_SCREEN9_ACCOUNT_ID }} + SANITY_STUDIO_SCREEN9_TOKEN: ${{ secrets.SANITY_STUDIO_SCREEN9_TOKEN }} + DOCKER_BUILDKIT: 1 + steps: + - name: Checkout internal 🛎️ + id: checkout-internal + uses: actions/checkout@v3 + with: + repository: 'equinor/energyvision-internal' + ref: main + token: ${{ secrets.PADMS_PAT }} + - name: Install dependencies and deploy studios + run: | + pnpm install + pnpm sanityv3 install + pnpm run deploy --workspace sanityv3 + - uses: act10ns/slack@v2 + with: + status: ${{ job.status }} + steps: ${{ toJson(steps) }} + if: failure() + + # Deploy all webs + deploy-webs: + needs: update-radix-config + runs-on: ubuntu-latest + environment: + name: production + url: https://equinor.com + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} + DOCKER_BUILDKIT: 1 + steps: + - name: Checkout internal 🛎️ + uses: actions/checkout@v3 + - name: Deploy to Radix backup 🚀 + id: deploy-backup + uses: equinor/radix-github-actions@master + with: + args: > + create job + deploy + --token-environment + --context production + -a equinor-web-sites + -e ${{ secrets.ENV }} + -f + - name: Deploy to Radix main 🚀 + id: deploy-main + uses: equinor/radix-github-actions@master + with: + args: > + create job + deploy + --token-environment + --context platform2 + -a equinor-web-sites + -e ${{ secrets.ENV }} + -f + - uses: act10ns/slack@v2 + with: + status: ${{ job.status }} + steps: ${{ toJson(steps) }} + if: failure() + + # Store image tags + store-image-tags: + needs: [deploy-studios, deploy-webs] + runs-on: ubuntu-latest + steps: + - name: Checkout internal 🛎️ + id: checkout-internal + uses: actions/checkout@v3 + with: + repository: 'equinor/energyvision-internal' + ref: main + token: ${{ secrets.PADMS_PAT }} + - name: Setup Node.js + uses: actions/setup-node@v2 + with: + node-version: '14' + - name: Install dependencies and store image tags + run: | + npm install js-yaml + node ci/storeImageTags.js studio + node ci/storeImageTags.js web + - name: Commit and push changes + run: | + git config --global user.name 'github' + git config --global user.email 'padms@users.noreply.github.com' + git remote set-url origin https://x-access-token:${{ secrets.PADMS_PAT }}@github.com/equinor/energyvision-internal + git add latest-prod-tags.json + git commit -m "Update latest-prod-tags.json with new tags" || echo "No changes to commit" + git push