软创互联

自动部署

gitlab
docker

#1

gitlab 代码仓库自动部署

注册 gitlab-runner 服务

!! 注意:也可以使用share-runner 不一定每个代码库都要注册 https://docs.gitlab.com/ee/ci/runners/

联系gitlab管理员,登录到目标服务器运行以下命令。注意替换对应的参数值

 docker exec -it gitlab-runner gitlab-runner register -n \
  --executor "docker" \
  --docker-image "docker:stable" \
  --docker-volumes "/var/run/docker.sock:/var/run/docker.sock" \
  --url "https://gitlab.gugud.com/" \
  --registration-token "XXXXXXXXXXXXX" \
  --description "user-api-chenc" \
  --tag-list "user" \
  --run-untagged \
  --locked="false"

参数项 registration-token 需要从代码库的 设置 —> CI/CD 中提取值

编写 .gitlab-ci.yml 并提交到代码库

以下是一个配置样例

image: docker:stable

stages:
  - build
  - test
  - deploy

variables:
  DOC_ADDRES_PORT: "41003"
  MOCK_ADDRES_PORT: "42003"
  DOCKER_NAME: 'user'

release_job:
  stage: deploy
  before_script:
    - "if [ -n $(docker ps|awk '{if($NF~/'\"$DOCKER_NAME$\"'/){print $1}}') ]; then docker ps|awk '{if($NF~/'\"$DOCKER_NAME$\"'/){print $1}}'|xargs -i docker kill {};fi"
    - "if [ -n $(docker ps -a|awk '{if($NF~/'\"$DOCKER_NAME$\"'/){print $1}}') ]; then docker ps -a|awk '{if($NF~/'\"$DOCKER_NAME$\"'/){print $1}}'|xargs -i docker rm {};fi"
  script:
    - "docker run -itd --name $DOCKER_NAME -p $DOC_ADDRES_PORT:3000 -p $MOCK_ADDRES_PORT:3001 -e 'THEME_VARIABLES=slate' -e 'THEME_TEMPLATE=triple' aglio-drakov"
    - "ls -l"
    - "ls|xargs -i docker cp {} $DOCKER_NAME:/app"
    - "docker restart $DOCKER_NAME"
  tags:
    - user
  only:
    - master

当 部署成功,可以在如下图所示位置想看自动部署日志

如果成功,则你已可以用 api.gugud.com:端口号 访问

.gitlab-runner.yml 编写参考资料

配置域名代理

由管理员 到 api.gugud.com 服务器上配置nginx代理

API URL 配置约定

约定

  • API_BASE_URL=https://api.gugud.com
  • API文档URL(API_DOC_URL) = API_BASE_URL + 项目名称或用户名 + 代码库名称 + doc
  • API Mock的URLL(API_MOCK_URL) = API_BASE_URL + 项目名称或用户名 + 代码库名称 + mock
  • API实现的URL(API_URL) = API_BASE_URL + 项目名称或用户名 + 代码库名称

样例

进化探索

  • 研究集成 k8s 部署

#2

gitlab集成k8s(runner)

CICD联动阿里云容器服务Kubernetes实践之GitLab CI篇(一)

https://rorschachchan.github.io/2018/08/15/使用gitlab搭配阿里云容器镜像服务构建镜像/

https://medium.com/@didanaiavs/devops-by-gitlab-kubernetes-on-aws-2ef9f7c1e3eb