东坑仿做网站,wordpress 自己写首页,网络营销的特点是什么?,网页网站写在之前
笔者最近准备开始入坑CNCF毕业的开源项目#xff0c;看到其中有一组开源项目的分类就是DevOpts。这个领域内比较出名的项目是Argocd#xff0c;Argo CD 是一个用于 Kubernetes 的持续交付 (Continuous Delivery) 工具#xff0c;它以声明式的方式实现了应用程序的…写在之前
笔者最近准备开始入坑CNCF毕业的开源项目看到其中有一组开源项目的分类就是DevOpts。这个领域内比较出名的项目是ArgocdArgo CD 是一个用于 Kubernetes 的持续交付 (Continuous Delivery) 工具它以声明式的方式实现了应用程序的自动化部署和持续集成。Argo CD 借助 Kubernetes 的资源对象来定义应用程序提供了一个直观的 Web 用户界面以及一个命令行界面CLI来管理和监控 Kubernetes 上的应用。 Argo CD 是基于 GitOps 的持续交付工具。GitOps 是一种由 Weaveworks 发明的持续交付方法它结合了 Git 和 Kubernetes以实现一种强大的基础设施即代码Infrastructure as CodeIaC模式。 在 GitOps 中对基础设施的任何更改都应该以 Git 上的代码提交的形式实现。Argo CD 能够与 Git 存储库进行集成自动从Git 存储库拉取与预期状态相符的应用程序描述并自动将该应用程序部署到 Kubernetes 中。Argo CD 还实现了自动同步和协调机制来确保应用程序的运行状态与 Git 中定义的期望状态保持一致。 通过 GitOps 和 Argo CD用户可以快速构建、测试和管理他们的应用程序并快速进行版本控制和回滚。以这种方式管理基础设施可以大大提高应用程序的可靠性、安全性和可重复性。 基于githubargocd的这套流程中其实有有一个东西没有闭环那就是argocd本身是可以私有化部署的但是github本身是不提供私有化部署版本的这就导致我们在实际开发的时候必须将代码托管到github上。好在gitlab提供了私有化部署的方式且gitlab本身也具有cicd的完整解决方案。本文将围绕gitlab官网的描述逐步阐述自己的实现过程期望能够带给大家一定的启发。 gitlab的官方文档https://docs.gitlab.com/ee/ 概念
CICD是持续集成与持续交付Continuous Integration and Continuous Delivery的简称。它是一种软件开发实践通过自动化的构建、测试和部署过程实现团队快速交付高质量的软件。持续集成CI指在代码开发过程中频繁地将代码集成到共享代码仓库并进行自动化的构建和测试。持续交付CD则是在持续集成的基础上将经过测试的代码自动部署到生产环境中。
DevOps是开发Development与运维Operations的组合词它是一种软件开发文化和工作方式。DevOps的目标是通过开发团队和运维团队之间的合作与整合提高软件开发和运维的效率和质量。通过自动化工具和流程DevOps实践着持续集成、持续交付和持续部署促进开发与运维之间的协作和沟通加速软件开发和部署的速度提高软件的稳定性和可靠性。
我的理解是 ci的过程就是代码的集成、打包、将制品分发到不同的私有物料仓库 cd将代码打包的镜像等物料批量部署到指定的机器上
gitlab的版本许可
gitlab的版本即许可 建议大家在安装gitlab的时候能够正确辨别不同版本的权限边界 ps吐槽一下官方文档非常详细但是文章大多篇幅不大数量太多了文档中那个的链接层层嵌套按理说版笔者也是
gitlab的安装
官方文档中给出了多种安装方式Helm、docker、二进制本文选择使用docker安装gitlab的测试环境。
步骤一初始化gitlab的工作目录
# 设置gitlab的工作目录
GITLAB_HOME/srv/gitlab
mkdir -p $GITLAB_HOME
echo export GITLAB_HOME$GITLAB_HOME ~/.bash_profile
source ~/.bash_profilegitlab容器和宿主机的目录映射关系如下表所示
宿主机目录容器目录备注$GITLAB_HOME/data/var/opt/gitlab用于存储应用程序数据。$GITLAB_HOME/logs/var/log/gitlab用于存储日志。$GITLAB_HOME/config/etc/gitlab用于存储GitLab 配置文件
步骤二启动gitlab容器 #运行如下命令启动gitlab的docker容器
sudo docker run --detach \--hostname gitlab.example.com \--publish 443:443 --publish 80:80 --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 \--shm-size 256m registry.gitlab.cn/omnibus/gitlab-jh:latest上述命令有几点需要注意
如果机器没有配置域名解析的话建议hostname可以不用传递如果机器的443或22、80端口被占用了可以仿照笔者执行如下步骤修改gitlab的端口
1修改gitlab容器的启动命令
sudo docker run --detach \--publish 8000:8000 --publish 2200: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 \--shm-size 256m gitlab/gitlab-ce:latest2进入容器内部
#进入容器
sudo docker exec -it gitlab /bin/bash3修改/etc/gitlab/gitlab.rb文件
vi /etc/gitlab
#修改值
external_url http://gitlab.example.com:8000
#添加值
gitlab_rails[gitlab_shell_ssh_port] 2200
重新启动gitlab
gitlab-ctl reconfigure 5退出gitlab容器
exit步骤三获取root账户的初始密码
#在宿主机上执行
sudo docker exec -it gitlab grep Password: /etc/gitlab/initial_root_password此时我们可以在ui界面上验证我们部署的gitlab程序了 gitlab-runner安装 gitLab Runner 是一个与 GitLab CI/CD 集成的开源项目用于执行自动化构建和部署任务。它允许您在 GitLab上创建管道 (pipeline)并使用配置文件定义和管理不同的阶段和任务。GitLab Runner 可以安装在各种操作系统上并作为一个代理程序运行负责执行 GitLab CI/CD 中定义的作业。它可以与 GitLab服务器进行通信接收要执行的作业并将结果返回给 GitLab。 下面给出两中安装方式
一种是二进制安装方式该方式主要是利用gitlab-runner的宿主机环境执行cicd的工作流程一种是docker安装方式该方式主要是采用了类似于docker in docker的形式gitlab-runner被包装在docker容器内整个工作流程是在docker容器内执行的其中每一个作业都可以定制的在不同的容器镜像环境下执行。该方式后文演示demo的时候会详细解读。官方文档不建议gitlab和gitlab-runner部署在同一台机器上所以后文的gitlab-runner是部署在另一台机器上的。
二进制安装方式
下面给出ubuntu下的安装脚本其余操作系统可以从下面的链接中找到对应的二进制包进行安装
# 选择合适的deb包
curl -LJO https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_amd64.deb
# 安装deb文件
dpkg -i gitlab-runner_amd64.debdocker安装方式
此设置将对 Docker 守护进程的完全控制权委托给每个 GitLab Runner 容器。其效果是如果你在还运行其他有效负载的 Docker 守护进程中运行 GitLab Runner隔离保证会中断。所以不能在有k8s纳管的机器上部署docker版本的gitlab-runner容器。
docker run -d --name gitlab-runner --restart always \-v /var/run/docker.sock:/var/run/docker.sock \-v gitlab-runner-config:/etc/gitlab-runner \gitlab/gitlab-runner:latestgitlab-runner的注册
上文中我们安装了gitlab-runner但是有一个问题我们一直没有解决gitlab-runner和gitlab部署在不同的机器上两者是怎么建立关联的。
在UI界面上创建分组后找到runner的入口 创建runners
tags可以选择Run untagged jobs 点击create runner会跳转都runner注册的引导页面 我们在部署gitlab-runner的机器上依次执行上述命令。我们以docker容器启动的gitlab-runner为例详细展示注册流程二进制安装的gitlab-runner的注册流程一致 step1注册gitlab-runner
#首先我们需要先进入到容器内部
docker exec -it gitlab-runnner /bin/bash
#执行注册命令该命令从UI界面上copy
gitlab-runner register --url http://XXX --token xxx这里有两点需要注意首先是runner executor的类别我们选择的是docker模式的gitlab runner后续是gitlab-runner所在容器的基础镜像我们选择centos
#注册成功后退出容器
exit
#重启容器
docker restart gitlab-runner
只是我们可以点击界面上的按钮跳转到runner界面 基于gitlab的简单实践 官方文档给出的demo:https://docs.gitlab.com/ee/ci/quick_start/ 前置条件 基于前文描述诸位如果已经搭建好gitlabgitlab-runner的环境后可基于此来验证gitlab cicd的完整执行流程
步骤一 从UI界面上已经绑定runner的group分组中创建一个项目,并在项目的根目录下创建.gitlab-ci.yml文件文件内容如下
build-job:stage: buildscript:- echo Hello, $GITLAB_USER_LOGIN!test-job1:stage: testscript:- echo This job tests somethingtest-job2:stage: testscript:- echo This job tests something, but takes more time than test-job1.- echo After the echo commands complete, it runs the sleep command for 20 seconds- echo which simulates a test that runs 20 seconds longer than test-job1- sleep 20deploy-prod:stage: deployscript:- echo This job deploys something from the $CI_COMMIT_BRANCH branch.environment: production
步骤二点击pipelines查看执行结果 写在之后
期望本文可以为大家揭开基于gitlab的cicd的神秘面纱。笔者没有详细介绍gitlab-ci.yaml的语法规范也没有部署高可用的gitlab和gitlab-runner这些在gitlab官网中均有详细的介绍。笔者实践后的是基于gitlab的cicd流程能够很好的契合小团队的并行开发和部署。后续文章将介绍官网的一个前端部署实例