標籤(空格分隔):運維繫列html
- 一:gitlab CI/CD 介紹
- 二:配置gitlab的CI/CD 的runner
- 三:代碼的MAVEN打包環境
- 四:配置gitlab的CI 文件
- 五:發佈項目
一: gitlab CI/CD介紹linux
Gitlab是經常使用的開源git代碼管理工具之一,隨着發展也推出了ci/cd解決方案. 顧名思義具體來講ci/cd主要完成如下兩個工做. ci(持續構建) 代碼提交後觸發自動化的單元測試,代碼預編譯,構建鏡像,上傳鏡像等. cd(持續發佈) 持續發佈則指將構建好的程序發佈到各類環境,如預發佈環境,正式環境. 官網: https://docs.gitlab.com/ee/ci/README.html
gitlab ci/cd是由獨立的runner程序完成,runner採用go語言編寫,所以能夠很好的進行跨平臺,一般能夠將runner部署到任何gitlab server以外的服務器,從而避免對gitlab server的影響. 官網:https://docs.gitlab.com/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
參考官網: 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打包環境git
配置 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
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的包
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
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
訪問測試: