目錄html
Gitlab Runner
實現gitlab runner
# 按照架構自行選擇 本文選擇的是 Linux x86-64 # Linux x86-64 wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64 # Linux x86 wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-386 # Linux arm wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm
chmod +x /usr/local/bin/gitlab-runner
useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner gitlab-runner start
Runner
gitlab
上找到須要用的URL與tokenProject-> Settings -> CI/CD -> Runners -> Expand
gitlab
的ssl證書點擊瀏覽器連接的左邊鎖頭
能夠下載證書。本文下載的格式是cer
java
將下載好的證書上傳到要部署的服務器上。linux
runner
gitlab-runner register --tls-ca-file=/home/gitlab-runner/test.cer # 根據提示 依次輸入以下內容 Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/): https://example.com/ Please enter the gitlab-ci token for this runner: 2312132dfa2fdafeafdafewaf Please enter the gitlab-ci description for this runner: [centos.localdomain]: test Please enter the gitlab-ci tags for this runner (comma separated): test Registering runner... succeeded runner=nZsc7EsF Please enter the executor: docker-ssh+machine, parallels, shell, ssh, virtualbox, docker+machine, kubernetes, custom, docker, docker-ssh: shell Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded! #——————————————————————————注—————————————————————————— 本文的executor選擇的是shell # 註冊成功後再次run一下gitlab-runner [root@centos target]# gitlab-runner start # 註冊成功後生成 /etc/gitlab-runner/config.toml [root@centos target]# cat /etc/gitlab-runner/config.toml concurrent = 1 check_interval = 0 [session_server] session_timeout = 1800 [[runners]] name = "test" url = "https://example.com/" token = "adsfasfdsafdsafdafdsfdafa" tls-ca-file = "/home/gitlab-runner/11111.cer" executor = "shell" [runners.custom_build_dir] [runners.cache] [runners.cache.s3] [runners.cache.gcs]
.gitlab-ci.yml
文件.gitlab-ci.yml
注: 只作了本次部署的配置,具體其餘配置能夠查看官網https://docs.gitlab.com/ee/ci/yaml/README.htmlgit
stages: - build before_script: - export MVN_HOME # export Envionment Variable - export JAVA_HOME - java -version - sh /home/gitlab-runner/kill.sh # 定義 job test: stage: build # stage tags: - first # runner tag you configured only: - test # branch support regex script: #command - mvn clean - mvn package - cd ./target - nohup java -Xms3g -Xmx3g -jar test-new-0.0.1-SNAPSHOT.jar --server.port=9999 > test.log 2>&1 &
.gitlab-ci.yml
的正確性能夠在gitlab
上使用CI Lint
驗證上面yml
文件的正確行。CI Lint
在 CI/CD
裏面。下面是個人驗證結果。web
Status: syntax is correct Parameter Value Build Job - test export MVN_HOME export JAVA_HOME java -version sh /home/gitlab-runner/kill.sh mvn clean mvn package cd ./target nohup java -Xms3g -Xmx3g -jar test-new-0.0.1-SNAPSHOT.jar --server.port=9999 > test.log 2>&1 & Tag list: first Only policy: refs, test Except policy: Environment: When: on_success
.gitlab-ci.yml
文化中指定的 runner tag必定要存在[不然找不到runner會一直pending]fatal: unable to access 'https://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxx@gitlab.x.com/root/cmop.git/': Peer's Certificate issuer is not recognized.
# 關閉ssl校驗 [root@gitlab-runner ~]# su - gitlab-runner [gitlab-runner@gitlab-runner ~]$ git config --global http."sslVerify" false # 查看 [gitlab-runner@gitlab-runner ~]$ cat /home/gitlab-runner/.gitconfig [http] sslVerify = false
jenkins
1. 訪問 : https://jenkins.io/download/。本文采用的使用是`war`包安裝 2. 下載: `wget http://ftp-chi.osuosl.org/pub/jenkins/war-stable/2.190.2/jenkins.war` 3. 運行 :`nohup java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war --httpPort=8888 > jenkins.log 2>&1 &` 注: `-Dhudson.util.ProcessTree.disable=true`參數很重要,爲了避免讓jenkins殺掉job建立的進程。若是不加的話,即使是`nohup`執行的命令也會在job執行以後殺掉。
ip:8888
進行初始化設置注:若是以前安裝過jenkins
,會自動升級,並保留以前的數據docker
Jenkins initial setup is required. An admin user has been created and a password generated. Please use the following password to proceed to installation: # 使用下面的密碼進入,實際是一個md5的串 1111111111111111111111111
plugins
本文直接選擇了 suggestions plugins
,部分插件安裝失敗能夠直接跳過。shell
從新設置一個密碼centos
# 忘記祕密: 到`/root/.jenkins/users` `admin`用戶下找到config.xml,修改下面的內容 <passwordHash>#jbcrypt:$2a$10$MiIVR0rr/UhQBqT.bBq0QehTiQVqgNpUGyWW2nJObaVAM/2xSQdSq</passwordHash> 這個密碼是`123456`
jenkins
中配置Gitlab
實現自動部署gitlab
插件1. 依次訪問:`Manage Jenkins`->`Manage Plugins` 2. 在:`Available`中搜索`Gitlab`,安裝`Gitlab`插件 3. 等待安裝。
gitlab
鏈接[可不作]1. 依次訪問:`Manage Jenkins`->`Configure System` 2. 找到 Gitlab 標籤頁 3. 依次填入`Connection name`,`Gitlab host URL` 4. 添加一個`Credntials`,選擇`Gitlab API token` 5. 填入在gitlab上設置的`Personal Access Tokens` 6. 點開`Advanced`,勾上`Ignore SSL Certificate Errors` 注:若是不勾上步驟6的話,gitlab是https的將會不成功。 7. 點擊`Test Connnection` 8. 保存
Freestyle project
的Jobtest
此時能夠先不作任何配置,直接保存。瀏覽器
test
job gitlab
倉庫1. 在job`test`頁面點擊`Configure` 2. 找到`Source Code Management`選擇`Git` 3. 配置`Repository URL`並添加一個`Credentials` 注:此處想使用`Personal Access Tokens`添加不上,最後使用的帳號密碼 4. 保存
test
job Triggers
1. 在job`test`頁面點擊`Configure` 2. 找到`Build Triggers`選擇`Build when a change is pushed to GitLab`其餘默認就行 3. 保存
webhook
1. 到`Gitlab`項目頁面->`Settings`->`Integrations` 2. 輸入上一步配置後面的`url` 3. 返回錯誤`Url is blocked: Requests to the local network are not allowed` 4. 上面的解決辦法: 管理員帳號登陸gitlab,在Admin area中,左側Settings -> Network -> Outbound requests,勾選Allow requests to the local network from hooks and services 可是沒有gitlab管理員權限,咱們將採起別的辦法
test
job Triggers
改成Poll SCM
1. 配置每分鐘刷新一次 */1 * * * *
bulid
執行命令export MVN_HOME # export Envionment Variable export JAVA_HOME java -version sh /home/gitlab-runner/kill.sh cd /root/.jenkins/workspace/test mvn clean mvn package cd ./target nohup java -Xms3g -Xmx3g -jar test-new-0.0.1-SNAPSHOT.jar --server.port=9999 > test.log 2>&1 & # 這些也能夠寫到一個shell腳本中,jenkins調用腳本
gitlab-ci
gitlab
完美兼容gitlab
有提供jenkins
webhook
,或者像本文同樣輪詢jdk
mvn
能夠在設置中配置,不須要構建