remove .github/workflows
This commit is contained in:
parent
c5ff556e48
commit
661bf4dab2
136
.github/workflows/bootstrap-env.yaml
vendored
136
.github/workflows/bootstrap-env.yaml
vendored
@ -1,136 +0,0 @@
|
|||||||
name: Bootstrap Environment Orchestrator
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
env:
|
|
||||||
description: "Environment lifecycle (dev / staging / prod)"
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
|
|
||||||
workspace:
|
|
||||||
description: "Workspace / region / cluster (e.g. cn-shanghai)"
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
|
|
||||||
identity_playbook:
|
|
||||||
description: "Identity service deployment playbook"
|
|
||||||
required: false
|
|
||||||
default: "deploy_zitadel_docker.yaml"
|
|
||||||
type: choice
|
|
||||||
options:
|
|
||||||
- deploy_zitadel_docker.yaml
|
|
||||||
- deploy_keycloak_docker.yaml
|
|
||||||
- skip
|
|
||||||
|
|
||||||
env:
|
|
||||||
DISPATCH_TOKEN: ${{ secrets.CROSS_REPO_DISPATCH_TOKEN }}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
|
|
||||||
# =================================================
|
|
||||||
# Step 1: Preflight - Infrastructure Readiness
|
|
||||||
# =================================================
|
|
||||||
preflight-infra:
|
|
||||||
name: Preflight - Infrastructure Readiness
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Dispatch infrastructure readiness check
|
|
||||||
uses: peter-evans/repository-dispatch@v4
|
|
||||||
with:
|
|
||||||
token: ${{ env.DISPATCH_TOKEN }}
|
|
||||||
repository: cloud-neutral-toolkit/Modern-Container-Application-Reference-Architecture
|
|
||||||
event-type: bootstrap.preflight.infra
|
|
||||||
client-payload: |
|
|
||||||
{
|
|
||||||
"env": "${{ inputs.env }}",
|
|
||||||
"workspace": "${{ inputs.workspace }}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# =================================================
|
|
||||||
# Step 2: Preflight - Artifact / Image Check
|
|
||||||
# =================================================
|
|
||||||
preflight-artifacts:
|
|
||||||
name: Preflight - Artifact & Image Check
|
|
||||||
needs: preflight-infra
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Dispatch artifact validation
|
|
||||||
uses: peter-evans/repository-dispatch@v4
|
|
||||||
with:
|
|
||||||
token: ${{ env.DISPATCH_TOKEN }}
|
|
||||||
repository: cloud-neutral-toolkit/XControl
|
|
||||||
event-type: bootstrap.preflight.artifacts
|
|
||||||
client-payload: |
|
|
||||||
{
|
|
||||||
"env": "${{ inputs.env }}",
|
|
||||||
"workspace": "${{ inputs.workspace }}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# =================================================
|
|
||||||
# Step 3: Provision - Runtime & Core Services
|
|
||||||
# =================================================
|
|
||||||
provision-runtime:
|
|
||||||
name: Provision - Runtime & Core Services
|
|
||||||
needs: preflight-artifacts
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
env:
|
|
||||||
ENV: ${{ inputs.env }}
|
|
||||||
WORKSPACE: ${{ inputs.workspace }}
|
|
||||||
IDENTITY_PLAYBOOK: ${{ inputs.identity_playbook }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout deployment repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Install Ansible
|
|
||||||
run: |
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install -y ansible
|
|
||||||
|
|
||||||
# -----------------------------
|
|
||||||
# DNS
|
|
||||||
# -----------------------------
|
|
||||||
- name: Register DNS Records
|
|
||||||
run: |
|
|
||||||
ansible-playbook \
|
|
||||||
-i inventory/${ENV}/${WORKSPACE}/hosts.ini \
|
|
||||||
playbooks/alicloud_dns_record.yml \
|
|
||||||
--extra-vars "env=${ENV} workspace=${WORKSPACE}" \
|
|
||||||
-D -C
|
|
||||||
|
|
||||||
# -----------------------------
|
|
||||||
# Runtime / Base Layer
|
|
||||||
# -----------------------------
|
|
||||||
- name: Provision Runtime (Docker / Base Services)
|
|
||||||
run: |
|
|
||||||
ansible-playbook \
|
|
||||||
-i inventory/${ENV}/${WORKSPACE}/hosts.ini \
|
|
||||||
playbooks/setup-docker.yml \
|
|
||||||
--extra-vars "env=${ENV} workspace=${WORKSPACE}" \
|
|
||||||
-D -C
|
|
||||||
|
|
||||||
# -----------------------------
|
|
||||||
# Identity (pluggable)
|
|
||||||
# -----------------------------
|
|
||||||
- name: Deploy or Update Identity Service
|
|
||||||
if: ${{ env.IDENTITY_PLAYBOOK != 'skip' }}
|
|
||||||
run: |
|
|
||||||
ansible-playbook \
|
|
||||||
-i inventory/${ENV}/${WORKSPACE}/hosts.ini \
|
|
||||||
playbooks/${IDENTITY_PLAYBOOK} \
|
|
||||||
--extra-vars "env=${ENV} workspace=${WORKSPACE}" \
|
|
||||||
-D -C
|
|
||||||
|
|
||||||
# -----------------------------
|
|
||||||
# Post-check
|
|
||||||
# -----------------------------
|
|
||||||
- name: Post-Provision Status Check
|
|
||||||
run: |
|
|
||||||
ansible-playbook \
|
|
||||||
-i inventory/${ENV}/${WORKSPACE}/hosts.ini \
|
|
||||||
playbooks/check-runtime-status.yml \
|
|
||||||
--extra-vars "env=${ENV} workspace=${WORKSPACE}"
|
|
||||||
152
.github/workflows/stackflow.yaml
vendored
152
.github/workflows/stackflow.yaml
vendored
@ -1,152 +0,0 @@
|
|||||||
name: StackFlow (Plan/Validate)
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
config:
|
|
||||||
description: "Path to StackFlow config (e.g. StackFlow/svc-plus.yaml)"
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
default: "StackFlow/svc-plus.yaml"
|
|
||||||
phase:
|
|
||||||
description: "Phase to run"
|
|
||||||
required: true
|
|
||||||
type: choice
|
|
||||||
options:
|
|
||||||
- validate
|
|
||||||
- dns-plan
|
|
||||||
pull_request:
|
|
||||||
paths:
|
|
||||||
- "StackFlow/**/*.yml"
|
|
||||||
- "StackFlow/**/*.yaml"
|
|
||||||
- "stackflow/**/*.yml"
|
|
||||||
- "stackflow/**/*.yaml"
|
|
||||||
- ".github/workflows/stackflow.yaml"
|
|
||||||
- "scripts/stackflow/**"
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
paths:
|
|
||||||
- "StackFlow/**/*.yml"
|
|
||||||
- "StackFlow/**/*.yaml"
|
|
||||||
- "stackflow/**/*.yml"
|
|
||||||
- "stackflow/**/*.yaml"
|
|
||||||
- ".github/workflows/stackflow.yaml"
|
|
||||||
- "scripts/stackflow/**"
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
resolve-configs:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
outputs:
|
|
||||||
configs: ${{ steps.set.outputs.configs }}
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: Resolve config list
|
|
||||||
id: set
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
|
|
||||||
python - <<'PY' >> "$GITHUB_OUTPUT"
|
|
||||||
import json
|
|
||||||
print("configs=" + json.dumps(["${{ inputs.config }}"]))
|
|
||||||
PY
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
|
|
||||||
git fetch origin "${{ github.base_ref }}" --depth=1
|
|
||||||
files="$(git diff --name-only "origin/${{ github.base_ref }}"...HEAD || true)"
|
|
||||||
else
|
|
||||||
# push
|
|
||||||
files="$(git diff --name-only "${{ github.event.before }}" "${{ github.sha }}" || true)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
configs="$(printf '%s\n' "$files" | grep -E '^(StackFlow|stackflow)/.*\.ya?ml$' || true)"
|
|
||||||
if [[ -z "${configs}" ]]; then
|
|
||||||
if [[ -f "stackflow/svc.plus.yaml" ]]; then
|
|
||||||
configs="stackflow/svc.plus.yaml"
|
|
||||||
else
|
|
||||||
configs="StackFlow/svc-plus.yaml"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
printf '%s\n' "$configs" | python - <<'PY' >> "$GITHUB_OUTPUT"
|
|
||||||
import json, sys
|
|
||||||
configs = [l.strip() for l in sys.stdin.read().splitlines() if l.strip()]
|
|
||||||
print("configs=" + json.dumps(configs))
|
|
||||||
PY
|
|
||||||
|
|
||||||
stackflow:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: resolve-configs
|
|
||||||
concurrency:
|
|
||||||
group: stackflow-${{ github.ref }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
config: ${{ fromJson(needs.resolve-configs.outputs.configs) }}
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Setup Python
|
|
||||||
uses: actions/setup-python@v5
|
|
||||||
with:
|
|
||||||
python-version: "3.11"
|
|
||||||
|
|
||||||
- name: Install deps
|
|
||||||
run: |
|
|
||||||
python -m pip install --upgrade pip
|
|
||||||
python -m pip install -r scripts/stackflow/requirements.txt
|
|
||||||
|
|
||||||
- name: Prepare output dir
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
mkdir -p out
|
|
||||||
|
|
||||||
- name: Run StackFlow (workflow_dispatch)
|
|
||||||
if: ${{ github.event_name == 'workflow_dispatch' }}
|
|
||||||
run: |
|
|
||||||
python scripts/stackflow/runner.py \
|
|
||||||
--config "${{ inputs.config }}" \
|
|
||||||
--phase "${{ inputs.phase }}"
|
|
||||||
|
|
||||||
- name: Validate (CI)
|
|
||||||
if: ${{ github.event_name != 'workflow_dispatch' }}
|
|
||||||
run: |
|
|
||||||
python scripts/stackflow/runner.py \
|
|
||||||
--config "${{ matrix.config }}" \
|
|
||||||
--phase validate \
|
|
||||||
> "out/$(basename "${{ matrix.config }}").validate.json"
|
|
||||||
|
|
||||||
- name: DNS Plan (CI)
|
|
||||||
if: ${{ github.event_name != 'workflow_dispatch' }}
|
|
||||||
run: |
|
|
||||||
python scripts/stackflow/runner.py \
|
|
||||||
--config "${{ matrix.config }}" \
|
|
||||||
--phase dns-plan \
|
|
||||||
> "out/$(basename "${{ matrix.config }}").dns-plan.json"
|
|
||||||
|
|
||||||
- name: Compute artifact name (CI)
|
|
||||||
if: ${{ github.event_name != 'workflow_dispatch' }}
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
name="${{ matrix.config }}"
|
|
||||||
name="${name//\//-}"
|
|
||||||
echo "ARTIFACT_NAME=stackflow-${name}" >> "$GITHUB_ENV"
|
|
||||||
|
|
||||||
- name: Upload artifacts (CI)
|
|
||||||
if: ${{ github.event_name != 'workflow_dispatch' }}
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: ${{ env.ARTIFACT_NAME }}
|
|
||||||
path: out/
|
|
||||||
Loading…
Reference in New Issue
Block a user