最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用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)境的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

持續(xù)集成:Continuous Integration

簡單來說就是指,程序員在開發(fā)代碼的過程中,可以頻繁的將代碼部署到主干上,并進(jìn)行自動化測試。

持續(xù)交付:Continuous Delivery

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

持續(xù)部署:Continuous Deoloyment

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

1.GitLab 簡介

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

2.Jenkins 簡介

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

作用:

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

Jenkins 特點(diǎn):

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

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

相同點(diǎn):

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

不同點(diǎn):

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

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

  • 開發(fā)者將新版本代碼 push 到 GitLab 遠(yuǎn)程倉庫上;
  • 隨后 GitLab 會觸發(fā) Jenkins 來進(jìn)行拉取到本地(通過 Web Hook 或定時(shí)檢測)
  • 最后 Jenkins 會根據(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

開啟 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 訪問地址

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

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

重置 Gitlab(時(shí)間較長)

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

在這里插入圖片描述

1)登錄 Gitlab

訪問: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ù)器端口號
gitlab_rails['smtp_user_name'] = '2085077346@qq.com'									# 郵件賬號
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

登錄控制臺發(fā)送測試郵件

[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)建群組

在這里插入圖片描述

填寫群組信息

在這里插入圖片描述

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

在這里插入圖片描述

填寫用戶信息

在這里插入圖片描述

給河北彭于晏配置密碼

在這里插入圖片描述

把新建用戶添加到群組

在這里插入圖片描述

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

  • Guest:可以創(chuàng)建問題、發(fā)表評論、不能讀寫版本庫(訪客)
  • Reporter:可以克隆代碼,不能提交(測試人員)
  • Deveoper:可以克隆代碼、開發(fā)、提交、上傳(開發(fā)人員)
  • Master:可以創(chuàng)建項(xiàng)目、添加
  • tag、保護(hù)分支、添加項(xiàng)目成員、編輯項(xiàng)目(運(yùn)維)
  • Owner:所有事情都可以做,包括設(shè)置項(xiàng)目的訪問權(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														# 配置密鑰對 (三連回車即可)
[root@GitLab ~]# cat .ssh/id_rsa.pub													# 查看公鑰

將公鑰上傳到 GitLab 中

在這里插入圖片描述

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

[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 編寫的,所以需要先安裝 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/

啟動 Jenkins

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

在這里插入圖片描述

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

訪問:http://192.168.1.2:8080

在這里插入圖片描述

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

在這里插入圖片描述

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

安裝 Jenkins 插件

Credentials															# 簽名證書管理插件
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													# 用于通過 SSH 部署應(yīng)用

在這里插入圖片描述

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

配置 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ù)器

這邊簡單說一下大致的流程:

  • 通過我們這一系列的操作也可以看出來,首先需要在 GitLab 上創(chuàng)建(上傳)項(xiàng)目,然后 Jenkins 會將代碼下載到本地;
  • 最后可以使用 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)建自動上傳 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 自動部署

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 請求。

開啟請求

在這里插入圖片描述

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

5)驗(yàn)證

在這里插入圖片描述

在這里插入圖片描述

4.Jenkins 版本升級

在這里插入圖片描述

下載后之后,我們只需要將 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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 史上最好用的遠(yuǎn)程桌面工具(附源碼)

    史上最好用的遠(yuǎn)程桌面工具(附源碼)

    今天給大家分享一款不錯(cuò)的遠(yuǎn)程控制工具向日葵遠(yuǎn)程桌面工具,支持多平臺,跨網(wǎng)絡(luò),對向日葵遠(yuǎn)程桌面工具感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • Git的基本操作流程及工作區(qū)版本庫暫存區(qū)的關(guān)系

    Git的基本操作流程及工作區(qū)版本庫暫存區(qū)的關(guān)系

    這篇文章主要為大家介紹了Git的基本操作流程及工作區(qū)版本庫暫存區(qū)的關(guān)系,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • 十六進(jìn)制、十進(jìn)制、八進(jìn)制、二進(jìn)制常用進(jìn)制轉(zhuǎn)換

    十六進(jìn)制、十進(jìn)制、八進(jìn)制、二進(jìn)制常用進(jìn)制轉(zhuǎn)換

    進(jìn)制就是進(jìn)制位,常用的進(jìn)制包括:二進(jìn)制、八進(jìn)制、十進(jìn)制與十六進(jìn)制,區(qū)別在于數(shù)運(yùn)算時(shí)是逢幾進(jìn)一位。比如二進(jìn)制是逢2進(jìn)一位,十進(jìn)制也就是我們常用的0-9是逢10進(jìn)一位。這篇文章主要介紹了十六進(jìn)制、十進(jìn)制、八進(jìn)制、二進(jìn)制常用進(jìn)制轉(zhuǎn)換,需要的朋友可以參考下
    2022-12-12
  • Webpack基礎(chǔ)教程之名詞解釋

    Webpack基礎(chǔ)教程之名詞解釋

    webpack 是一個(gè)現(xiàn)代JavaScript 應(yīng)用程序的靜態(tài)模塊打包器,這次為大家簡單介紹一下webpack及關(guān)于webpack的一些專屬名詞入口(entry),輸出(output),loader,插件(plugins)
    2020-02-02
  • Trie樹_字典樹(字符串排序)簡介及實(shí)現(xiàn)

    Trie樹_字典樹(字符串排序)簡介及實(shí)現(xiàn)

    有時(shí),我們會碰到對字符串的排序,若采用一些經(jīng)典的排序算法,則時(shí)間復(fù)雜度一般為O(n*lgn),但若采用Trie樹,則時(shí)間復(fù)雜度僅為O(n)
    2014-03-03
  • GitHub配置SSH?Key的完整步驟

    GitHub配置SSH?Key的完整步驟

    ssh是一種通信方式,在本地電腦生成ssh key之后,配置到github里,就不用像http協(xié)議那樣每次都輸入賬戶密碼了,這篇文章主要給大家介紹了關(guān)于GitHub配置SSH?Key的完整步驟,需要的朋友可以參考下
    2022-03-03
  • 鴻蒙開發(fā)搭建flutter適配的開發(fā)環(huán)境

    鴻蒙開發(fā)搭建flutter適配的開發(fā)環(huán)境

    文章詳細(xì)介紹了在Windows系統(tǒng)上如何創(chuàng)建和運(yùn)行鴻蒙Flutter項(xiàng)目,包括使用flutter?doctor檢測環(huán)境、創(chuàng)建項(xiàng)目、編譯HAP包以及在真機(jī)上運(yùn)行項(xiàng)目,打包鴻蒙Flutter應(yīng)用的測試包和正式包的方法,并介紹了常見問題的解決方法
    2024-12-12
  • 詳細(xì)介紹HTTP Cookie

    詳細(xì)介紹HTTP Cookie

    本篇文章主要介紹了詳細(xì)介紹HTTP Cookie,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • vscode中使用Autoprefixer3.0無效的解決方法

    vscode中使用Autoprefixer3.0無效的解決方法

    這篇文章主要介紹了vscode中使用Autoprefixer3.0無效的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 什么是負(fù)載均衡為什么需要負(fù)載均衡

    什么是負(fù)載均衡為什么需要負(fù)載均衡

    Load?balancing,即負(fù)載均衡,是一種計(jì)算機(jī)技術(shù),用來在多個(gè)計(jì)算機(jī)(計(jì)算機(jī)集群)、網(wǎng)絡(luò)連接、CPU、磁盤驅(qū)動器或其他資源中分配負(fù)載,以達(dá)到最優(yōu)化資源使用、最大化吞吐率、最小化響應(yīng)時(shí)間、同時(shí)避免過載的目的
    2024-04-04

最新評論

新津县| 合肥市| 滁州市| 武功县| 聂拉木县| 永年县| 当阳市| 当阳市| 玉龙| 博客| 大荔县| 福鼎市| 迁西县| 右玉县| 南雄市| 顺昌县| 金沙县| 旌德县| 峨边| 滨州市| 突泉县| 灵台县| 新乡县| 高尔夫| 信阳市| 云霄县| 竹山县| 利川市| 嘉兴市| 新宁县| 洪江市| 涪陵区| 龙里县| 清河县| 朔州市| 田阳县| 昌都县| 自治县| 肇州县| 黄骅市| 府谷县|