欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用GitLab+Jenkins實(shí)現(xiàn)持續(xù)集成CI環(huán)境的示例代碼

 更新時(shí)間:2022年01月07日 10:38:14   作者:愿許浪盡天涯  
本文主要介紹了使用GitLab+Jenkins實(shí)現(xiàn)持續(xù)集成CI環(huán)境的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

一、持續(xù)集成簡(jiǎn)介

持續(xù)集成:Continuous Integration

簡(jiǎn)單來(lái)說(shuō)就是指,程序員在開(kāi)發(fā)代碼的過(guò)程中,可以頻繁的將代碼部署到主干上,并進(jìn)行自動(dòng)化測(cè)試。

持續(xù)交付:Continuous Delivery

簡(jiǎn)單來(lái)說(shuō)就是指在持續(xù)集成的基礎(chǔ)上,將代碼部署到預(yù)生產(chǎn)環(huán)境。

持續(xù)部署:Continuous Deoloyment

簡(jiǎn)單來(lái)說(shuō)就是指在持續(xù)交付的基礎(chǔ)上,將要部署的代碼實(shí)現(xiàn)自動(dòng)部署,包括持續(xù)交互,持續(xù)部署。

1.GitLab 簡(jiǎn)介

GitLab 是一個(gè)用于倉(cāng)庫(kù)管理系統(tǒng)的開(kāi)源項(xiàng)目。使用 Git 作為代碼管理工具,可以通過(guò) Web 界面來(lái)管理 Git 倉(cāng)庫(kù)。

2.Jenkins 簡(jiǎn)介

Jenkins 是一個(gè)獨(dú)立的開(kāi)源軟件項(xiàng)目,是基于 Java 開(kāi)發(fā)的一種持續(xù)集成工具,用于監(jiān)控持續(xù)重復(fù)的工作,旨在提供一個(gè)開(kāi)放易用的軟件平臺(tái),使軟件的持續(xù)集成變成可能。

作用:

  • 保證團(tuán)隊(duì)開(kāi)發(fā)人員提交代碼的質(zhì)量,還能夠減輕軟件發(fā)布時(shí)的壓力;
  • 持續(xù)集成中的任何一個(gè)環(huán)節(jié)都是自動(dòng)完成的,無(wú)需太多人工干預(yù),有利于減少重復(fù)過(guò)程以節(jié)省時(shí)間、費(fèi)用和工作量。

Jenkins 特點(diǎn):

  • 開(kāi)源免費(fèi);
  • 跨平臺(tái),支持所有的平臺(tái)。
  • Master/Slave 支持分布式的 build(構(gòu)建)

3.GitLab 和 GitHub 的區(qū)別

相同點(diǎn):

二者都是基于 Web 的 Git 倉(cāng)庫(kù),在很大程度上 GitLab 是仿照 GitHub 來(lái)做的,它們都提供了分享開(kāi)源項(xiàng)目的平臺(tái)。

不同點(diǎn):

  • GitHub 如果要使用私有倉(cāng)庫(kù),超過(guò) 4 個(gè)是需要付費(fèi)的。GitLab 可以在上面創(chuàng)建私人的免費(fèi)倉(cāng)庫(kù)。
  • GitLab 讓開(kāi)發(fā)團(tuán)隊(duì)對(duì)他們的代碼倉(cāng)庫(kù)擁有更多的控制。

4.持續(xù)集成系統(tǒng)的工作流程

  • 開(kāi)發(fā)者將新版本代碼 push 到 GitLab 遠(yuǎn)程倉(cāng)庫(kù)上;
  • 隨后 GitLab 會(huì)觸發(fā) Jenkins 來(lái)進(jìn)行拉取到本地(通過(guò) Web Hook 或定時(shí)檢測(cè))
  • 最后 Jenkins 會(huì)根據(jù)事先配置好的腳本進(jìn)行 Build。

二、使用 GitLab + Jenkins 實(shí)現(xiàn)持續(xù)集成(CI)環(huán)境

準(zhǔn)備工作

主機(jī)名操作系統(tǒng)硬件IP 地址
GitLabCentOS 7.44 G(聯(lián)網(wǎng)狀態(tài))192.168.1.1
JenkinsCentOS 7.44 G(聯(lián)網(wǎng)狀態(tài))192.168.1.2
ApacheCentOS 7.42 G192.168.1.3

1.安裝 Gitlab

安裝 Gitlab 所需組件

[root@GitLab ~]# yum install -y curl policycoreutils openssh-server openssh-clients postfix policycoreutils-python

開(kāi)啟 Postfix 郵件服務(wù)

[root@GitLab ~]# systemctl start postfix
[root@GitLab ~]# systemctl enable postfix

安裝 Gitlab

[root@GitLab ~]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.0.2-ce.0.el7.x86_64.rpm
[root@GitLab ~]# ls
anaconda-ks.cfg  gitlab-ce-12.0.2-ce.0.el7.x86_64.rpm
[root@GitLab ~]# yum -y localinstall gitlab-ce-12.0.2-ce.0.el7.x86_64.rpm

配置 Gitlab 訪問(wèn)地址

[root@GitLab ~]# sed -i "/^external_url/cexternal_url 'http://192.168.1.1'" /etc/gitlab/gitlab.rb

注意:你們也可以將 IP 地址替換為域名。

重置 Gitlab(時(shí)間較長(zhǎng))

[root@GitLab ~]# gitlab-ctl reconfigure[root@GitLab ~]# netstat -anpt | grep nginx

在這里插入圖片描述

1)登錄 Gitlab

訪問(wèn):http://192.168.1.1

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

注意:在 GitLab 中配置的中文并不是全部都是中文,你們可以安裝中文插件,我這邊使用的是谷歌瀏覽器轉(zhuǎn)換。

2)配置郵件報(bào)警

[root@GitLab ~]# vim /etc/gitlab/gitlab.rb												# 在第 57 行后添加以下內(nèi)容
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = 'smtp.qq.com'											# SMTP 服務(wù)器
gitlab_rails['smtp_port'] = 465															# SMTP 服務(wù)器端口號(hào)
gitlab_rails['smtp_user_name'] = '2085077346@qq.com'									# 郵件賬號(hào)
gitlab_rails['smtp_password'] = ''				 										# 郵件授權(quán)碼
gitlab_rails['smtp_authentication'] = 'login'
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = '2085077346@qq.com'

重置 Gitlab

[root@GitLab ~]# gitlab-ctl reconfigure

登錄控制臺(tái)發(fā)送測(cè)試郵件

[root@GitLab ~]# gitlab-rails console
irb(main):001:0> Notify.test_email('ChenZhuang1217@163.com','Test','Hello ZhangSan').deliver_now

在這里插入圖片描述

查看

在這里插入圖片描述

修改 GitLab 中 root 用戶的密碼

在這里插入圖片描述

3)創(chuàng)建群組

點(diǎn)擊創(chuàng)建群組

在這里插入圖片描述

填寫(xiě)群組信息

在這里插入圖片描述

創(chuàng)建一個(gè)賬號(hào)

在這里插入圖片描述

填寫(xiě)用戶信息

在這里插入圖片描述

給河北彭于晏配置密碼

在這里插入圖片描述

把新建用戶添加到群組

在這里插入圖片描述

GitLab 用戶在組中有五種權(quán)限:

  • Guest:可以創(chuàng)建問(wèn)題、發(fā)表評(píng)論、不能讀寫(xiě)版本庫(kù)(訪客)
  • Reporter:可以克隆代碼,不能提交(測(cè)試人員)
  • Deveoper:可以克隆代碼、開(kāi)發(fā)、提交、上傳(開(kāi)發(fā)人員)
  • Master:可以創(chuàng)建項(xiàng)目、添加
  • tag、保護(hù)分支、添加項(xiàng)目成員、編輯項(xiàng)目(運(yùn)維)
  • Owner:所有事情都可以做,包括設(shè)置項(xiàng)目的訪問(wèn)權(quán)限(老板,但老板一般都在辦公室)

4)創(chuàng)建項(xiàng)目

使用河北彭于晏用戶登錄創(chuàng)建

在這里插入圖片描述

創(chuàng)建項(xiàng)目

在這里插入圖片描述

在剛才創(chuàng)建的項(xiàng)目中創(chuàng)建文件

在這里插入圖片描述

在這里插入圖片描述

5)配置免密克隆

[root@GitLab ~]# ssh-keygen -t rsa														# 配置密鑰對(duì) (三連回車即可)
[root@GitLab ~]# cat .ssh/id_rsa.pub													# 查看公鑰

將公鑰上傳到 GitLab 中

在這里插入圖片描述

驗(yàn)證(克隆過(guò)程中不需要輸入密碼即可)

[root@GitLab ~]# git clone git@192.168.1.1:ZhangSan/test.git
[root@GitLab ~]# ls
anaconda-ks.cfg  gitlab-ce-12.0.2-ce.0.el7.x86_64.rpm  test
[root@GitLab ~]# cd test/
[root@GitLab test]# ls
1.html

2.安裝 Jenkins

安裝 JDK(因?yàn)?Jenkins 是使用 Java 編寫(xiě)的,所以需要先安裝 JDK)

[root@Jenkins ~]# tar xf jdk-8u181-linux-x64.tar.gz
[root@Jenkins ~]# ls
anaconda-ks.cfg  jdk1.8.0_181  jdk-8u181-linux-x64.tar.gz
[root@Jenkins ~]# mv jdk1.8.0_181/ /usr/local/java
[root@Jenkins ~]# cat <<END >> /etc/profile
JAVA_HOME=/usr/local/java/
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPATH
END
[root@Jenkins ~]# source /etc/profile
[root@Jenkins ~]# java -version													# 查看 Java 版本
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

安裝 Jenkins

[root@Jenkins ~]# wget https://pkg.jenkins.io/redhat-stable/jenkins-2.222.4-1.1.noarch.rpm
[root@Jenkins ~]# ls
anaconda-ks.cfg  jenkins-2.222.4-1.1.noarch.rpm
[root@Jenkins ~]# yum -y localinstall jenkins-2.222.4-1.1.noarch.rpm

修改配置文件

[root@Jenkins ~]# sed -i '/^JENKINS_USER/cJENKINS_USER="root"' /etc/sysconfig/jenkins

創(chuàng)建軟連接優(yōu)化執(zhí)行路徑

[root@Jenkins ~]# ln -s /usr/local/java/bin/java /usr/bin/

啟動(dòng) Jenkins

[root@Jenkins ~]# systemctl start jenkins
[root@Jenkins ~]# netstat -anpt | grep 8080

在這里插入圖片描述

1)登錄 Jenkins,并安裝相關(guān)插件

訪問(wèn):http://192.168.1.2:8080

在這里插入圖片描述

點(diǎn)擊繼續(xù)后,會(huì)出現(xiàn)推薦安裝和自定義安裝,我這里選擇的是推薦安裝

在這里插入圖片描述

2)配置 Jenkins 實(shí)現(xiàn) GitLab 更新代碼

安裝 Jenkins 插件

Credentials															# 簽名證書(shū)管理插件
Gitlab																# 安裝后從 GitLab 獲取代碼
Git	和 Git Client													# 用于 Jenkins 在 GitLab 中拉取源碼
GitLab Hook															# GitLab 觸發(fā) Jenkins 構(gòu)建項(xiàng)目
Gitlab Authentication												# GitLab 和 Jenkins 認(rèn)證插件
SSH Plugin															# 進(jìn)程執(zhí)行 Shell 腳本
Publish Over SSH													# 用于通過(guò) SSH 部署應(yīng)用

在這里插入圖片描述

注意:當(dāng)安裝好 Jenkins 插件后,插件可能會(huì)跟 Jenkins 出現(xiàn)版本差異,不用管,后面我會(huì)對(duì) Jenkins 進(jìn)行升級(jí)操作。

配置 Jenkins 免密拉取 GitLab 代碼

[root@Jenkins ~]# ssh-keygen -t rsa
[root@Jenkins ~]# cat .ssh/id_rsa.pub

將公鑰上傳到 GitLab 上

在這里插入圖片描述

將私鑰上傳到 Jenkins 上

在這里插入圖片描述

在這里插入圖片描述

Jenkins 的 root 用戶公鑰在 GitLab 上,私鑰在 Jenkins 上,目的就是為了方便 Jenkins 可以直接拉去 GitLab 上的代碼。

3)在 Jenkins 上創(chuàng)建項(xiàng)目

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

下載一下代碼

在這里插入圖片描述

4)將代碼發(fā)布到 Web 服務(wù)器

這邊簡(jiǎn)單說(shuō)一下大致的流程:

  • 通過(guò)我們這一系列的操作也可以看出來(lái),首先需要在 GitLab 上創(chuàng)建(上傳)項(xiàng)目,然后 Jenkins 會(huì)將代碼下載到本地;
  • 最后可以使用 Jenkins 將代碼發(fā)送給指定服務(wù)器。

192.168.1.3 服務(wù)器上操作

[root@Apache ~]# yum -y install httpd
[root@Apache ~]# systemctl start httpd

在 Jenkins 上配置 SSH 免密登錄

[root@Jenkins ~]# ssh-copy-id root@192.168.1.3

創(chuàng)建自動(dòng)上傳 Web 代碼的腳本

[root@Jenkins ~]# cat <<END > 1.sh
#!/bin/bash
scp /var/lib/jenkins/workspace/web/* root@192.168.1.3:/var/www/html/
END
[root@Jenkins ~]# chmod +x 1.sh

將腳本添加到 Jenkins 中

在這里插入圖片描述

發(fā)布項(xiàng)目

在這里插入圖片描述

5)驗(yàn)證

在這里插入圖片描述

3.實(shí)現(xiàn) Jenkins 自動(dòng)部署

1)安裝插件

Gitlab Hook Plugin
Build Authorization Token Root
Build Token Trigger

2)配置身份驗(yàn)證令牌

[root@Jenkins ~]# openssl rand -hex 12
038ef13e10ef686193784383

注意:-hex 輸出結(jié)果為 16 進(jìn)制數(shù)據(jù),數(shù)字 12 是指定生成的隨機(jī)字符為 12 字節(jié),即 24 個(gè) 16 進(jìn)制個(gè)數(shù)。

3)在 Jenkins 上配置觸發(fā)器

在這里插入圖片描述

4)在 GitLab 的項(xiàng)目上配置鏈接和 Token

這里的網(wǎng)址和密鑰令牌都要和 Jenkins 上的匹配。

在這里插入圖片描述

  • 注意:當(dāng)創(chuàng)建鉤子時(shí)出現(xiàn) Urlis blocked: Requests to the local network are not allowed
  • 原因是因?yàn)?GitLab 10.6 版本以后為了安全,不允許向本地網(wǎng)絡(luò)發(fā)送 WebHook 請(qǐng)求。

開(kāi)啟請(qǐng)求

在這里插入圖片描述

當(dāng)開(kāi)啟請(qǐng)求后,重新創(chuàng)建 Token 值即可。

5)驗(yàn)證

在這里插入圖片描述

在這里插入圖片描述

4.Jenkins 版本升級(jí)

在這里插入圖片描述

下載后之后,我們只需要將 Jenkins 原有的包替換即可

[root@Jenkins ~]# rpm -ql jenkins											# 查看 Jenkins 包安裝路徑
[root@Jenkins ~]# systemctl stop jenkins
[root@Jenkins ~]# cd /usr/lib/jenkins/
[root@Jenkins jenkins]# mv jenkins.war jenkins-2.222.4.war.bak
[root@Jenkins jenkins]# ls
jenkins-2.222.4.war.bak  jenkins.war
[root@Jenkins jenkins]# systemctl start jenkins 

在這里插入圖片描述

查看

在這里插入圖片描述

 到此這篇關(guān)于使用GitLab+Jenkins實(shí)現(xiàn)持續(xù)集成CI環(huán)境的示例代碼的文章就介紹到這了,更多相關(guān)GitLab Jenkins持續(xù)集成CI環(huán)境內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 總結(jié)近幾年P(guān)ytorch基于Imgagenet數(shù)據(jù)集圖像分類模型

    總結(jié)近幾年P(guān)ytorch基于Imgagenet數(shù)據(jù)集圖像分類模型

    在過(guò)去的幾年里,許多深度學(xué)習(xí)模型涌現(xiàn)出來(lái),例如層的類型、超參數(shù)等。在本系列中,我將回顧幾個(gè)最顯著的 deeplearn 圖像分類的模型
    2021-08-08
  • 最新IDEA永久激活教程(支持最新2019.2版本)

    最新IDEA永久激活教程(支持最新2019.2版本)

    這篇文章主要介紹了最新IDEA永久激活教程,此教程已支持最新2019.2版本,適用Windows、Mac、Ubuntu等所有平臺(tái),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • VSCode + WSL 2 + Ruby環(huán)境搭建圖文詳解

    VSCode + WSL 2 + Ruby環(huán)境搭建圖文詳解

    這篇文章主要介紹了VSCode + WSL 2 + Ruby環(huán)境搭建,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 使用roolup構(gòu)建你的lib(實(shí)現(xiàn)步驟)

    使用roolup構(gòu)建你的lib(實(shí)現(xiàn)步驟)

    大家都知道Rollup更加適合用于構(gòu)建lib 而 Webpack, Precel 更加適合開(kāi)發(fā)應(yīng)用。本文,將結(jié)合一個(gè)簡(jiǎn)單的例子說(shuō)說(shuō)如何使用Rollup構(gòu)建自己的lib,感興趣的朋友一起看看吧
    2021-08-08
  • JetBrains 學(xué)生認(rèn)證教程(Pycharm,IDEA… 等學(xué)生認(rèn)證教程)

    JetBrains 學(xué)生認(rèn)證教程(Pycharm,IDEA… 等學(xué)生認(rèn)證教程)

    這篇文章主要介紹了JetBrains 學(xué)生認(rèn)證教程(Pycharm,IDEA… 等學(xué)生認(rèn)證教程)文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Windows環(huán)境下實(shí)現(xiàn)Jenkins部署的教程詳解

    Windows環(huán)境下實(shí)現(xiàn)Jenkins部署的教程詳解

    這篇文章主要介紹了Windows環(huán)境下實(shí)現(xiàn)Jenkins部署,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Http 狀態(tài)代碼 指示(ajax,bs結(jié)構(gòu)用的到)

    Http 狀態(tài)代碼 指示(ajax,bs結(jié)構(gòu)用的到)

    Http 狀態(tài)代碼主要是方便我們掌握http的一些錯(cuò)誤返回后,知道是什么原因?qū)е碌囊恍﹩?wèn)題,一般結(jié)合監(jiān)聽(tīng)軟件。
    2009-05-05
  • so easy!10行代碼寫(xiě)個(gè)

    so easy!10行代碼寫(xiě)個(gè)"狗屁不通"文章生成器功能

    這篇文章主要介紹了通過(guò)10行代碼寫(xiě)個(gè)"狗屁不通"文章生成器功能,真的超級(jí)簡(jiǎn)單,感興趣的朋友跟隨腳本之家小編一起看看吧
    2020-01-01
  • prometheus安裝和使用過(guò)程

    prometheus安裝和使用過(guò)程

    Prometheus是一個(gè)開(kāi)源的系統(tǒng)監(jiān)控和報(bào)警系統(tǒng),通常會(huì)搭配prometheus進(jìn)行監(jiān)控,同時(shí)也支持多種exporter采集數(shù)據(jù),還支持pushgateway進(jìn)行數(shù)據(jù)上報(bào),Prometheus性能足夠支撐上萬(wàn)臺(tái)規(guī)模的集群,這篇文章主要介紹了prometheus安裝和使用記錄,需要的朋友可以參考下
    2023-06-06
  • VSCode?Web?IDE?Coder?安裝及使用

    VSCode?Web?IDE?Coder?安裝及使用

    Coder是VS?Code的Web?IDE,分Code?Server?和?Coder,Code?Server安裝在服務(wù)器上,通過(guò)瀏覽器打開(kāi)地址后可以使用一個(gè)web版的VS?Code,也就是Coder,但VS?Code的插件無(wú)法使用。這篇文章主要介紹了VSCode?Web?IDE?Coder?安裝及使用,需要的朋友可以參考下
    2021-12-12

最新評(píng)論