Gitlab CI
.gitlab-ci
参考文件
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 |
main, develop |
当前分支或标签名 |
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 实例地址 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 木素音的小站!