GitLab + 젠킨스는 자동 배포 + 지속적인 통합을 달성

I. 소개 실질적으로 온라인 코드를 자동

1. 소프트웨어 개발 수명주기

창조적 인 제품 관리자의 감독 --- --- --- 프로젝트 개발 팀 --- 테스트 팀 (검은 색과 흰색 상자) ---에 라인 유지 보수 작업
제품 매니저 --- --- 플러스 수요 --- 개발 팀 테스트 팀 - - 라인 운영 및 유지 보수 업데이트 코드

2. 환경은 무엇인가?

개발 환경 : 설치 PHP는 파이썬의 자체 개발 도구를 사용하여 자신의 로컬 컴퓨터를 개발한다.
테스트 환경 : 함께 여러 개인 코드가 다시 실행 테스트 MySQL은에 그렇게 레디 스 실행합니다.
시험판 환경 : 전문 시험 소규모 테스트의 도메인 내에서 온라인 데이터베이스에 직접 연결.
제작 : 환경의 각 라인 항목 환경 (낮은 선이없는 온라인 다중 도메인 함께 넣어 될 수 있습니다).

3. 지속적인 통합 (CI)이란 무엇입니까?

하루 코드 합병 지속적인 통합되면 우리는 수행했다.
svn의 자식 (등) : 여러 개발자는 코드 라이브러리 (버전 제어 관리 소프트웨어) 코드 라이브러리 도구로 함께 관리되는 코드를 작성하는 방법. (버전 제어 시스템 : 메커니즘과 유사 스냅 샷 증분 백업, 즉, 업데이트의 모든 버전이 새 버전을 만들고, 원래의 기초의 변화의 내용을 보존하는 것, 이전 버전의 빠른 복귀 유지됩니다 롤.)
그래서, 먼저 업로드되는 순서를 제출하는 시간이, 합병 의지 충돌의 시간에, 매일 병합 코드, 분쟁 예방을 할 필요가, 그리고 당신이 세우고 내가 제외한 갈등을 결합 업로드 그때 나는 주요 지점에 업로드 할 수 있습니다. 지속적인 통합은 개발 팀의 구성원이 통합은 하루에 여러 번 발생할 수 있습니다 즉, 일반적으로 각 구성원 적어도 통합 한 번, 자주 작업을 통합하는 것으로, 소프트웨어 개발 방법입니다. (자동화 된 테스트, 출판, 편집 포함) 각각의 통합 자동화 된 빌드는 모든 통해, 그래서 가능한 한 빨리으로 통합 오류를 찾을 수 있는지 확인합니다. 많은 팀은이 과정이 상당히 팀이 더 빨리 응집 소프트웨어를 개발할 수 있도록하는 것이, 통합 문제를 줄일 수 있다는 것을 찾을 수 있습니다.

4. 연속 배달은 무엇인가?

첫째, 개발 단위 테스트는 --- 마지막으로 함께 모든 코드 --- 코드 품질 검사를 테스트했습니다.

5. 연속 배포는 무엇입니까?

라인은 계속 배포 자주 코드입니다.

6. 없음 지속적인 통합

할 통합 프로젝트 모듈, 우리는 인터페이스의 많은> == 통과 시간을 많이 낭비하지 않는 발견
수동 포장 된 최신 코드 ==> 빌드 프로세스 불투명 컴파일하는 데 필요한
손으로 기본적으로 온라인 릴리스 코드를 ==> 스크립트 비행

7. 연속 통합 모범 관행

단일 코드베이스가 유지
자동화를 구축하게
테스트 빌드의 일부입니다 수행하는
통합 로그 및 이력
통합 관리 라이브러리 의존성 사용하여
하루에 한 번 이상에서 통합을

두 .jenkins 기본

참고 : 젠킨스 설치하는 방법에 대한 설명서를 참조하십시오 https://www.jianshu.com/p/343bdd43c82a
생략 설치하는 방법을.

1. 로그인 젠킨스 웹 UI 프로젝트를 만들 인터페이스

프로젝트 이름 (무료-작업)를 입력하고 프리 스타일 소프트웨어 프로젝트를 빌드를 선택합니다

3. 올 점프 위에서 만든 구성 후, 기존의 구조를 드롭 선택 (아래 일반적으로 5 ~ 7 일에 일 동안 보관하실 수 있습니다)

4. 그런 다음 구성 위를 선택하고 쉘 명령 셸을 실행 실행 선택

이 쉘 명령을 실행할 수 있습니다 5. 있기 때문에, 우리는 PWD를 수행 여기서 기본 작업 디렉토리를 보면합니다

위의 직후 구축 저장을 클릭 6. 다음은 빌드 역사, 생성합니다 (즉, 파란색을 의미 정상, 적색 즉, 문제가있는 경우)

내장 7. 우리는 콘솔 출력 세부 정보보기를 선택 빌드 ID 드롭 다운 상자를 클릭 할 수 있습니다

출력 8. 채택은 우리가 /root/.jenkins/workspace/에 젠킨스의 기본 작업 디렉토리를 볼 수 있습니다 (프로젝트 명)

이 쉘 명령을 실행할 수 있습니다 9. 때문에, 우리는 파일을 만들려고; 테이블로 돌아 구성을 클릭합니다

10. 파일 및 free.txt 저장 만들기

11. 상기와 같은, 우리는 빌드 즉시 클릭

12. 콘솔 출력이 같은 건물을보고 한 후에는 빌드 성공을 볼 수 있습니다

빌드가 성공 때문에 13, 우리는 성공을 만들 수 있는지 확인하기 위해 서버를 입력
[root@jenkins ~]# cd /var/lib/jenkins/workspace/free-job/
[root@jenkins /var/lib/jenkins/workspace/free-job]# ls
free.txt

三.GitLab+Jenkins自动化部署及更新

流程图如下:

说明:通过gitlab+Jenkins实现代码的自动更新同步代码到web服务器站点目录。此处示例后端web服务器使用nginx。
环境规划以及ip分配如下表:

注意:开发环境这里直接放在gitlab服务器上这里将git也部署在gitlab服务器上。git基本使用请参考:https://www.jianshu.com/p/96c4a6d0c587

3.1gitlab 配置

说明:首先在gitlab上面创建一个群组,并创建一个项目,将代码push 到代码仓库中(项目)。创建一个开发用户(用于提交代码等),同时在Jenkins服务器上面生成ssh秘钥并将key添加到新建用户的ssh认证下面。

1.登录gitlab点击项目,然后点击创建一个群组

2.点击新建群组

3.输入新建群组的相关信息并点击创建



4.新建一个项目



5.设置秘钥进行
[root@gitlab ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:WyI0C3MBpUdsAKQsDkEf99WmtCUvcXUoxWL+NgF2R0I root@gitlab
The key's randomart image is:
+---[RSA 2048]----+
|ooooo*+  .. =Eoo |
|.o. oo+..+ @ +o. |
|+. .+.=.. & = .  |
|+    * o + o .   |
| .    o S o . .  |
|       . +   +   |
|        .   . .  |
|                 |
|                 |
+----[SHA256]-----+
[root@gitlab ~]# cat .ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDnnyT5IRLN2AzknCPE3pLnLhH0Vq6jGJsYsjDaLKBQNkBD4coTMW47PJpjxL/pjwyV9KaQ3BuEqam8jQlpaDYUQVBK++0ALFAObGTyTPThRVKhW7X3kjSkInkwAZVj2dLdU0oIinzEuCjldhOe3BF2FYHRgcbnklEFIVpK3quTJbKxcF4h8SMbihRbXor0AIsOupWd0z2skqqvr4xSDNPAb4t+Ypd0MnGPRJYb8DTs+Ign+gn6L7a48RWqqIhBjVjgDLHiitMeEKA6FCS4cEHvcbHhXtrLswfF2ocA+mjfb5WGfP73d959fSPfvraRhhxXqBMqM309DmO3DGtS2e1j root@gitlab
6.塞key操作,方便源码上传下载

7.点击头像查看创建项目的结果


8.查看项目根据提示配置初始化


9.模拟开发建立git本地工作目录和本地仓库
#这里的源码使用的码云上源码,你可以自行下载使用即可。
[root@gitlab ~/yiliaoqixie]# git config --global user.name "Administrator"
[root@gitlab ~/yiliaoqixie]# git config --global user.email "[email protected]"
[root@gitlab ~/yiliaoqixie]# git init
Initialized empty Git repository in /root/yiliaoqixie/.git/
[root@gitlab ~/yiliaoqixie]# git add .
[root@gitlab ~/yiliaoqixie]# git commit -m "第一次提交项目"
[root@gitlab ~/yiliaoqixie]# git remote add origin [email protected]:yiliao/yiliao.git
[root@gitlab ~/yiliaoqixie]# git push -u origin --all
10.查看上传的结果

11.点击设置选择新建用户

12.输入账号相关信息并点击创建用户


13.点击编辑,为上面新创建的用户设置密码

14.给这个账号设置密码并保存


15.将上面创建的用户添加到devops组中并给与开发者权限

16.找到刚刚创建的dev用户并给予开发人员权限,然后增加用户到群组

3.2Jenkins配置

1.在Jenkins的服务器上生成秘钥
[root@jenkins ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Y/nVt2+ldZc+h4VrsormDhSXKj3ryP/LlLkpIU95xjA root@jenkins
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|         .       |
|      . o        |
|     .E+ .   .   |
|    . ==S   . ..o|
|    .o+++= .  .oB|
|     +o++ .   .B+|
|   . oo+.+  . =o+|
|    o.o*X....+ .+|
+----[SHA256]-----+
[root@jenkins ~]# cat ./.ssh/id_rsa
id_rsa      id_rsa.pub  
[root@jenkins ~]# cat ./.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCssc5KGRIvHV64Md3HR3SdT0w4twdrAIbxWSSo3tvfrauMdSk2ptmxvgzPqfGEQUgHfPsZY10eN0bpvaFARLBDytyRLbgdSo6gts+J0nGhy0hcjOhu4xJgygt8hN53UCUbdy7DhUnwxIfOuzENFYLS7ZW/Uk4N1FrNNuZK0X5aVNsV5r9H+fUeOfMJ4YLjLhFn6C94q4XmS9OfAW0aCSUfBbCT9LnRmeU/FoQMGdujBZ+Koc9289IVNHkVL+vEW6ZTxLPMEoRaB0RlLxfZF86LMsjsqx6ABBHNpV5FZWl0OYnnEn3jKHRNStfxx2g5Hz9e7eRguBubBis75OfHf2br root@jenkins
2.回到gitlab服务器上面使用maliu用户登录,然后点击头像选择设置

3.上面的设置点进来后,选择SSH 秘钥, 然后复制Jenkins服务器上生成的秘钥然后点击增加秘钥



4.新建任务


5.点击项目名称开始配置

6.选择源码管理,选Git,输入仓库URL地址(如果下方出现红色及表示出错了),然后选择保存

7.立即构建

8.查看构建信息

9.服务端查看
[root@jenkins /var/lib/jenkins/workspace/yiliao]# ls
about.html           article.html                         contact.html  index.html           product.html
album.html           Bootstrap医疗器械公司响应式网站模板  css           js
article_detail.html  comment.html                         images        product_detail.html

3.3实现自动部署

上面已经完成了Jenkins从gitlab上拉取代码,现在需要实现如何将源码自动部署到web服务器上,这里使用脚本的方式来实现,Jenkins支持执行脚本的功能。

1.在Jenkins服务器上面编写同步脚本,由于是通过脚本拷贝到web服务器的站点目录,所以需要先做一个ssh秘钥认证
[root@jenkins ~]# ssh-copy-id -i 10.0.0.7
[root@jenkins ~]# ssh-copy-id -i 10.0.0.8
[root@jenkins /server/scripts]# vim deploy.sh 
#项目目录
CODE_DIR=/var/lib/jenkins/workspace/yiliao/
#时间格式
DATE_TIME=`date +%Y-%m-%d-%H-%M-%S`
#打包后的名字
TAR_NAME=web-${DATE_TIME}.tar.gz
#web服务器站点目录的上一级 "/usr/share/nginx/html"
WEB_DIR=/usr/share/nginx/
#web服务器新建的站点目录名字
WEB_NEWDIR_NAME=web-${DATE_TIME}
#进入到项目目录上一级打包代码
cd $CODE_DIR && tar czf /opt/$TAR_NAME ./*
for i in {7,8}
do
#拷贝到web服务器的站点目录的上一级
    scp /opt/$TAR_NAME 10.0.0.${i}:$WEB_DIR
#连接web服务器进行解压压缩包到新的一个已时间命名的站点目录
    ssh 10.0.0.$i "cd $WEB_DIR && mkdir $WEB_NEWDIR_NAME && tar xf $TAR_NAME -C $WEB_NEWDIR_NAME"
#将新建的站点目录与html站点目录做一个软链接
    ssh 10.0.0.$i "cd $WEB_DIR && rm -rf html && ln -s $WEB_NEWDIR_NAME html"
    ssh 10.0.0.$i "cd $WEB_DIR && rm -rf $TAR_NAME"
    sleep 3
done
2.配置Jenkins,使用Jenkins调用部署脚本(此处写脚本全路径脚本名称)

3.立即构建

4.查看输出结果

5.测试访问结果

3.4自动更新

1.配置自动触发构建、需要设置安全令牌Secret token,进入项目选择配置,设置相关信息,然后生成token,复制token(需要填写到gitlab上面)和Build when a chang上面提示的URL地址( http://10.0.0.57:8080/project/yiliao)

选择构建触发器,然后选择build when a change is ....,下方有个高级选项后然后选择Filter branches byname,然后输入master分支,再点击下面的Generate生成token,然后点击保存。

2.配置gitlab,添加token

点击项目→设置→设置→集成,然后输入Jenkins上面提示的URL地址和和生成的token,点击增加web钩子。

3.测试Web钩子

添加完钩子完成后可以测试,选择Push event,执行完会显示上面的提示。

4.上面已经配置完成,接下来就是测试,我们知道目前web服务站点访问得到结果如上面, 这里gitlab服务器下载的代码并进行修改,然后推送gitlab仓库。这里去除首页的右上角的English版本。

修改首页内容:

5.推送新的修改源码
[root@gitlab ~/yiliaoqixie]# git add .
[root@gitlab ~/yiliaoqixie]# git commit -m "第二次提交"
[master 4b8d377] 第二次提交
[root@gitlab ~/yiliaoqixie]# git push -u origin --all
6.测试访问

之前的结果如下图:

现在的结果:

3.5配置构建Jenkins返回构建状态gitlab

1.现在gotlab上面生成访问令牌token,点击用户处的设置

2.访问令牌——>输入名称——>选择范围为api——>创建个人访问令牌,将生成的令牌token复制

3.登录Jenkins——>选择系统管理——>选择系统设置——>选择Gitlab——输入名字——>输入URL——点击Add

4.上面点击Add进来后,kind处选择Gitlab API token,粘贴上面复制的token,自定义ID和描述

5.上面添加后,回到这里选择刚刚生成的这个token。然后点击保存

6.上面保存后,进入到项目里选择配置,配置构建后操作,选择Publish ... to ...Gitlab,选择后直接保存就ok

7.测试,点击立即构建

8.回到gitlab上面查看,那里生成了一个对号

9.点击对号,进来后可以看到流水线,下面一些信息,比如状态,提交等。

10.点击上面Status下面的对号,可以看到如下图一样的有个jenkins-success

11.再点击jenkins就跳转到jenkins上面去了,也可以查看输出,还可以查看工作空间,可以查看到所有代码,返回的话只能选择后退。



추천

출처www.cnblogs.com/hujuntao/p/11984687.html