您好,登錄后才能下訂單哦!
這篇文章主要介紹Gitlab的CI/CD功能怎么用,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
SpringBoot實戰電商項目mall(50k+star)地址:https://github.com/macrozheng/mall
通過Gitlab的CI/CD功能實現自動化部署,我們需要安裝Gitlab、Gitlab Runner、Maven這些服務。
首先我們來安裝下Gitlab,對Gitlab安裝和使用不了解的朋友可以參考下《10分鐘搭建自己的Git倉庫》 。
使用如下命令運行Gitlab服務,這里需要注意的是添加了hostname屬性,這樣我們就可以通過域名來訪問Gitlab了(為了避免一些不必要的麻煩),GITLAB_ROOT_PASSWORD這個環境變量可以直接設置Gitlab中root賬號的密碼;
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這個域名來訪問Gitlab,如果你沒有域名的話,可以通過修改本機的host文件來實現;
192.168.7.134 git.macrozheng.com
由于我們的Gitlab運行在1080端口上,我們想要不加端口來訪問,可以使用Nginx來反向代理下,對Nginx不熟悉的朋友可以看下《Nginx的這些妙用,你肯定有不知道的!》 ,在Nginx的配置文件夾中添加git.conf配置文件,內容如下:
server { listen 80; # 同時支持HTTP server_name git.macrozheng.com; #修改域名 location / { proxy_pass http://192.168.7.134:1080; # 設置代理服務訪問地址 index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
之后我們就可以通過git.macrozheng.com這個域名來訪問Gitlab了,輸入賬號密碼root:12345678即可登錄;
將我們的SpringBoot應用代碼上傳到Gitlab上去,這樣Gitlab就準備完畢了!這里需要注意的是,如果你在啟動Gitlab的時候沒有指定hostname的話,你的項目HTTP訪問地址會是容器的ID,使用該地址會無法訪問Git倉庫!
Gitlab只是個代碼倉庫,想要實現CI/CD還需安裝gitlab-runner,gitlab-runner相當于Gitlab中任務的執行器,Gitlab會在需要執行任務時調用它。
首先下載gitlab-runner的Docker鏡像,選用alpine-bleeding,這個版本非常小巧!
docker pull gitlab/gitlab-runner:alpine-bleeding
使用如下命令運行gitlab-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
此時我們如果查看gitlab-runner的容器日志的話,會發現如下錯誤,config.toml文件找不到,這個問題不必擔心,當我們將gitlab-runner注冊到Gitlab時,會自動生成該文件;
ERROR: Failed to load config stat /etc/gitlab-runner/config.toml: no such file or directory builds=0
接下來我們需要把gitlab-runner注冊到Gitlab,打開Project->Settings->CI/CD功能,獲取到runner注冊需要使用的地址和token;
接下來使用如下命令,進入gitlab-runner容器的內部;
docker exec -it gitlab-runner /bin/bash
在容器內使用如下命令注冊runner;
gitlab-runner register
注冊時會出現交互界面,提示你輸入注冊地址、token、執行器類型等信息,ssh執行器能遠程執行Linux命令,非常好用,推薦使用這個!
注冊完成后,我們可以發現config.toml文件已經生成,內容如下,以后想修改runner配置的時候,直接改這個文件就行了。
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設置中,我們可以發現,有個runner成功注冊了!
SpringBoot項目打包需要依賴Maven,我們需要在服務器上先安裝好它。
下載Maven的Linux安裝包,下載地址:https://maven.apache.org/down...
下載完成后使用如下命令解壓到指定目錄;
cd /mydata tar -zxvf apache-maven-3.8.1-bin.tar.gz
修改/etc/profile文件,添加環境變量配置:
export MAVEN_HOME=/mydata/apache-maven-3.8.1 export PATH=$PATH:$MAVEN_HOME/bin
通過查看Maven版本來測試是否安裝成功。
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"
CentOS上默認安裝的是JRE,使用Maven需要安裝JDK。
下載JDK 8,下載地址:https://mirrors.tuna.tsinghua...
下載完成后將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文件中添加環境變量JAVA_HOME。
vi /etc/profile # 在profile文件中添加 export JAVA_HOME=/mydata/java/jdk1.8 export PATH=$PATH:$JAVA_HOME/bin # 使修改后的profile文件生效 . /etc/profile
一切準備就緒,接下來通過Gitlab的CI/CD功能就可以實現SpringBoot應用的自動化部署了!
首先在項目的根目錄下添加.gitlab-ci.yml文件,定義了兩個任務,一個任務會將應用代碼打包成Jar包并復制到指定目錄,另一個任務會通過運行腳本run.sh打包應用的Docker鏡像并運行;
# 打包任務 build-job: stage: build # 指定標簽,只有具有該標簽的runner才會執行 tags: - docker script: # 使用Maven打包 - mvn clean package # 將jar包、Dockerfile、運行腳本復制到指定目錄 - 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 # 部署任務 deploy-job: stage: deploy tags: - docker script: # 進入指定目錄并執行運行腳本 - cd /mydata/build - chmod +x run.sh - ./run.sh
這里值得一提的是,默認情況下runner只會執行具有相同標簽的Job,由于我們對Job和runner都設置了標簽為docker,所以我們這里是可以執行的。如果你沒有設置標簽的話,需要在runner的編輯界面設置下讓runner可以執行沒有標簽的Job;
由于我們的gitlab-runner采用的是ssh的執行器,它會登錄到我們指定的服務器,執行我們在.gitlab-ci.yml中定義的script命令,在此之前還會先從Git倉庫中獲取代碼,所以我們還需修改下服務器上的host文件;
vim /etc/hosts 192.168.7.134 git.macrozheng.com
接下來就是要把腳本提交到Git倉庫上去,提交后會在Project->CI/CD->Pipelines中發現正在執行的任務;
打開Pipeline的詳情頁面,可以發現我們定義的兩個任務都已經執行成功了;
打開Job的詳情界面,我們可以看到任務執行過程中輸出的日志信息;
如果你想手動執行Pipeline,而不是提交觸發的話,可以在Pipelines頁面點擊Run Pipeline按鈕即可;
運行成功后,可以通過如下地址訪問項目:http://192.168.7.134:8088/swa...
以上是“Gitlab的CI/CD功能怎么用”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。