feat: add workflow for promoting master to production with testing and deployment steps
Some checks failed
Chore App Build, Test, and Push Docker Images / build-and-push (push) Has been cancelled

This commit is contained in:
2026-04-26 22:41:14 -04:00
parent 8774e85529
commit b4fc4fc955
3 changed files with 27 additions and 13 deletions

View File

@@ -31,7 +31,7 @@ on:
require_manual_approval: require_manual_approval:
description: "Require approval token for deploy job" description: "Require approval token for deploy job"
required: true required: true
default: "true" default: "false"
approval_token: approval_token:
description: "Approval token value when manual approval is required" description: "Approval token value when manual approval is required"
required: false required: false
@@ -192,13 +192,27 @@ jobs:
script: | script: |
set -euo pipefail set -euo pipefail
cd /opt repo_dir="${{ secrets.DEPLOY_PROD_PATH }}"
if [ -d "chore/.git" ]; then if [ -z "$repo_dir" ]; then
cd chore repo_dir="$HOME/chore"
fi
repo_parent=$(dirname "$repo_dir")
if [ ! -d "$repo_parent" ]; then
mkdir -p "$repo_parent"
fi
if [ ! -w "$repo_parent" ]; then
echo "Deploy user $(whoami) cannot write to ${repo_parent}."
echo "Set DEPLOY_PROD_PATH to a writable location or grant write access before rerunning promotion."
exit 1
fi
if [ -d "$repo_dir/.git" ]; then
cd "$repo_dir"
git fetch --all --tags git fetch --all --tags
else else
git clone --branch "${{ needs.prepare.outputs.target_ref }}" https://git.ryankegel.com/ryan/chore.git chore git clone --branch "${{ needs.prepare.outputs.target_ref }}" https://git.ryankegel.com/ryan/chore.git "$repo_dir"
cd chore cd "$repo_dir"
fi fi
git checkout "${{ needs.prepare.outputs.target_ref }}" git checkout "${{ needs.prepare.outputs.target_ref }}"

View File

@@ -2,20 +2,20 @@
"cookies": [ "cookies": [
{ {
"name": "refresh_token", "name": "refresh_token",
"value": "caYfAayTk40YWkRvN82a9_mGQ_-wXy6JdBBaD_UhLcQ", "value": "mqtPPFKJGGfFly1i0VW1MtJUvgIpb7LlWUEpFLn1hGc",
"domain": "localhost", "domain": "localhost",
"path": "/api/auth", "path": "/api/auth",
"expires": 1785003956.884209, "expires": 1785022348.96348,
"httpOnly": true, "httpOnly": true,
"secure": true, "secure": true,
"sameSite": "Strict" "sameSite": "Strict"
}, },
{ {
"name": "access_token", "name": "access_token",
"value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImUyZUB0ZXN0LmNvbSIsInVzZXJfaWQiOiI3YjcxMGU0ZC02ZTExLTRjMjctODllNS1jZTcxNGZhOTgwZTIiLCJ0b2tlbl92ZXJzaW9uIjowLCJleHAiOjE3NzcyMjg4NTZ9.wJCrQ9Y5nbVpqd6yCeCHcpcpGpg4YqavqlsHbU8kDPE", "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImUyZUB0ZXN0LmNvbSIsInVzZXJfaWQiOiIzZDJmZmY0OS03MjNhLTRhMmUtYWRhOS1iMTE5N2VhYTI2MDkiLCJ0b2tlbl92ZXJzaW9uIjowLCJleHAiOjE3NzcyNTcxNDh9.g69Lwtay2i0jwEzAbYcRWM2oGoOm-4qpV8YC04X0v-0",
"domain": "localhost", "domain": "localhost",
"path": "/", "path": "/",
"expires": 1777228856.884169, "expires": 1777257148.963437,
"httpOnly": true, "httpOnly": true,
"secure": true, "secure": true,
"sameSite": "Lax" "sameSite": "Lax"
@@ -27,11 +27,11 @@
"localStorage": [ "localStorage": [
{ {
"name": "authSyncEvent", "name": "authSyncEvent",
"value": "{\"type\":\"logout\",\"at\":1777227956772}" "value": "{\"type\":\"logout\",\"at\":1777246348801}"
}, },
{ {
"name": "parentAuth", "name": "parentAuth",
"value": "{\"expiresAt\":1777400757015}" "value": "{\"expiresAt\":1777419149107}"
} }
] ]
} }

View File

@@ -1,4 +1,4 @@
{ {
"status": "passed", "status": "interrupted",
"failedTests": [] "failedTests": []
} }