.gitlab-ci

https://gitlab.cn/docs/jh/

参考文件

image: 172.16.2.26:5005/docker/ci-tools:latest
variables:
  HARBOR_USERNAME: "admin"
HARBOR_PASSWORD: "Harbor12345"
  HARBOR_REGISTRY: "https://10.2.12.57"
  DOCKER_IMAGE_NAME: "10.2.12.57/test/$CI_REGISTRY_IMAGE:${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHA}"
stages:
  - build
  - test
  - prod
build:
  stage: build
  image: docker:latest
  script:
    - |
      echo "Building Docker image for $CI_COMMIT_BRANCH branch..."
      docker build -t $CI_REGISTRY_IMAGE .
      echo "Pushing Docker image to Harbor..."
      docker login -u $HARBOR_USERNAME -p $HARBOR_PASSWORD $HARBOR_REGISTRY
      echo "succeed login Harbor"
      docker push $CI_REGISTRY_IMAGE
  artifacts:
    expire_in: 60 days
  only:
    - main
    - test
    - dev
deploy:test:
  stage: test
  variables:
    DEPLOY_DESTINATION: "root@10.2.12.203"
    DEPLOY_PATH: "/opt/okx/marketservice/test"
  script:
    - envsubst '${CI_REGISTRY_IMAGE}' < deployments/docker-compose.yaml > /tmp/docker-compose.yaml
    - scp /tmp/docker-compose.yaml $DEPLOY_DESTINATION:$DEPLOY_PATH/docker-compose-${CI_COMMIT_SHA}.yaml
    - ssh $DEPLOY_DESTINATION "ln -sf $DEPLOY_PATH/docker-compose-${CI_COMMIT_SHA}.yaml $DEPLOY_PATH/docker-compose.yaml && cd $DEPLOY_PATH && docker compose -f docker-compose.yaml up -d"
  when: manual
  only:
    - main
    - test
deploy:prod:
  stage: test
  variables:
    DEPLOY_DESTINATION: "root@10.2.12.203"
    DEPLOY_PATH: "/opt/okx/marketservice/prod"
  script:
    - envsubst '${CI_REGISTRY_IMAGE}' < deployments/docker-compose.yaml > /tmp/docker-compose.yaml
    - scp /tmp/docker-compose.yaml $DEPLOY_DESTINATION:$DEPLOY_PATH/docker-compose-${CI_COMMIT_SHA}.yaml
    - ssh $DEPLOY_DESTINATION "ln -sf $DEPLOY_PATH/docker-compose-${CI_COMMIT_SHA}.yaml $DEPLOY_PATH/docker-compose.yaml && cd $DEPLOY_PATH && docker compose -f docker-compose.yaml up -d"
  when: manual
  only:
    - main
    - dev

预定义变量

变量名 值示例 说明
CI_REGISTRY_IMAGE registry.gitlab.com/jyokx/project 项目默认镜像仓库(不含标签)
CI_REGISTRY registry.gitlab.com 镜像仓库地址
CI_COMMIT_SHA a3d5e8f1b2c 当前提交的 Git SHA
CI_COMMIT_REF_NAME maindevelop 当前分支或标签名
CI_COMMIT_BRANCH feature/login 当前分支名(仅分支 pipeline)
CI_COMMIT_TAG v1.0.0 当前标签名(仅标签 pipeline)
CI_PROJECT_NAME okx-marketservice 项目名称
CI_PROJECT_PATH jyokx/okx-marketservice 项目路径(命名空间/项目)
CI_PROJECT_URL https://gitlab.com/jyokx/okx-marketservice 项目网页地址
CI_PIPELINE_ID 123456 当前流水线 ID
CI_JOB_ID 789012 当前任务 ID
CI_JOB_NAME deploy:test 当前任务名称
CI_ENVIRONMENT_NAME production 当前环境名(如果定义了  environment
CI_SERVER_URL https://gitlab.com GitLab 实例地址