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
89 lines
2.8 KiB
YAML
89 lines
2.8 KiB
YAML
name: services/www - manual release
|
|
'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
|
|
permissions:
|
|
contents: read
|
|
actions: read
|
|
jobs:
|
|
release:
|
|
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.RELEASE_REGISTRY_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 }}
|
|
- name: Promote tested digest and create release tag
|
|
env:
|
|
TESTED_SHA: ${{ inputs.tested_sha }}
|
|
TESTED_DIGEST: ${{ inputs.tested_digest }}
|
|
BUILD_RUN_ID: ${{ inputs.build_run_id }}
|
|
PROVENANCE_TOKEN: ${{ github.token }}
|
|
GIT_WRITE_KEY: ${{ secrets.WWW_RELEASE_KEY }}
|
|
run: 'set -euo pipefail
|
|
|
|
VERSION=$(bash ci/scripts/calver-release.sh)
|
|
|
|
[[ "$VERSION" =~ ^[A-Za-z0-9][A-Za-z0-9._-]*$ ]]
|
|
|
|
if git show-ref --verify --quiet "refs/tags/$VERSION"; then exit 1; fi
|
|
|
|
docker buildx imagetools create --prefer-index=false "git.ermnvldmr.com/deytenit/ermnvldmr.com/www@$TESTED_DIGEST"
|
|
--tag "git.ermnvldmr.com/deytenit/ermnvldmr.com/www:$VERSION"
|
|
|
|
test "$(docker buildx imagetools inspect "git.ermnvldmr.com/deytenit/ermnvldmr.com/www:$VERSION"
|
|
--format ''{{.Manifest.Digest}}'')" = "$TESTED_DIGEST"
|
|
|
|
git tag "$VERSION" "$TESTED_SHA"
|
|
|
|
python3 ci/scripts/git_write.py "refs/tags/$VERSION"
|
|
|
|
export VERSION
|
|
|
|
mkdir -p .ci
|
|
|
|
python3 - <<''RELEASE_PROVENANCE''
|
|
|
|
import json, os
|
|
|
|
from pathlib import Path
|
|
|
|
Path(''.ci/www-release.json'').write_text(json.dumps({''sha'': os.environ[''TESTED_SHA''],
|
|
''digest'': os.environ[''TESTED_DIGEST''], ''run_id'': os.environ[''BUILD_RUN_ID''],
|
|
''repository'': ''deytenit/ermnvldmr.com'', ''release_tag'': os.environ[''VERSION'']}))
|
|
|
|
RELEASE_PROVENANCE
|
|
|
|
'
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: www-release-provenance
|
|
path: .ci/www-release.json
|
|
retention-days: 30
|