init repo
This commit is contained in:
83
.gitlab-ci.yml
Normal file
83
.gitlab-ci.yml
Normal file
@@ -0,0 +1,83 @@
|
||||
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
|
||||
Reference in New Issue
Block a user