feat:增加流水线
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
name: 数据库迁移 - 回滚(危险)
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
confirm:
|
||||
description: '将删除所有迁移创建的表及其数据,不可恢复。确认请输入 DELETE(大写)'
|
||||
required: true
|
||||
default: ''
|
||||
|
||||
concurrency:
|
||||
group: migrate
|
||||
cancel-in-progress: false
|
||||
|
||||
env:
|
||||
REGISTRY: git.lzcwy.cn
|
||||
IMAGE: git.lzcwy.cn/zhengchiliu/zt-closet-backend
|
||||
MIGRATE_TAG: migrate
|
||||
|
||||
jobs:
|
||||
migrate-down:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: 校验确认词
|
||||
env:
|
||||
IN_CONFIRM: ${{ gitea.event.inputs.confirm }}
|
||||
run: |
|
||||
if [ "${IN_CONFIRM:-}" != "DELETE" ]; then
|
||||
echo "确认词不对(收到 '${IN_CONFIRM:-空}')。必须输入 DELETE 才会执行。" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "确认通过"
|
||||
|
||||
- name: 拉取代码
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: 确认 docker 可用
|
||||
run: docker version --format 'Server: {{.Server.Version}}'
|
||||
|
||||
- name: 登录 Gitea 镜像仓库
|
||||
env:
|
||||
REGISTRY_USER: ${{ secrets.ZT_CLOSET_REGISTRY_USER }}
|
||||
REGISTRY_TOKEN: ${{ secrets.ZT_CLOSET_REGISTRY_TOKEN }}
|
||||
run: |
|
||||
echo "$REGISTRY_TOKEN" | docker login "$REGISTRY" -u "$REGISTRY_USER" --password-stdin
|
||||
|
||||
- name: 构建并推送迁移镜像
|
||||
run: |
|
||||
docker build \
|
||||
-f scripts/dockerfile/Dockerfile.migrate \
|
||||
-t "$IMAGE:$MIGRATE_TAG" \
|
||||
.
|
||||
docker push "$IMAGE:$MIGRATE_TAG"
|
||||
|
||||
- name: 生产机执行回滚(结束即删容器)
|
||||
env:
|
||||
SSH_KEY: ${{ secrets.ZT_CLOSET_PROD_SSH_KEY }}
|
||||
SSH_HOST: ${{ vars.ZT_CLOSET_PROD_SSH_HOST }}
|
||||
SSH_USER: ${{ vars.ZT_CLOSET_PROD_SSH_USER }}
|
||||
run: |
|
||||
mkdir -p ~/.ssh && chmod 700 ~/.ssh
|
||||
printf '%s\n' "$SSH_KEY" > ~/.ssh/deploy_key
|
||||
chmod 600 ~/.ssh/deploy_key
|
||||
SSHOPT="-i ~/.ssh/deploy_key -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
|
||||
|
||||
ssh $SSHOPT "$SSH_USER@$SSH_HOST" 'bash -s' <<'REMOTE'
|
||||
set -e
|
||||
DIR=/opt/zt-closet
|
||||
IMAGE=git.lzcwy.cn/zhengchiliu/zt-closet-backend:migrate
|
||||
|
||||
cd "$DIR" || { echo "目录不存在: $DIR"; exit 1; }
|
||||
[ -f configs/config.yaml ] || { echo "缺 configs/config.yaml"; exit 1; }
|
||||
|
||||
docker pull "$IMAGE"
|
||||
|
||||
docker run --rm \
|
||||
--network host \
|
||||
-v "$DIR/configs:/app/configs:ro" \
|
||||
-v zt-go-build-cache:/root/.cache/go-build \
|
||||
-e TZ=Asia/Shanghai \
|
||||
"$IMAGE" down
|
||||
REMOTE
|
||||
Reference in New Issue
Block a user