qwen_agent/.circleci/config.yml
2026-04-17 19:14:01 +08:00

224 lines
7.1 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

version: 2.1
orbs:
aws-ecr: circleci/aws-ecr@7.0.0
jobs:
build-and-push:
machine:
image: ubuntu-2204:current
resource_class: medium
parameters:
docker-tag:
type: string
path:
type: string
repo:
type: string
dockerfile:
type: string
steps:
- aws-ecr/build-and-push-image:
checkout: true
account-url: AWS_ECR_ACCOUNT_URL
aws-access-key-id: AWS_ACCESS_KEY_ID
aws-secret-access-key: AWS_SECRET_ACCESS_KEY
create-repo: false
dockerfile: <<parameters.dockerfile>>
path: <<parameters.path>>
region: AWS_REGION
repo: <<parameters.repo>>
tag: '<<parameters.docker-tag>>${CIRCLE_SHA1}'
deploy:
machine:
image: ubuntu-2204:current
resource_class: medium
parameters:
docker-tag:
type: string
path:
type: string
deploy-name:
type: string
deploy-namespace:
type: string
steps:
- run:
name: kubectl apply
command: |
CMD='/home/ubuntu/cluster-for-B/deploy.sh <<parameters.path>> <<parameters.docker-tag>>'${CIRCLE_SHA1}' <<parameters.deploy-name>> <<parameters.deploy-namespace>>'
echo $CMD
ssh ${USER_NAME}@${HOST_NAME} ${CMD}
case "${CIRCLE_BRANCH}" in
dev|staging|prod|onprem-dev)
curl -X POST -H "Content-Type: application/json" -d '{"msg_type":"text","content":{"text":"'${CIRCLE_USERNAME}' 触发了 '${CIRCLE_BRANCH}' 分支部署成功job='${CIRCLE_JOB}',详情:'${CIRCLE_BUILD_URL}'"}}' https://open.larksuite.com/open-apis/bot/v2/hook/3acf274a-1828-494b-a4a2-a3185f5e466d || echo "WARN: Lark notify failed"
;;
esac
docker-hub-build-push:
machine:
image: ubuntu-2404:current
resource_class: medium
parameters:
repo:
type: string
dockerfile:
type: string
docker-tag:
type: string
steps:
- checkout
- run:
name: Build Docker image
command: |
# 检查是否为ARM构建
if [[ "<<parameters.docker-tag>>" == *"arm64"* ]]; then
# 设置Docker buildx进行多平台构建
docker buildx create --use --name multiarch
docker buildx inspect --bootstrap
# 构建ARM64架构的镜像
docker buildx build -t <<parameters.repo>>:<<parameters.docker-tag>> --platform linux/arm64 --no-cache -f <<parameters.dockerfile>> --load .
else
# 普通x86构建
docker build -t <<parameters.repo>>:<<parameters.docker-tag>> --no-cache -f <<parameters.dockerfile>> .
fi
- run:
name: Publish Docker Image to Docker Hub
command: |
echo "$DOCKERHUB_PASS" | docker login -u "$DOCKERHUB_USERNAME" --password-stdin
IMAGE_TAG="0.0.${CIRCLE_BUILD_NUM}"
docker tag <<parameters.repo>>:<<parameters.docker-tag>> <<parameters.repo>>:$IMAGE_TAG
docker push <<parameters.repo>>:<<parameters.docker-tag>>
docker push <<parameters.repo>>:$IMAGE_TAG
if [[ "${CIRCLE_BRANCH}" == "onprem-release" && "<<parameters.docker-tag>>" == "latest" ]]; then
curl -X POST -H "Content-Type: application/json" -d '{"msg_type":"text","content":{"text":"'${CIRCLE_USERNAME}' 触发了 onprem-release Docker Hub 推送成功,镜像:<<parameters.repo>>:'${IMAGE_TAG}'job='${CIRCLE_JOB}',详情:'${CIRCLE_BUILD_URL}'"}}' https://open.larksuite.com/open-apis/bot/v2/hook/3acf274a-1828-494b-a4a2-a3185f5e466d || echo "WARN: Lark notify failed"
fi
workflows:
version: 2
backend_build_and_push:
jobs:
- build-and-push:
name: build-for-test
context:
- ecr-new
path: .
dockerfile: Dockerfile
repo: catalog-agent
docker-tag: ''
filters:
branches:
only:
- dev
- deploy:
name: deploy-for-test
docker-tag: ''
path: '/home/ubuntu/cluster-for-B/gbase-dev/catalog-agent/deploy.yaml'
deploy-name: catalog-agent
deploy-namespace: gbase-dev
context:
- ecr-new
filters:
branches:
only:
- dev
requires:
- build-for-test
- build-and-push:
name: build-for-prod
context:
- ecr-new
path: .
dockerfile: Dockerfile
repo: catalog-agent
docker-tag: ''
filters:
branches:
only:
- prod
- build-and-push:
name: build-for-staging
context:
- ecr-new
path: .
dockerfile: Dockerfile
repo: catalog-agent
docker-tag: ''
filters:
branches:
only:
- staging
- deploy:
name: deploy-for-prod
docker-tag: ''
path: '/home/ubuntu/cluster-for-B/default/catalog-agent/deploy.yaml'
deploy-name: catalog-agent
deploy-namespace: gbase-dev
context:
- ecr-new
filters:
branches:
only:
- prod
requires:
- build-for-prod
- deploy:
name: deploy-for-staging
docker-tag: ''
path: '/home/ubuntu/cluster-for-B/gbase-staging/catalog-agent/deploy.yaml'
deploy-name: catalog-agent
deploy-namespace: gbase-staging
context:
- ecr-new
filters:
branches:
only:
- staging
requires:
- build-for-staging
- docker-hub-build-push:
name: docker-hub-build-push
repo: gptbasesparticle/catalog-agent
dockerfile: Dockerfile
docker-tag: latest
filters:
branches:
only:
- onprem-release
- docker-hub-build-push:
name: docker-hub-build-push-arm
repo: gptbasesparticle/catalog-agent
dockerfile: Dockerfile
docker-tag: latest_arm64
filters:
branches:
only:
- onprem-release
# 为 onprem-dev 环境部署
- build-and-push:
name: build-for-onprem-dev
context:
- ecr-new
path: .
dockerfile: Dockerfile
repo: catalog-agent
docker-tag: ''
filters:
branches:
only:
- onprem-dev
- deploy:
name: deploy-for-onprem-dev
docker-tag: ''
path: '/home/ubuntu/cluster-for-B/onprem-dev/catalog-agent/deploy.yaml'
deploy-name: catalog-agent
deploy-namespace: onprem-dev
context:
- ecr-new
filters:
branches:
only:
- onprem-dev
requires:
- build-for-onprem-dev