<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          使用 Gitlab+Jenkins 實現(xiàn)多分支自動獨立部署

          共 3626字,需瀏覽 8分鐘

           ·

          2020-12-26 10:42


          轉(zhuǎn)自:猿話

          鏈接:https://www.toutiao.com/i6882749390067499533/

          開發(fā)免不了要測試,同一個項目一兩個人開發(fā)的時候,開發(fā)、測試、運維部署一個分支就行,但當(dāng)項目變大,開發(fā)人員變多時,如果還是這樣操作,你可能就會經(jīng)常遇到不同需求的代碼同時測試時的相互干擾問題。比如:

          • 1、合并代碼時經(jīng)常發(fā)生沖突;
          • 2、一人代碼寫錯,影響所有人等。

          那么如何解決這個問題呢

          這里我介紹一個多分支同時部署、測試的方案。具體就是每一個開發(fā)者的分支代碼都可以獨立部署到測試服務(wù)器(比如,不同的根目錄,不同的容器),然后,各開發(fā)者可以在各自的測試分支獨立調(diào)試。

          下面以PHP項目為例來具體說明。

          首先列一下我們可能用到的工具清單:

          • Linux:這是一切操作的基礎(chǔ),本文中主要用到的Linux版本為Centos8
          • Gitlab:負(fù)責(zé)管理源代碼
          • Jenkins:負(fù)責(zé)持續(xù)集成部署,
          • Docker:負(fù)責(zé)搭建Gitlab、Jenkins、Web應(yīng)用。
          • Nginx:Web應(yīng)用服務(wù)器、反向代理
          • PHP:解析PHP代碼
          • GIT:管理源代碼

          需要說明的是,我們安裝這些工具主要使用yum命令,因此在執(zhí)行后面步驟前,請先確保你的Linux系統(tǒng)已經(jīng)安裝了yum命令。

          具體步驟如下:

          1、安裝Docker

          yum?install?docker

          2、安裝Gitlab

          下載Gitlab鏡像:

          docker?pull?gitlab-ce

          創(chuàng)建Gitlab容器了:

          docker?run?--name?gitlab?-p?443:443?-p?80:80?-p?22:22?-v?/data/www/gitlab/config:/etc/gitlab?-v?/data/www/gitlab/logs:/var/log/gitlab?-v?/data/www/gitlab/data:/var/opt/gitlab?gitlab/gitlab-ce?/bin/bash

          訪問localhost,查看效果:3、安裝Jenkins

          制作Jenkins鏡像

          我們的倉庫代碼是不包含vendor目錄的,需要git checkout 后,使用composer install命令自動生成。由于官方Jenkins鏡像不包含Composer、PHP、Git等我們的PHP項目需要用到的命令,因此,在實際使用時,我們以官方鏡像為基礎(chǔ)制作了自己的Jenkins鏡像。

          下載Centos鏡像,如下:

          docker?pull?centos:latest

          以Centos鏡像為基礎(chǔ)鏡像,創(chuàng)建Jenkins容器:

          docker?run?-idt?--name?jenkins?docker.io/centos?/bin/bash

          進入jenkins容器內(nèi)部:

          docker?exec?-it?jenkins?/bin/bash

          使用yum命令安裝java、php、composer、git:

          yum?-y?php?git?java
          php?-r?"copy('https://getcomposer.org/installer',?'composer-setup.php');"
          php?-r?"if?(hash_file('sha384',?'composer-setup.php')?===?'c31c1e292ad7be5f49291169c0ac8f683499edddcfd4e42232982d0fd193004208a58ff6f353fde0012d35fdd72bc394')?{?echo?'Installer?verified';?}?else?{?echo?'Installer?corrupt';?unlink('composer-setup.php');?}?echo?PHP_EOL;"
          php?composer-setup.php
          php?-r?"unlink('composer-setup.php');"
          mv?composer.phar?/usr/bin/composer

          如果提示PHP拓展缺失,請使用yum命令安裝相關(guān)拓展。

          使用yum命令,安裝官方j(luò)enkins:

          wget?-O?/etc/yum.repos.d/jenkins.repo?https://pkg.jenkins.io/redhat/jenkins.repo
          rpm?--import?https://pkg.jenkins.io/redhat/jenkins.io.key
          yum?install?jenkins

          修改Jenkins配置,配置文件默認(rèn)位置為:/etc/sysconfig/jenkins

          JENKINS_HOME
          JENKINS_USER
          JENKINS_PORT
          #JENKINS_HOME是Jenkins的主目錄,Jenkins工作的目錄都放在這里,Jenkins儲存文件的地址,Jenkins的插件,生成的文件都在這個目錄下。
          #JENKINS_USER是Jenkins的用戶,擁有$JENKINS_HOME和/var/log/jenkins的權(quán)限,一般使用root用戶。
          #JENKINS_PORT是Jenkins的端口,默認(rèn)端口是8080。

          啟動Jenkins:

          service?jenkins?start

          如果出現(xiàn)錯誤,可能要考慮文件/etc/init.d/jenkins是否缺少配置,Jenkins的啟動需要Java的支持。如果Jenkins安裝沒有問題,下面我們就需要設(shè)置開機自啟了。這是為了我們后面創(chuàng)建Jenkins容器的時候,Jenkins可以自動啟動,而不需要我們進入容器中手動啟動。jenkins.sh重啟腳本如下:給jenkins.sh設(shè)置可執(zhí)行權(quán)限:

          chmod?+x?/usr/local/jenkins/jenkins.sh

          將文件添加系統(tǒng)自動啟動程序列表:

          echo?"/usr/local/jenkins/jenkins.sh">>?/etc/rc.d/rc.local

          使用exit命令退出容器,然后使用docker commit命令制作新的Jenkins鏡像:

          docker?commit?-m?'Jenkins?with?docker/composer/git/php'?jenkins?jenkins:latest

          以新鏡像創(chuàng)建Jenkins容器,如下:

          docker?run?-idt?--name?jenkins?-p?8080:8080?-p?50000:50000?-v?/var/run/docker.sock:/var/run/docker.sock?-v?/data/www/jenkins/jenkins_home:/var/lib/jenkins:rw?jenkins?/bin/bash

          至此,Jenkins就安裝好了。

          4、在Gitlab創(chuàng)建項目

          1、設(shè)置access token,記錄生成的秘鑰,后面創(chuàng)建Jenkins任務(wù)需要使用。2、創(chuàng)建代碼倉庫3、為代碼倉庫,設(shè)置Webhook4、在Jenkins創(chuàng)建任務(wù)

          在Jenkins中,Jenkins的主要功能都是由一個個插件提供的。因此,在搭建環(huán)境之前我們也需要先安裝幾個用到的插件。我們用到的插件主要有以下幾個:

          • GitLab Plugin
          • Gitlab Hook Plugin
          • Gitlab API Plugin
          • ruby-runtime

          從名字我們也可以看到,這主要是用于Jenkins與Gitlab的交互。

          說明一下,Jenkins與Gitlab的交互包括兩部分:

          • 一部分是Gitlab通過Webhook提交Git Push事件,觸發(fā)Jenkins開始執(zhí)行集成任務(wù),
          • 另一部分是Jenkins通過Git從Gitlab拉取源代碼。

          1、配置Gitlab鏈接這個是Gitlab上創(chuàng)建的access token

          2、創(chuàng)建集成任務(wù)這是gitlab項目的倉庫地址。3、在本地Push代碼到Gitlab,查看Jenkins任務(wù)執(zhí)行情況至此,多分支同時部署測試的環(huán)境就搭建好了。

          良許個人微信


          添加良許個人微信即送3套程序員必讀資料


          → 精選技術(shù)資料共享

          → 高手如云交流社群





          本公眾號全部博文已整理成一個目錄,請在公眾號里回復(fù)「m」獲取!

          推薦閱讀:

          為何 Linus 一個人就能寫出這么強的系統(tǒng),國人卻做不出來?

          40 張圖帶你搞懂 TCP 和 UDP

          Idea公司真牛逼,發(fā)行最適合程序員編程字體~


          5T技術(shù)資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,單片機,樹莓派,等等。在公眾號內(nèi)回復(fù)「1024」,即可免費獲取!!


          瀏覽 46
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩综合天堂视频 | 逼色网站亚洲 | 日本人日逼视频 | 欧美日韩国产操逼视频 | 一级特黄妇女高潮AA片免费播放 |