【持续集成】持续集成学习文档

由于平时开发遇到很多问题都是关于持续集成方便的,所以乘着项目结束的空闲时间学习一下

平时开发主要遇到的有关问题

  • 不知道CI是啥
  • 不知道CI跑挂了会发生啥
  • 不知道数据库更改为啥不生效
  • 不知道项目是怎么自动部署的
  • 不知道怎么把部署目标服务器和Gitlab关联

为了解决这些问题开始学习持续集成相关的东西

  • Gitlab部署和CI相关设置
  • Gitlab-Runner安装和使用
  • Sentry的部署和使用
  • 钉钉机器人应用
  • 以上相关问题的理解和解决

什么是CI

  • Continuous Integration (持续集成)
  • 多人合作开发,多部门合作开发
  • 开发迭代历史记录,方便代码集成管理
  • 自动部署测试,降低测试环境部署的时间成本

代码管理

  • Gitlab代码版本管理工具
# docker 安装
export GITLAB_HOME=/srv/gitlab
sudo docker run --detach \
  --hostname aa.bb.cc \
  --env GITLAB_OMNIBUS_CONFIG="external_url 'http://aa.bb.cc:8090'; gitlab_rails['lfs_enabled'] = true; gitlab_rails['gitlab_shell_ssh_port'] = 22; nginx['listen_port'] = 8090;" \
  --publish 8090:8090 --publish 22:22 \
  --name gitlab \
  --restart always \
  --volume $GITLAB_HOME/config:/etc/gitlab \
  --volume $GITLAB_HOME/logs:/var/log/gitlab \
  --volume $GITLAB_HOME/data:/var/opt/gitlab \
  gitlab/gitlab-ee:latest

Gitlab-Runner 是什么

Gitlab-Runner是Gitlab配套的CI工具,安装在测试服务器上,定时轮询Gitlab指定项目情况,有部署任务会自动拉回本地进行部署

  • 测试服务器需要安装 gitlab-runner 才能与 Gitlab 协同工作
# ubuntu18.04 安装
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
export GITLAB_RUNNER_DISABLE_SKEL=true; sudo -E apt-get install gitlab-runner
# 注册gitlab-runner,启用 docker executor (测试服务器需要安装docker)
sudo gitlab-runner register \
  --non-interactive \
  --url "http://aa.bb.cc:8090/" \
  --registration-token "pexrtA2ggQoEvuxI" \
  --executor "docker" \
  --docker-image alpine:latest \
  --description "docker-runner" \
  --tag-list "study-ci" \
  --run-untagged="true" \
  --locked="false" \
  --access-level="not_protected"
  
# 部分参数解释,详细请参考官方文档
--url 指定要协同工作的Gitlab生成的CI地址,该地址直接指向某个特定的项目
--registration-token Gitlab生成的CI Token,和 url 一起使用
--executor 指定Gitlab-Runner以何种方式工作,[官方文档](https://docs.gitlab.com/runner/executors/README.html)
--tag-list 指定该测试服务器的标签属性,相当于起个名字或多个名字
  • .gitlab-ci.yml 文件
    该文件内容告诉 Gitlab-Runner 具体执行的动作、流程
    一个简单的管道通常分为三个阶段:
    • build 构建代码运行环境,安装相关依赖
    • test 执行代码测试
    • deploy 执行项目部署
      ps: 不是所有的阶段都必须有,没有的会自动忽略掉,比如代码测试

钉钉机器人

略 …

Sentry 部署和使用

  • Sentry 是什么
    Sentry是一个异常日志集中收集系统
# github上拉取最新版本安装脚本
git clone https://github.com/getsentry/onpremise.git
# 安装 Sentry, 安装过程中会报一些错,只有没有直接退出安装,不用管
./install.sh
  • Sentry 使用
    Sentry 的 WebHook 和钉钉机器人配合使用,可以达到和Gitlab类似的效果 (妈妈再也不担心我不知道服务器上的代码为什么崩了)
# flask sentry-sdk
pip install sentry-sdk[flask]

# flask 初始化
sentry_sdk.init(
    "http://6znp1fVFaZPwML3YgLYidV5rcXtNNbUW@home.671201.xyz:8004/x",
    integrations=[FlaskIntegration()],
    traces_sample_rate=1.0
)

# django sentry-sdk
pip install sentry-sdk

# django 初始化
sentry_sdk.init(
    "http://6znp1fVFaZPwML3YgLYidV5rcXtNNbUW@home.671201.xyz:8004/x",
    integrations=[DjangoIntegration()],
    traces_sample_rate=1.0,
    send_default_pii=True
)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值