之前說過各家公司的CICD落地方案不同,五花八門,之前說過java的微服務,k8s的叢集環境,在這位基礎,包括程式碼的編譯,程式碼的提交,單元測試服務的釋出,關鍵的節點自動化起來。原始碼:github.com/limingios/m… master分支CICD
Jenkins
java編寫的開源的工具,jenkins比較靈活,可以通過外掛的方式,新增所需要的外掛,除了擴充套件性還支援多臺機器的分散式構建,jenkins的使用者群很龐大,可以說是目前最主流的部署工具。
梳理流程git+jenkins+k8s
- 客戶端發起程式碼push到gitlab上
- gitlab配置了webhook的東西,它可以出發jenkins的構建
- jenkins做的事情就比較多 3.1 構建程式碼 3.2 靜態分析 3.3 單元測試 3.4 build映象 3.5 推送push映象倉庫 3.6 呼叫k8s的api
- k8s拉取映象倉庫的進行部署。
GitLab安裝(101這臺主機)
原始碼中server01
- 下載映象
$ docker pull gitlab/gitlab-ce:latest複製程式碼
- 執行GitLab容器
使用docker命令執行容器,注意修改hostname為自己喜歡的名字,-v部分掛載目錄要修改為自己的目錄。 埠對映這裡使用的都是安全埠,如果大家的環境沒有埠限制或衝突可以使用與容器同埠,如:-p 443:443 -p 80:80 -p 22:22
- 生成啟動檔案 - start.sh
cat <<EOF > start.sh
#!/bin/bash
HOST_NAME=gitlab.idig8.com
GITLAB_DIR=`pwd`
docker stop gitlab
docker rm gitlab
docker run -d \\
--hostname \${HOST_NAME} \\
-p 8443:443 -p 8080:80 -p 2222:22 \\
--name gitlab \\
-v \${GITLAB_DIR}/config:/etc/gitlab \\
-v \${GITLAB_DIR}/logs:/var/log/gitlab \\
-v \${GITLAB_DIR}/data:/var/opt/gitlab \\
gitlab/gitlab-ce:latest
EOF複製程式碼
- 執行start.sh 啟動gitlab
sh start.sh複製程式碼
- 配置環境
修改host檔案,使域名可以正常解析 192.168.66.101 gitlab.idig8.com
image.png
- 修改ssh埠(如果主機埠使用的不是22埠)
修改檔案:${GITLAB_DIR}/config/gitlab.rb 找到這一行:# gitlab_rails['gitlab_shell_ssh_port'] = 22 把22修改為你的宿主機埠(這裡是2222)。然後將註釋去掉。
- 重新啟動容器
sh start.sh複製程式碼
GitLab試用
- 設定管理員密碼
首先根據提示輸入管理員密碼,這個密碼是管理員使用者的密碼。對應的使用者名稱是root,用於以管理員身份登入Gitlab。
- 建立賬號 設定好密碼後去註冊一個普通賬號
- 建立專案 註冊成功後會跳到首頁,我們建立一個專案,名字大家隨意
- 新增ssh key
專案建好了,我們加一個ssh key,以後本地pull/push就簡單啦
首先去到新增ssh key的頁面
然後拿到我們的sshkey 貼到框框裡就行啦 怎麼拿到呢?看下面:
#先看看是不是已經有啦,如果有內容就直接copy貼過去就行啦
cat ~/.ssh/id_rsa.pub
#如果上一步沒有這個檔案 我們就建立一個,執行下面命令(郵箱改成自己的哦),一路回車就好了
ssh-keygen -t rsa -C "394498036@qq.com"
cat ~/.ssh/id_rsa.pub複製程式碼
PS:目的是本地push的時候沒有許可權問題,方便直接提交程式碼到gitlab上。
- 測試一下 點開我們剛建立的專案,複製ssh的地址
新增個檔案試試(我的專案叫microservice)
#clone程式碼
cd existing_folder
git init
git remote add origin ssh://git@gitlab.idig8.com:2222/liming/microservice.git
git add .
git commit -m "Initial commit"
git push -u origin master複製程式碼
Jenkins安裝(102這臺主機)
原始碼中server02
- 下載映象
docker pull stephenreed/jenkins-java8-maven-git複製程式碼
- 執行Jenkins容器
使用docker命令執行容器,注意修改hostname為自己喜歡的名字,-v部分掛載目錄要修改為自己的目錄。 埠對映這裡使用的都是安全埠,如果大家的環境沒有埠限制或衝突可以使用與容器同埠,如:-p 443:443 -p 80:80 -p 22:22
- 生成啟動檔案 - startJenkins.sh
cat <<EOF > startJenkins.sh
#!/bin/bash
HOST_NAME=jenkins.idig8.com
GITLAB_DIR=/root
docker stop jenkins
docker rm jenkins
docker run -d \
--hostname ${HOST_NAME} \
-p 8888:8080 -p 50000:50000 \
--name jenkins \
-v ${GITLAB_DIR}/jenkins/:/etc/localtime:ro \
-P stephenreed/jenkins-java8-maven-git
EOF複製程式碼
- 執行startJenkins.sh 啟動gitlab
sh startJenkins.sh複製程式碼
- 配置環境
修改host檔案,使域名可以正常解析 192.168.66.102 jenkins.idig8.com
- 檢視初始化祕鑰
docker ps
docker exec -it f3111725cd64 /bin/bash
cat /var/jenkins_home/secrets/initialAdminPassword複製程式碼
頁面輸入剛才的祕鑰
- 選擇外掛
其他預設,Pipelines全選
涉及到跨域,需要關閉,系統管理-全域性安全
PS:可能有的外掛安裝不了,不要慌老鐵,進入到jenkins的管理頁面會提示你更新jenkins更新下,然後外掛又可以自動下載安裝完畢了。