ci: 新增infra手动部署流水线

This commit is contained in:
admin
2026-08-02 10:38:10 +08:00
parent 674221a0cb
commit 6a6a31f7d6
2 changed files with 92 additions and 0 deletions
+78
View File
@@ -0,0 +1,78 @@
name: lpt-infra Manual Deploy
on:
workflow_dispatch:
inputs:
environment:
description: '部署环境(all/dev/prod'
required: true
type: choice
options:
- all
- dev
- prod
env:
REPO_URL: http://git.cat-shark.xyz/cat-shark/lpt-infra.git
KUBECTL_VERSION: v1.36.2
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
run: |
set -euo pipefail
git clone "$REPO_URL" .
git checkout "${{ gitea.sha }}"
- name: Setup kubectl
run: |
set -euo pipefail
curl -sLO "https://dl.k8s.io/release/$KUBECTL_VERSION/bin/linux/amd64/kubectl"
chmod +x kubectl
mv kubectl /usr/local/bin/
mkdir -p ~/.kube
echo "${{ secrets.KUBECONFIG_B64 }}" | base64 -d > ~/.kube/config
- name: Apply manifests
run: |
set -euo pipefail
ENV="${{ inputs.environment }}"
case "$ENV" in
all)
echo "Applying dev/ ..."
kubectl apply -f dev/
echo "Applying prod/ ..."
kubectl apply -f prod/
;;
dev)
echo "Applying dev/ ..."
kubectl apply -f dev/
;;
prod)
echo "Applying prod/ ..."
kubectl apply -f prod/
;;
*)
echo "ERROR: unknown environment=$ENV"
exit 1
;;
esac
- name: Verify status
run: |
set -euo pipefail
ENV="${{ inputs.environment }}"
case "$ENV" in
all)
kubectl get deploy,pods -n lpt-dev
kubectl get deploy,pods -n lpt-prod
;;
dev)
kubectl get deploy,pods -n lpt-dev
;;
prod)
kubectl get deploy,pods -n lpt-prod
;;
esac
+14
View File
@@ -107,6 +107,20 @@ kubectl apply -f dev/
kubectl apply -f prod/
```
## 手动部署流水线
`lpt-infra` 提供 Gitea Actions 手动流水线(`.gitea/workflows/deploy.yml`),只支持手动触发,不会随 push 自动执行。
使用方式:
1. 在 lpt-infra 仓库配置 Secret `KUBECONFIG_B64`kubeconfig 的 base64)。
2. Gitea → lpt-infra → Actions → Run workflow。
3. 选择 `environment``all` / `dev` / `prod`
流水线会 checkout 最新代码并执行 `kubectl apply -f dev/``kubectl apply -f prod/`
注意:整目录 apply 会把 Deployment 镜像 tag 重置为清单中的 `:dev` / `:prod`;如果 app CI 用不可变 tag 管理镜像,建议 app 发布后不要立即整目录 apply,或只 apply 本次变更的清单。
## Traefik