欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長(zhǎng)資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          再不用Gitlab的CI/CD功能,你就out了

          最近發(fā)現(xiàn)Gitlab的CI/CD功能也能實(shí)現(xiàn)自動(dòng)化部署,用起來也挺簡(jiǎn)單!如果你使用的是Gitlab作為Git倉(cāng)庫的話,不妨試試它的CI/CD功能。本文還是以SpringBoot的自動(dòng)化部署為例,實(shí)踐下Gitlab的CI/DI功能。

          SpringBoot實(shí)戰(zhàn)電商項(xiàng)目mall(50k+star)地址:https://github.com/macrozheng/mall

          安裝

          通過Gitlab的CI/CD功能實(shí)現(xiàn)自動(dòng)化部署,我們需要安裝Gitlab、Gitlab Runner、Maven這些服務(wù)。

          安裝Gitlab

          首先我們來安裝下Gitlab,對(duì)Gitlab安裝和使用不了解的朋友可以參考下《10分鐘搭建自己的Git倉(cāng)庫》 。

          使用如下命令運(yùn)行Gitlab服務(wù),這里需要注意的是添加了hostname屬性,這樣我們就可以通過域名來訪問Gitlab了(為了避免一些不必要的麻煩),GITLAB_ROOT_PASSWORD這個(gè)環(huán)境變量可以直接設(shè)置Gitlab中root賬號(hào)的密碼;

          docker run --detach    --hostname git.macrozheng.com    --publish 10443:443 --publish 1080:80 --publish 1022:22    --name gitlab    --restart always    --volume /mydata/gitlab/config:/etc/gitlab    --volume /mydata/gitlab/logs:/var/log/gitlab    --volume /mydata/gitlab/data:/var/opt/gitlab    -e GITLAB_ROOT_PASSWORD=12345678    gitlab/gitlab-ce:latest

          我們需要通過git.macrozheng.com這個(gè)域名來訪問Gitlab,如果你沒有域名的話,可以通過修改本機(jī)的host文件來實(shí)現(xiàn);

          192.168.7.134 git.macrozheng.com

          由于我們的Gitlab運(yùn)行在1080端口上,我們想要不加端口來訪問,可以使用Nginx來反向代理下,對(duì)Nginx不熟悉的朋友可以看下《Nginx的這些妙用,你肯定有不知道的!》 ,在Nginx的配置文件夾中添加git.conf配置文件,內(nèi)容如下:

          server {     listen       80; # 同時(shí)支持HTTP     server_name  git.macrozheng.com; #修改域名      location / {         proxy_pass   http://192.168.7.134:1080; # 設(shè)置代理服務(wù)訪問地址         index  index.html index.htm;     }      error_page   500 502 503 504  /50x.html;     location = /50x.html {         root   /usr/share/nginx/html;     } }

          之后我們就可以通過git.macrozheng.com這個(gè)域名來訪問Gitlab了,輸入賬號(hào)密碼root:12345678即可登錄;

          再不用Gitlab的CI/CD功能,你就out了

          將我們的SpringBoot應(yīng)用代碼上傳到Gitlab上去,這樣Gitlab就準(zhǔn)備完畢了!這里需要注意的是,如果你在啟動(dòng)Gitlab的時(shí)候沒有指定hostname的話,你的項(xiàng)目HTTP訪問地址會(huì)是容器的ID,使用該地址會(huì)無法訪問Git倉(cāng)庫!

          再不用Gitlab的CI/CD功能,你就out了

          安裝Gitlab Runner

          Gitlab只是個(gè)代碼倉(cāng)庫,想要實(shí)現(xiàn)CI/CD還需安裝gitlab-runner,gitlab-runner相當(dāng)于Gitlab中任務(wù)的執(zhí)行器,Gitlab會(huì)在需要執(zhí)行任務(wù)時(shí)調(diào)用它。

          首先下載gitlab-runner的Docker鏡像,選用alpine-bleeding,這個(gè)版本非常小巧!

          docker pull gitlab/gitlab-runner:alpine-bleeding

          使用如下命令運(yùn)行g(shù)itlab-runner;

          docker run --name gitlab-runner --restart always  -v /var/run/docker.sock:/var/run/docker.sock  -v /mydata/gitlab-runner:/etc/gitlab-runner  -d gitlab/gitlab-runner:alpine-bleeding

          此時(shí)我們?nèi)绻榭磄itlab-runner的容器日志的話,會(huì)發(fā)現(xiàn)如下錯(cuò)誤,config.toml文件找不到,這個(gè)問題不必?fù)?dān)心,當(dāng)我們將gitlab-runner注冊(cè)到Gitlab時(shí),會(huì)自動(dòng)生成該文件;

          ERROR: Failed to load config stat /etc/gitlab-runner/config.toml: no such file or directory  builds=0

          接下來我們需要把gitlab-runner注冊(cè)到Gitlab,打開Project->Settings->CI/CD功能,獲取到runner注冊(cè)需要使用的地址和token;

          再不用Gitlab的CI/CD功能,你就out了

          接下來使用如下命令,進(jìn)入gitlab-runner容器的內(nèi)部;

          docker exec -it gitlab-runner /bin/bash

          在容器內(nèi)使用如下命令注冊(cè)runner;

          gitlab-runner register

          注冊(cè)時(shí)會(huì)出現(xiàn)交互界面,提示你輸入注冊(cè)地址、token、執(zhí)行器類型等信息,ssh執(zhí)行器能遠(yuǎn)程執(zhí)行Linux命令,非常好用,推薦使用這個(gè)!

          再不用Gitlab的CI/CD功能,你就out了

          注冊(cè)完成后,我們可以發(fā)現(xiàn)config.toml文件已經(jīng)生成,內(nèi)容如下,以后想修改runner配置的時(shí)候,直接改這個(gè)文件就行了。

          concurrent = 1 check_interval = 0  [session_server]   session_timeout = 1800  [[runners]]   name = "docker-runner"   url = "http://192.168.7.134:1080/"   token = "c2kpV6tX6woL8TMxzBUN"   executor = "ssh"   [runners.custom_build_dir]   [runners.cache]     [runners.cache.s3]     [runners.cache.gcs]     [runners.cache.azure]   [runners.ssh]     user = "root"     password = "123456"     host = "192.168.7.134"     port = "22"

          在Gitlab的CI/CD設(shè)置中,我們可以發(fā)現(xiàn),有個(gè)runner成功注冊(cè)了!

          再不用Gitlab的CI/CD功能,你就out了

          安裝Maven

          SpringBoot項(xiàng)目打包需要依賴Maven,我們需要在服務(wù)器上先安裝好它。

          下載Maven的Linux安裝包,下載地址:https://maven.apache.org/down…

          再不用Gitlab的CI/CD功能,你就out了

          下載完成后使用如下命令解壓到指定目錄;

          cd /mydata tar -zxvf apache-maven-3.8.1-bin.tar.gz

          修改/etc/profile文件,添加環(huán)境變量配置:

          export MAVEN_HOME=/mydata/apache-maven-3.8.1 export PATH=$PATH:$MAVEN_HOME/bin

          通過查看Maven版本來測(cè)試是否安裝成功。

          mvn -v
          Maven home: /mydata/apache-maven-3.8.1 Java version: 1.8.0_292, vendor: AdoptOpenJDK, runtime: /mydata/java/jdk1.8/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"

          安裝JDK

          CentOS上默認(rèn)安裝的是JRE,使用Maven需要安裝JDK。

          下載JDK 8,下載地址:https://mirrors.tuna.tsinghua…

          再不用Gitlab的CI/CD功能,你就out了

          下載完成后將JDK解壓到指定目錄;

          cd /mydata/java tar -zxvf OpenJDK8U-jdk_x64_linux_xxx.tar.gz mv OpenJDK8U-jdk_x64_linux_xxx.tar.gz jdk1.8

          在/etc/profile文件中添加環(huán)境變量JAVA_HOME。

          vi /etc/profile # 在profile文件中添加 export JAVA_HOME=/mydata/java/jdk1.8 export PATH=$PATH:$JAVA_HOME/bin # 使修改后的profile文件生效 . /etc/profile

          使用

          一切準(zhǔn)備就緒,接下來通過Gitlab的CI/CD功能就可以實(shí)現(xiàn)SpringBoot應(yīng)用的自動(dòng)化部署了!

          首先在項(xiàng)目的根目錄下添加.gitlab-ci.yml文件,定義了兩個(gè)任務(wù),一個(gè)任務(wù)會(huì)將應(yīng)用代碼打包成Jar包并復(fù)制到指定目錄,另一個(gè)任務(wù)會(huì)通過運(yùn)行腳本run.sh打包應(yīng)用的Docker鏡像并運(yùn)行;

          # 打包任務(wù) build-job:   stage: build   # 指定標(biāo)簽,只有具有該標(biāo)簽的runner才會(huì)執(zhí)行   tags:     - docker   script:     # 使用Maven打包     - mvn clean package     # 將jar包、Dockerfile、運(yùn)行腳本復(fù)制到指定目錄     - cp target/mall-tiny-gitlab-1.0-SNAPSHOT.jar /mydata/build/mall-tiny-gitlab-1.0-SNAPSHOT.jar     - cp Dockerfile /mydata/build/Dockerfile     - cp run.sh /mydata/build/run.sh  # 部署任務(wù) deploy-job:   stage: deploy   tags:     - docker   script:     # 進(jìn)入指定目錄并執(zhí)行運(yùn)行腳本     - cd /mydata/build     - chmod +x run.sh     - ./run.sh

          這里值得一提的是,默認(rèn)情況下runner只會(huì)執(zhí)行具有相同標(biāo)簽的Job,由于我們對(duì)Job和runner都設(shè)置了標(biāo)簽為docker,所以我們這里是可以執(zhí)行的。如果你沒有設(shè)置標(biāo)簽的話,需要在runner的編輯界面設(shè)置下讓runner可以執(zhí)行沒有標(biāo)簽的Job;

          再不用Gitlab的CI/CD功能,你就out了

          由于我們的gitlab-runner采用的是ssh的執(zhí)行器,它會(huì)登錄到我們指定的服務(wù)器,執(zhí)行我們?cè)?gitlab-ci.yml中定義的script命令,在此之前還會(huì)先從Git倉(cāng)庫中獲取代碼,所以我們還需修改下服務(wù)器上的host文件;

          vim /etc/hosts 192.168.7.134 git.macrozheng.com

          接下來就是要把腳本提交到Git倉(cāng)庫上去,提交后會(huì)在Project->CI/CD->Pipelines中發(fā)現(xiàn)正在執(zhí)行的任務(wù);

          再不用Gitlab的CI/CD功能,你就out了

          打開Pipeline的詳情頁面,可以發(fā)現(xiàn)我們定義的兩個(gè)任務(wù)都已經(jīng)執(zhí)行成功了;

          再不用Gitlab的CI/CD功能,你就out了

          打開Job的詳情界面,我們可以看到任務(wù)執(zhí)行過程中輸出的日志信息;

          再不用Gitlab的CI/CD功能,你就out了

          如果你想手動(dòng)執(zhí)行Pipeline,而不是提交觸發(fā)的話,可以在Pipelines頁面點(diǎn)擊Run Pipeline按鈕即可;

          再不用Gitlab的CI/CD功能,你就out了

          運(yùn)行成功后,可以通過如下地址訪問項(xiàng)目:http://192.168.7.134:8088/swa…

          再不用Gitlab的CI/CD功能,你就out了

          總結(jié)

          如果你用Gitlab作為Git倉(cāng)庫的話,使用它的CI/CD功能來實(shí)現(xiàn)自動(dòng)化部署確實(shí)很不錯(cuò)!安裝一個(gè)輕量級(jí)gitlab-runner,編寫簡(jiǎn)單的.gitlab-ci.yml腳本文件即可實(shí)現(xiàn)。其實(shí)我們之前以及介紹過很多種自動(dòng)化部署方案,比如Jenkins、Gogs+Drone、Gitlab CI/CD,我們可以發(fā)現(xiàn)一個(gè)共同點(diǎn),這些方案都離不開Linux命令。 所以說要想玩轉(zhuǎn)自動(dòng)化部署,還是得先玩轉(zhuǎn)Linux命令!

          相關(guān)視頻教程推薦:Java視頻教程

          贊(3)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)