1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

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

        共 3626字,需瀏覽 8分鐘

         ·

        2020-12-26 10:42


        轉自:猿話

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

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

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

        那么如何解決這個問題呢

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

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

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

        • Linux:這是一切操作的基礎,本文中主要用到的Linux版本為Centos8
        • Gitlab:負責管理源代碼
        • Jenkins:負責持續(xù)集成部署,
        • Docker:負責搭建Gitlab、Jenkins、Web應用。
        • Nginx:Web應用服務器、反向代理
        • 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項目需要用到的命令,因此,在實際使用時,我們以官方鏡像為基礎制作了自己的Jenkins鏡像。

        下載Centos鏡像,如下:

        docker?pull?centos:latest

        以Centos鏡像為基礎鏡像,創(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命令安裝相關拓展。

        使用yum命令,安裝官方jenkins:

        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配置,配置文件默認位置為:/etc/sysconfig/jenkins

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

        啟動Jenkins:

        service?jenkins?start

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

        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、設置access token,記錄生成的秘鑰,后面創(chuàng)建Jenkins任務需要使用。2、創(chuàng)建代碼倉庫3、為代碼倉庫,設置Webhook4、在Jenkins創(chuàng)建任務

        在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í)行集成任務,
        • 另一部分是Jenkins通過Git從Gitlab拉取源代碼。

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

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

        良許個人微信


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


        → 精選技術資料共享

        → 高手如云交流社群





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

        推薦閱讀:

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

        40 張圖帶你搞懂 TCP 和 UDP

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


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


        瀏覽 46
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

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

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            丁香五月天综合网 | 好大好长好紧爽小片 | 91国产精品久久久 | 日产无人区视频 | 激情内射网站 | 少妇被三个黑人4p到爽 | 中港台明星裸体videos | 色激情五月天天 | 大雞巴弄得我好舒服黃片 | 成人毛片免费观看完高清完整版 |