1987WEB视界-分享互联网热门产品和行业

您现在的位置是:首页 > WEB开发 > 正文

WEB开发

基于Jenkins+Docker+Git的CI流程初探

1987web2023-10-06WEB开发133
在如今的互联网时代,随着软件开发复杂度的不断提高,软件开发和发布管理也越来越重要。目前已经形成一套标准的流程,最重要的组成部分就是持续集成(ContinuousIntegration,CI)及持续部

在如今的互联网时代,随着软件开发复杂度的不断提高,软件开发和发布管理也越来越重要。目前已经形成一套标准的流程,最重要的组成部分就是持续集成(Continuous Integration,CI)及持续部署、交付(CD)。在此,我们来以一个案例初步了解 CI 流程。那么什么是 CI 呢?简单来讲,CI 就是将传统的代码合并、构建、部署、测试都集成在一起,不断地执行这个过程,并对结果进行反馈。

CI 流程设计图:

工作流程:

1. 开发人员提交代码到Git版本仓库;

2. Jenkins人工/定时触发项目构建;

3. Jenkins拉取代码、代码编码、打包镜像、推送到镜像仓库;

4. Jenkins在Docker主机创建容器并发布

主机环境规划:

docker-jenkins: 10.0.0.98

docker-git-harbor:10.0.0.99

1. 部署Git代码版本仓库

安装:

1

[root@docker-git-harbor ~] yum install git -y

配置git用户:

1

2

[root@docker-git-harbor ~] useradd git

[root@docker-git-harbor ~] passwd git

创建库:

1

2

3

4

5

6

7

[git@docker-git-harbor ~]$ mkdir tomcat-java-demo.git

[git@docker-git-harbor ~]$ cd tomcat-java-demo.git/

[git@docker-git-harbor tomcat-java-demo.git]$ git --bare init

Initialized empty Git repository in /home/git/tomcat-java-demo.git/

[git@docker-git-harbor tomcat-java-demo.git]$ ls

branches config description HEAD hooks info objects refs

[git@docker-git-harbor tomcat-java-demo.git]$

另一台docker-jenkins访问该仓库:

1

2

3

4

5

6

7

8

9

10

11

12

13

[root@docker-jenkins ~] git clone git@10.0.0.99:/home/git/tomcat-java-demo.git

Cloning into solo...

The authenticity of host 10.0.0.99 (10.0.0.99) cant be established.

ECDSA key fingerprint is SHA256:XNWQhGsAsqd84k/6OYV3xl1+mPGjtASsxeV1YVLZVas.

ECDSA key fingerprint is MD5:b4:bd:16:2b:de:e7:7c:fd:c5:dd:91:75:20:ff:3e:0a.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added 10.0.0.99 (ECDSA) to the list of known hosts.

git@10.0.0.99s password:

warning: You appear to have cloned an empty repository.

[root@docker-jenkins ~] ls

anaconda-ks.cfg tomcat-java-demo.git

[root@docker-jenkins ~] ls tomcat-java-demo.git

[root@docker-jenkins ~]

模拟生产项目,拉取github上的一个demo,并上传至本地git库

1

3.使用gitlab的CI/CD中pipelines进行部署

整个持续集成和持续部署的流程如下:

1)创建该项目所需要的runner

有的时候我们不同的项目常常需要不同的包,为了避免我们的gitlab-ci服务器上的环境比较杂乱,因此我们可以使用docker来当作runner的executor,因此我们给该项目创建了三个runner,需要用到python2和python3的环境,因为我们注册两个不同tags的runner,另外还创建了一个tags为demo的shell的runner


                                

gitlab和jenkins是什么关系?如何使用啊?