Files
doc_ai_backed/.gitlab-ci.yml
liuyuanchuang 48e63894eb init repo
2025-12-10 18:33:37 +08:00

84 lines
2.4 KiB
YAML

stages:
- build
- deploy
build_image:
stage: build
image: docker:26.0.0
services:
- name: docker:dind
tags:
- gitlab-release-ci
variables:
CI_DEBUG_TRACE: "true"
IMAGE_NAME: "doc_ai"
before_script:
- echo "start build image"
- docker info || { echo "Docker is not running"; exit 1; }
- docker ps || { echo "Docker daemon is not available"; exit 1; }
- echo "$DOCKER_PASSWORD" | docker login --username=$DOCKER_USERNAME --password-stdin $ACR_REGISTRY_URL
- docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD $ACR_REGISTRY_URL
script:
- docker build -t $ACR_REGISTRY_URL/bitwsd/$IMAGE_NAME:${CI_COMMIT_SHA:0:9} .
- docker push $ACR_REGISTRY_URL/bitwsd/$IMAGE_NAME:${CI_COMMIT_SHA:0:9}
only:
- main
deploy_image:
stage: deploy
variables:
PORT: 8024
IMAGE_NAME: "doc_ai"
tags:
- shell-excutor
script:
- |
for host in $DEPLOY_HOSTS; do
echo "Deploying to $host ..."
# 通过 SSH 执行远程命令
ssh $DEPLOY_USER@$host "
# 停止并删除旧容器(如果存在)
docker stop $IMAGE_NAME || true
docker rm $IMAGE_NAME || true
# 登录容器仓库
echo \"$DOCKER_PASSWORD\" | docker login --username=$DOCKER_USERNAME --password-stdin $ACR_REGISTRY_URL
# 拉取新镜像
docker pull $ACR_REGISTRY_URL/bitwsd/$IMAGE_NAME:${CI_COMMIT_SHA:0:9}
# 启动新容器
docker run -d --name $IMAGE_NAME \
-p $PORT:8024 \
--restart unless-stopped \
$ACR_REGISTRY_URL/bitwsd/$IMAGE_NAME:${CI_COMMIT_SHA:0:9}
"
echo "Deployed to $host"
done
only:
- main
deploy_image_dev:
stage: deploy
variables:
PORT: 8024
BRANCH: "test"
APP_NAME: "doc_ai"
ENV: "dev"
tags:
- shell-excutor
before_script:
- echo "$DOCKER_PASSWORD" | docker login --username=$DOCKER_USERNAME --password-stdin $ACR_REGISTRY_URL
- docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD $ACR_REGISTRY_URL
script:
- echo "Working in $CI_PROJECT_DIR"
- git config --global --add safe.directory $CI_PROJECT_DIR
- git pull origin $BRANCH
- docker stop $APP_NAME || true
- docker rm $APP_NAME || true
- docker build -t $APP_NAME .
- docker run -d --name $APP_NAME -p $PORT:8024 --restart unless-stopped $APP_NAME -env dev
- echo "Deployed Go binary on Aliyun ECS with ${ENV} environment"
only:
- test