DevOps
参考
概念 CONCEPT
什么是 DevOps?
DevOps 是一种软件开发方法。它将持续开发、持续测试、持续集成、持续部署和持续监控贯穿于软件开发的整个生命周期。当前几乎所有的顶尖公司均采用了该方法,用以提高软件开发质量,并缩短软件开发生命周期。从而以达到每个公司对软件产品的期望,交付出客户最满意的产品。
DevOps 生命周期
要想完整的理解 DevOps,我们还需要了解一下 DevOps 的生命周期。接下来,我将通过一张图来展示 DevOps 的生命周期以及它和软件开发生命周期之间的关系。
什么是 CI/CD 流水线?
CI 代表持续集成(Continuous Integration),CD 代表持续交付(Continuous Delivery)和持续部署(Continuous Deployment)。也可以将它们看作是类似于软件开发生命周期的过程。
基于 Kubernetes 构建完整的 DevOps 流水线
==Kubernetes== 是目前最为广泛且流行的容器编排调度系统,它也是现在用来构建云原生应用编排的最佳平台。目前所有云原生应用基本上都会基于 Kubernetes API 去构建。
为什么 Kubernetes 适合构建 DevOps 流水线?
Tips
Gitlab-webhooks 备忘
Gitlab & Jenkins -> webhook
gitlab 要用 root 账号登录,在系统设置里设置:
勾选如上选项,否则报错:
1 | url is blocked requests to local network are not allowed. |
jenkins 全局安全设置 -> 防止跨站点伪造 -> 勾除此项!
- 因为至少本次测试是用不同的域名,肯定跨站点了.
jenkins 全局安全设置 -> 授权策略 -> 勾选『匿名用户具有可读权限』
Jenkins docker 运行时与 Gitlab 关联问题
Jenkins 容器安装 JAVA MAVEN 并 docker commit 新的 image ,防止 init.sh 重新生成后丢失.
Jenkins 容器指定 —hostname 因为要生成固定的ssh, ssh-keygen -t rsa , 将 id_rsa.pub 加入 gitlab 的 SSH Keys,保证 git clone 成功.
完整的启动脚本
1 | cat init.sh |
Gitlab-CI pipeline
1 | #!groovy |