[From] http://blog.51cto.com/flyfish225/2156602
gitlab 的 CI/CD 配置管理 (二)
標簽(空格分隔):運維系列
- 一:gitlab CI/CD 介紹
- 二:配置gitlab的CI/CD 的runner
- 三:代碼的MAVEN打包環境
- 四:配置gitlab的CI 文件
- 五:發布項目
一: gitlab CI/CD介紹
1.1 gitlab CI/CD概述
Gitlab是常用的開源git代碼管理工具之一,隨着發展也推出了ci/cd解決方案. 顧名思義具體來說ci/cd主要完成以下兩個工作. ci(持續構建) 代碼提交后觸發自動化的單元測試,代碼預編譯,構建鏡像,上傳鏡像等. cd(持續發布) 持續發布則指將構建好的程序發布到各種環境,如預發布環境,正式環境. 官網: https://docs.gitlab.com/ee/ci/README.html
1.2 特性
gitlab ci/cd是由獨立的runner程序完成,runner采用go語言編寫,因此可以很好的進行跨平台,通常可以將runner部署到任何gitlab server之外的服務器,從而避免對gitlab server的影響. 官網:https://docs.gitlab.com/runner/
二:配置gitlab的CI/CD 的runner
2.1 安裝gitlab-runner
參考:
https://docs.gitlab.com/runner/install/linux-repository.html 在 CentOS 7 上面的安裝
Add GitLab's official repository:
# For RHEL/CentOS/Fedora curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
安裝runner
# For RHEL/CentOS/Fedora sudo yum install gitlab-runner
2.2 項目注冊到到runner
參考官網:
https://docs.gitlab.com/runner/register/index.html 找到要發布項目的注冊信息
Setup a specific Runner manually 安裝一個與 GitLab CI 兼容的 Runner (如需了解更多的安裝信息,請查看 GitLab Runner) 在 Runner 設置時指定以下 URL: http://172.17.100.11/ 在安裝過程中使用以下注冊令牌: kA5JA5myz4aZR6MRgEBm 啟動 Runner!
gitlab-runner register
service gitlab-runner start chkconfig gitlab-runner on 在gitlab 上面找到runner 將項目添加到runner里面去
這邊如果有多個項目都可以添加到這個runner 里面去
##三:代碼的MAVEN打包環境
配置 maven
tar -zxvf apache-maven-3.5.3-bin.tar.gz
mv apache-maven-3.5.3 /usr/local/maven vim /etc/profile --- 在Java環境變量下面加上 maven的環境變量 ## maven export MAVEN_HOME=/usr/local/maven PATH=$PATH:$HOME/bin:$MAVEN_HOME/bin ---
source /etc/profile mvn -version
mkdir -p /deploy/solo # 創建 打出solo.war 的目錄 cd /root/project/ rm -rf solo git clone http://172.17.100.11/TL-flyfish/solo.git 嘗試使用 命令行的方式編譯項目: 首次編譯會下載包會很慢 cd solo mvn clean package mvn install mvn install package -Dmaven.test.skip=true 最后會打出solo.war包 表示命令行打包完成 maven 到默認下載的依賴包在/root/.m2/repository
四:配置gitlab的CI 文件
4.1 配置CI 的 運行文件gitlab-ci.yml 打出war包測試
stages:
- build
- run
- deploy
variables:
MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode" MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository" cache: paths: - .m2/repository/ .solo-build-job: &solo-build-job script: - mvn clean package - mvn install - mvn install package -Dmaven.test.skip=true - ls -ld * solo-build: when: manual stage: build script: - mvn clean package - mvn install - mvn install package -Dmaven.test.skip=true - cd $CI_PROJECT_DIR/target/ - ls -ld *
執行構建
最后打出solo.war的包
五: 發布項目
5.1: 部署一台tomcat 中間件的服務器
tomcat 服務器 IP: 172.17.100.12 打通172.17.100.11 和172.17.100.12 的無密碼登錄認證。 下載:tomcat wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.32/bin/apache-tomcat-8.5.32.tar.gz tar -zxvf apache-tomcat-8.5.32.tar.gz mv apache-tomcat-8.5.32 /usr/local/tomcat
啟動tomcat:
cd /usr/local/tomcat/bin ./startup.sh
訪問: 172.17.100.12:8080
5.2 在gitlab-ci.yml 增加發布步驟
stages:
- build
- run
- deploy
variables:
MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode" MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository" cache: paths: - .m2/repository/ .solo-build-job: &solo-build-job script: - mvn clean package - mvn install - mvn install package -Dmaven.test.skip=true - ls -ld * solo-build: when: manual stage: build script: - sudo rm -rf /deploy/solo/solo.war - mvn clean package - mvn install - mvn install package -Dmaven.test.skip=true - cd $CI_PROJECT_DIR/target/ - ls -ld * - cp -ap solo.war /deploy/solo/ solo-run: when: manual stage: run script: - cd /deploy/solo - md5sum solo.war solo-deploy: when: manual stage: deploy script: - cd /deploy/solo/ - scp solo.war root@172.17.100.12:/root - cd /deploy/script - sh -x deploy-solo.sh
發布需要配置 一個發布腳本:
在 172.17.100.11 上面寫編寫腳本:
mkdir /deploy/script -p
---
#!/bin/bash DATE=`date +%Y-%m-%d-%H-%M` ssh root@172.17.100.12 << eof cd /usr/local/tomcat/bin/ sh -x shutdown.sh cd /usr/local/tomcat/webapps/ mv solo.war /data/backup/solo.war$DATE cp /root/solo.war /usr/local/tomcat/webapps/ cd /usr/local/tomcat/bin/ sh -x startup.sh ps -ef |grep tomcat eof ---
在 tomcat 服務器上面新建一個solo.war 包的備份目錄
172.17.100.12 mkdir -p /data/backup
客戶端從git服務器(172.17.100.11) 下載代碼 cd /soft rm -rf * git clone git@172.17.100.11:TL-flyfish/solo-project.git cd solo-project cd src/main/resources/ vim latke.properties --- 修改 這個 serverHost 改為 172.17.100.12 serverHost=172.17.100.12 ---
提交項目:
cd /soft/solo-project git add * git commit -m "add solo" git push -u origin master
發布項目:
點擊執行
開始build
此處報一個 權限不夠
是因為默認構建的時候是gitlab-runner 這個用戶 去執行這個命令的
所以要為gitlab-runner 用戶提權
chmod +x /etc/sudoers vim /etc/sudoers gitlab-runner ALL=(ALL) NOPASSWD:ALL 並要 做gitlab-runner 用戶與 172.17.100.12 的root的用戶的無密鑰登錄
gitlab-cli.yaml 構建 腳本應該為sudo
stages:
- build
- run
- deploy
variables:
MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode" MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository" cache: paths: - .m2/repository/ .solo-build-job: &solo-build-job script: - mvn clean package - mvn install - mvn install package -Dmaven.test.skip=true - ls -ld * solo-build: when: manual stage: build script: - sudo rm -rf /deploy/solo/solo.war - mvn clean package - mvn install - mvn install package -Dmaven.test.skip=true - cd $CI_PROJECT_DIR/target/ - ls -ld * - sudo cp -ap solo.war /deploy/solo/ solo-run: when: manual stage: run script: - cd /deploy/solo - md5sum solo.war solo-deploy: when: manual stage: deploy script: - cd /deploy/solo/ - sudo scp solo.war root@172.17.100.12:/root - cd /deploy/script - sudo sh -x deploy-solo.sh
從新執行build的構建
執行 步驟 run:
執行步驟:deploy
訪問測試:
©著作權歸作者所有:來自51CTO博客作者flyfish225的原創作品,謝絕轉載,否則將追究法律責任