Skip to content

PROD - Deploy all webs and studios #34

PROD - Deploy all webs and studios

PROD - Deploy all webs and studios #34

name: PROD - Deploy all webs and studios
on:
workflow_dispatch:
permissions:
id-token: write
jobs:
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 πŸ—’οΈ
if: github.ref == 'refs/heads/main'
shell: bash
id: modify-radix
run: |
# Install pre-requisite
python3 -m venv venv
source venv/bin/activate
python -m pip install ruamel.yaml
python ci/promoteAllToProduction.py web
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 web sites and studios 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-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 πŸ›ŽοΈ
uses: actions/checkout@v3
- name: Deploy to Radix πŸš€
id: deploy-main
uses: equinor/radix-github-actions@v2
with:
azure_client_id: 460b889f-89e0-4cc9-965c-31f3e7770226
version: latest
- run: rx create job deploy
--context platform2
-a equinor-web-sites
-e ${{ secrets.ENV }}
-f
shell: bash
- uses: act10ns/slack@v2
with:
status: ${{ job.status }}
steps: ${{ toJson(steps) }}
if: failure()
deploy-studios:
needs: update-radix-config
runs-on: ubuntu-latest
environment:
name: production
url: https://equinor.sanity.studio
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
SANITY_STUDIO_BRANDMASTER_URL: ${{ secrets.SANITY_STUDIO_BRANDMASTER_URL }}
SANITY_STUDIO_BRANDMASTER_PLUGIN_SOURCE: ${{ secrets.SANITY_STUDIO_BRANDMASTER_PLUGIN_SOURCE }}
SANITY_STUDIO_PREVIEW_SECRET: ${{ secrets.SANITY_STUDIO_PREVIEW_SECRET }}
SANITY_STUDIO_HISTORY_API_TOKEN: ${{ secrets.SANITY_STUDIO_HISTORY_API_TOKEN }}
SANITY_STUDIO_API_DATASET: global
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: Get preprod sha 🏷️
id: get-preprod-sha
shell: bash
run: |
python -m pip install --user ruamel.yaml
echo "sha=$(python ci/returnComponentVersion.py preprod studio-global)" >> $GITHUB_OUTPUT
- name: Checkout πŸ›ŽοΈ
id: checkout-main
uses: actions/checkout@v3
with:
repository: 'equinor/energyvision'
fetch-depth: 0
- name: Get long sha ️🏷️
id: get-long-sha
shell: bash
run: |
echo "sha=$(git rev-parse ${{ steps.get-preprod-sha.outputs.sha }})" >> $GITHUB_OUTPUT
- name: Checkout πŸ›ŽοΈ
id: checkout-specific-branch
uses: actions/checkout@v3
with:
repository: 'equinor/energyvision'
fetch-depth: 0
ref: '${{ steps.get-long-sha.outputs.sha }}'
- name: Install pnpm πŸ“¦
id: install-pnpm
uses: pnpm/action-setup@v4
with:
version: '8.5.1'
- name: Cache pnpm modules πŸ’Ύ
uses: actions/setup-node@v3
with:
node-version: 18
cache: 'pnpm'
- name: Install dependencies πŸ”§
id: install-dependencies
run: |
pnpm install
pnpm sanityv3 install
- name: Deploy πŸš€
id: deploy
working-directory: ./sanityv3
run: |
pnpm run deploy
env:
SANITY_AUTH_TOKEN: ${{ secrets.SANITY_DEPLOY }}
- uses: act10ns/slack@v2
with:
status: ${{ job.status }}
steps: ${{ toJson(steps) }}
if: failure()
deploy-secret:
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: Get preprod sha 🏷️
id: get-preprod-sha
shell: bash
run: |
# Install pre-requisite
python -m pip install --user ruamel.yaml
echo "sha=$(python ci/returnGlobalStudioVersion.py preprod)" >> $GITHUB_OUTPUT
- name: Checkout πŸ›ŽοΈ
id: checkout-main
uses: actions/checkout@v3
with:
repository: 'equinor/energyvision'
fetch-depth: 0
# ref: '${{ steps.get-preprod-sha.outputs.sha }}'
- name: Get long sha ️🏷️
id: get-long-sha
shell: bash
run: |
echo "sha=$(git rev-parse ${{ steps.get-preprod-sha.outputs.sha }})" >> $GITHUB_OUTPUT
- name: Checkout πŸ›ŽοΈ
id: checkout-specific-branch
uses: actions/checkout@v3
with:
repository: 'equinor/energyvision'
fetch-depth: 0
ref: '${{ steps.get-long-sha.outputs.sha }}'
- name: Install pnpm πŸ“¦
id: install-pnpm
uses: pnpm/action-setup@v4
with:
version: '8.5.1'
- name: Cache pnpm modules πŸ’Ύ
uses: actions/setup-node@v3
with:
node-version: 18
cache: 'pnpm'
- name: Install dependencies πŸ”§
id: install-dependencies
run: |
pnpm install
pnpm sanityv3 install
- name: Deploy πŸš€
id: deploy
working-directory: ./sanityv3
run: |
pnpm run deploy
env:
SANITY_AUTH_TOKEN: ${{ secrets.SANITY_SECRET_DEPLOY }}
- uses: act10ns/slack@v2
with:
status: ${{ job.status }}
steps: ${{ toJson(steps) }}
if: failure()
deploy-satellite-studios:
needs: deploy-studios
runs-on: ubuntu-latest
environment:
name: production
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
DOCKER_BUILDKIT: 1
steps:
- name: Checkout πŸ›ŽοΈ
uses: actions/checkout@v3
- name: Deploy to Radix πŸš€
id: deploy
uses: equinor/radix-github-actions@v2
with:
azure_client_id: 460b889f-89e0-4cc9-965c-31f3e7770226
version: latest
- run: rx create job deploy
--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:
needs: [deploy-webs, deploy-satellite-studios]
runs-on: ubuntu-latest
outputs:
WEB_SHA: ${{ steps.save-and-get-image-tags.outputs.WEB_SHA }}
STUDIO_SHA: ${{ steps.save-and-get-image-tags.outputs.STUDIO_SHA }}
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
run: |
npm install js-yaml
- name: Run script for 'web' and 'studio'
id: save-and-get-image-tags
run: |
WEB_SHA=$(node ci/storeImageTags.js web)
STUDIO_SHA=$(node ci/storeImageTags.js studio)
echo "WEB_SHA=$(WEB_SHA)" >> $GITHUB_OUTPUT
echo "STUDIO_SHA=$(STUDIO_SHA)" >> $GITHUB_OUTPUT
- 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
create-discussion-and-share:
needs: [store-image-tags]
runs-on: ubuntu-latest
steps:
- name: Checkout πŸ›ŽοΈ
uses: actions/checkout@v3
- name: 'Move cards and create discussion and post it to channel'
id: 'get-list'
with:
token: ${{ secrets.PADMS_PAT_READ_PACKAGE }}
commitSHA: 'Web : ${{ needs.store-image-tags.outputs.WEB_SHA }} Studio: ${{ needs.store-image-tags.outputs.WEB_SHA }}'
slackWebhook: ${{ secrets.SLACK_WEBHOOK_RELEASE_ANNOUNCEMENT}}
uses: ./.github/workflows/project/