packages/kits - next/required / Setup - Stage (push) Successful in 41s
packages/ssg - next/required / Setup - Stage (push) Successful in 40s
packages/stl - next/required / Setup - Stage (push) Successful in 40s
packages/ui - next/required / Setup - Stage (push) Successful in 44s
services/docs - next/required / Setup - Hugo (push) Successful in 4s
services/static - next/required / Setup - Stage (push) Successful in 41s
packages/kits - next/required / Build - Configs & UI (push) Canceled after 0s
packages/kits - next/required / Lint - Kits (push) Canceled after 0s
packages/kits - next/required / Typecheck - Kits (push) Canceled after 0s
packages/kits - next/required / Test - Unit (push) Canceled after 0s
packages/kits - next/required / Build - Storybook (push) Canceled after 0s
packages/kits - next/required / Test - Storybook (push) Canceled after 0s
packages/kits - next/required / Build - Kits (push) Canceled after 0s
packages/ssg - next/required / Build - Configs (push) Canceled after 0s
packages/ssg - next/required / Lint - SSG (push) Canceled after 0s
packages/ssg - next/required / Typecheck - SSG (push) Canceled after 0s
packages/ssg - next/required / Build - SSG (push) Canceled after 0s
packages/stl - next/required / Build - Configs (push) Canceled after 0s
packages/stl - next/required / Lint - STL (push) Canceled after 0s
packages/stl - next/required / Typecheck - STL (push) Canceled after 0s
packages/stl - next/required / Test - STL (push) Canceled after 0s
packages/stl - next/required / Build - STL (push) Canceled after 0s
packages/ui - next/required / Build - Configs (push) Canceled after 0s
packages/ui - next/required / Lint - UI (push) Canceled after 0s
packages/ui - next/required / Typecheck - UI (push) Canceled after 0s
packages/ui - next/required / Test - Unit (push) Canceled after 0s
packages/ui - next/required / Build - Storybook (push) Canceled after 0s
packages/ui - next/required / Test - Storybook (push) Canceled after 0s
packages/ui - next/required / Build - UI (push) Canceled after 0s
services/www - next/required / Setup - Stage (push) Canceled after 46s
services/docs - next/required / Build - Hugo Site (push) Canceled after 0s
services/docs - next/required / Release - Docker Image (push) Canceled after 0s
services/docs - next/required / Deploy - Kubernetes (GitOps) (push) Canceled after 0s
services/docs - next/required / Verify - Production Rollout (push) Canceled after 0s
services/static - next/required / Build - Configs (push) Canceled after 0s
services/static - next/required / Lint - Static (push) Canceled after 0s
services/static - next/required / Typecheck - Static (push) Canceled after 0s
services/static - next/required / Build - Static Site (push) Canceled after 0s
services/static - next/required / Deploy - S3 (push) Canceled after 0s
services/www - next/required / Build - Configs (push) Canceled after 0s
services/www - next/required / Lint - WWW (push) Canceled after 0s
services/www - next/required / Typecheck - WWW (push) Canceled after 0s
services/www - next/required / Build - Storybook (push) Canceled after 0s
services/www - next/required / Test - Unit (push) Canceled after 0s
services/www - next/required / Test - Storybook (push) Canceled after 0s
services/www - next/required / Build - WWW Service (push) Canceled after 0s
services/www - next/required / Build - Docker Image (push) Canceled after 0s
77 lines
2.6 KiB
YAML
77 lines
2.6 KiB
YAML
name: services/www - manual deploy
|
|
'on':
|
|
workflow_dispatch:
|
|
inputs:
|
|
tested_sha:
|
|
description: Full tested source commit
|
|
required: true
|
|
type: string
|
|
tested_digest:
|
|
description: OCI sha256 digest from the successful build
|
|
required: true
|
|
type: string
|
|
build_run_id:
|
|
description: Successful WWW build run ID
|
|
required: true
|
|
type: string
|
|
release_tag:
|
|
description: Previously approved release tag
|
|
required: true
|
|
type: string
|
|
release_run_id:
|
|
description: Successful manually approved release run ID
|
|
required: true
|
|
type: string
|
|
permissions:
|
|
contents: read
|
|
actions: read
|
|
jobs:
|
|
deploy:
|
|
runs-on: apex-debian13
|
|
if: github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/next'
|
|
&& github.actor == 'deytenit'
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
- name: Authenticate local registry
|
|
run: python3 ci/scripts/docker.py login
|
|
env:
|
|
REGISTRY: git.ermnvldmr.com
|
|
REGISTRY_USER: deytenit
|
|
REGISTRY_TOKEN: ${{ secrets.DEPLOY_REGISTRY_READ_TOKEN }}
|
|
- name: Verify successful build and immutable digest
|
|
id: provenance
|
|
run: python3 ci/scripts/provenance.py
|
|
env:
|
|
TESTED_SHA: ${{ inputs.tested_sha }}
|
|
TESTED_DIGEST: ${{ inputs.tested_digest }}
|
|
BUILD_RUN_ID: ${{ inputs.build_run_id }}
|
|
PROVENANCE_TOKEN: ${{ github.token }}
|
|
RELEASE_RUN_ID: ${{ inputs.release_run_id }}
|
|
RELEASE_TAG: ${{ inputs.release_tag }}
|
|
- name: Verify approved release and deploy digest
|
|
env:
|
|
TESTED_SHA: ${{ inputs.tested_sha }}
|
|
TESTED_DIGEST: ${{ inputs.tested_digest }}
|
|
BUILD_RUN_ID: ${{ inputs.build_run_id }}
|
|
PROVENANCE_TOKEN: ${{ github.token }}
|
|
RELEASE_RUN_ID: ${{ inputs.release_run_id }}
|
|
RELEASE_TAG: ${{ inputs.release_tag }}
|
|
GIT_WRITE_KEY: ${{ secrets.WWW_DEPLOY_KEY }}
|
|
run: 'set -euo pipefail
|
|
|
|
[[ "$RELEASE_TAG" =~ ^[A-Za-z0-9][A-Za-z0-9._-]*$ ]]
|
|
|
|
test "$(git rev-parse "$RELEASE_TAG^{commit}")" = "$TESTED_SHA"
|
|
|
|
test "$(docker buildx imagetools inspect "git.ermnvldmr.com/deytenit/ermnvldmr.com/www:$RELEASE_TAG"
|
|
--format ''{{.Manifest.Digest}}'')" = "$TESTED_DIGEST"
|
|
|
|
bash ci/scripts/deploy-gitops.sh www "$TESTED_DIGEST"
|
|
|
|
'
|
|
- name: Await production rollout
|
|
run: bash ci/scripts/await-rollout.sh https://www.ermnvldmr.com/version.json "sha-${TESTED_SHA:0:7}"
|
|
env:
|
|
TESTED_SHA: ${{ inputs.tested_sha }}
|