Jenkins

Jenkins安裝

在宿主機安裝Jenkins

#open jdk
yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
#查看版本
java -version

#方式一:官方倉庫(太慢太慢太慢)
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
#安裝Jeckins
yum install jenkins -y

#方式二:先下載再安裝,也慢,不到100k/s 慢慢等算了
wget https://pkg.jenkins.io/redhat-stable/jenkins-2.176.3-1.1.noarch.rpm
rpm -ivh jenkins-2.156-1.1.noarch.rpm

 

使用docker運行jenkins(推薦)

#一句搞定  -u 0 :run as a root user (uid=0)(不然docker run 的時候 沒有寫入權限)
docker run -u 0 -p 8080:8080 -p 50000:50000 -d -v /home/jenkins-home-docker:/var/jenkins_home jenkins/jenkins

#瀏覽 http://ip:8080

#查看token (提示找不到,感受run的時候 -v 映射卷,沒有映射上)
cat /var/jenkins_home/secrets/initialAdminPassword

#進入容器內部
docker exec -it fcdba184a17f  /bin/bash 
#再查看容器內部的token,就有了
cat /var/jenkins_home/secrets/initialAdminPassword

#在jenkins的容器內部,參考第三條,配置鏡像加速,否則構建容器的時候會很慢;
#退出容器,回到宿主機
ctrl+p & ctrl+q

 Jenkins配置

基礎配置

#Jenkins時區設置爲北京時間 :打開 【系統管理】->【腳本命令行】運行下面的命令
System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')

#配置發件人郵箱和SMTP

安裝插件

#安裝插件
Git:從Git拉去代碼
Chinese: 中文
Docker : 提供docker 構建和發佈 
SSH : 提供經過SSH在遠程主機執行命令,用於部署服務 
maven : 支持maven

 

Docker配置

目的:html

#系統管理-系統設置-雲 :新增
Name:Docker
Docker Host URI:tcp://10.6.66.229:2375

SHH主機配置

#系統管理-系統設置-SSH remote hosts
  SSH sites:新增
  Hostname:10.6.66.229
  Port:22
  Credentials: (須要添加一個docker宿主機的用戶,做爲憑證)
  serverAliveInterval:0
  timeout:0

 

Git配置

建立公鑰和私鑰,以便從git拉去代碼java

[root@Jenkins ~]# ssh-keygen 
Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:5SGYye8oxCKFJjddb4W8JC0RAQhBWCvuG8aZL8eMJs4 root@Jenkins The key's randomart image is: +---[RSA 2048]----+ |==....=* .. | |...o oo==. | |+.= . =++.o | |++ o o.+ . | |... o S . | |o.oo o | | B+ . . . | |++++ . | |+Eo. | +----[SHA256]-----+ [root@Jenkins ~]# cat /root/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6N5UGSP0jKobEsVeDn//OgSnkSHA78QZaLkglSX5jbb0clgr5KkcyuxYhiDBugZ9EFP3ttdYlAmDWPkEQhbyWtkHsJJY6voFakM91zNhKffjBBN0oL8JPa6dQvP1m9DF48rKNb6aTjO09OOriLUGQbSVCifVj04bFlwCmwPlCE/rH69QbP7qN2y9Ls+jA6YM9wRj4p57F2ZXdRWBb4MCjgMRi7AM73bWERo1xuUcXu1EPnVhGtQoFI11TpQwH/ly2OoVmZMcTh5N/UzUhRiDsu993blldtwBCpu0i5a9J5LPoV6RWPcmd7ZbAJQhS+nXTKJlX4+C9A4JZXZGDADfd root@centos-t001 [root@Jenkins ~]# cat /root/.ssh/id_rsa

-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAujeVBkj9IyqGxLFXg5//zoEp5EhwO/EGWi5IJUl+Y229HJYK
+SpHMrsWIYgwboGfRBT97bXWJQJg1j5BEIW8lrZB7CSWOr6BWpDPdczYSn34wQTd
KC/CT2unULz9ZvQxePKyjW+mk4ztPTjq4i1BkG0lQon1Y9OGxZcApsD5QhP6x+vU
Gz+6jdsvS7PowOmDPcEY+KeexdmV3UVgW+DAo4DEYuwDO921hEaNcblHF7tRD51Y
RrUKBSNdU6UMB/5ctjqFZmTHE4eTf1M1IUYg7Lvfd25ZXbcAQqbtIuWvSeSz6Fek
Vj3Jne2WwCUIUvp10yiZV+PgvQOCWV2RgwA33QIDAQABAoIBAAj8CYqmFuCNerce
v1Qwcg0qmjTTcebSeDX9qaly5FAzyT4J1zmyWoEOGcFAauXKBz8nrCC99zkN5lIv
6r+7VCAJZyDXmw/2hRMzjW7nlT/y1/+oFmuL8loWnZn9pFRFT+W///FnA6h20jNz
/ZEwEcvAGF4ffeF1ITmDUZq6EMypSQJH4XXPh7FqfFTM3s3zwjtcxbwXQVw/KXmR
iI4k20zsw1WSPLPg2JPbvws7QZddut5M1TCHn9AvU4y4KrigCPoqLLGElvmKzkaW
Z9pjk7kk07u4lU6YuE2NLYRf7j/WqYC+/IrAIYlhY6fS6JL/nzmWu0yTLyiSExdO
mih2VwECgYEA6EdXtiJcMQu5d7195cV98P/BUL7iL0huIBmlU0c+7+/cvea6V587
V1c4B8s+NpyDIfkSHVOZdLhmRg78nXT7BuSWcRwOLJn61h2oJ03GlEZL/emrreH4
cRb2hO8O4uAJFKUSGeHogdZAYQb21FpSmzSEQiMbJXCP3bwwqEKp8r0CgYEAzTwD
YQiD4YSLzAP+V5nlpWuUgBmhXwOci5CJshsoGCCcEfRgHrrJ1xNI5zXriL1WxLPL
jhFSSQyv1a+MydWp/GvcMm7UNzSWob3otf/pRqQgJN6Ix7lvTmEqaQxf5Ye9ZVei
YVjp5v1cKiDtZtKWgpj6aWXOvo6UDhNnaJkxO6ECgYEApfkcbpOcxpr3Gt13EXEN
7eACVV0gJ+Mcdal9ncUh7ra5R6SPcD7iWyWCbudGfCVX+jWMQRJUa7e7tMHOtgA5
wxIhgY8nfa1FNCwa1ILZq2eTs0p+FxCJwt1Cp3hebbTiKDNPfNkUl3ntpKciRliI
AEkFXHDTW+xTkICBUCnaYA0CgYAXwy8Q+Q9r+RDGml/EfMkeEgqrmkwY2C4z6pRG
zuYhhQUM/yJx7GaaRF1Yh+Gxf1qgg8C5vj+svY9OSnkelWKNG1/vZu2jRq96Iqbj
C7JSv4YJPsrPdSTyCkYCy6/+v2yqYy8l3kmWuRcGubFDCnbqwBOeSG9bmN6DkrOS
ZMpSgQKBgQCvEiVGLIgo2L/1k8cELQZfBcY3RuA8gvkaJfIpgXdt7qkJbvMpZP6e
rX/sANXrY8+PX2DfbsHmZ0HGjEWA0F4ncNloI1jPqN6U/GRSHa/t/nO4/RzL8rpx
lKw190pEZ/sEHv9KXeVZdT5noyw1Y67ssUapX3BRU67/7kOhakMJVg==
-----END RSA PRIVATE KEY-----git

憑據配置

 Docker registry 憑據web

 

Jenkins使用

新建任務

#新建任務:選擇自由風格

#源碼管理:
  1.選擇Git,Repository URL:填寫項目的git地址
  2.按上一步建立公鑰和私鑰
  3.在gitlab中添加公鑰id_rsa.pub
  4.添加憑據:
    類型:選擇SSH
    UserName:git
    選擇Enter directly, 點擊Add ,填寫上一步生成的 私鑰id_rsa

#構建觸發器
  1.選擇:輪詢 SCM
    輸入 設置兩分鐘拉取一次
  2.使用webhooks遠程出發構建    #構建:見下一步
  
H/2 * * * *

 

構建流程

第0步:在Docker Swarm Manager節點上的主機目錄上,編寫docker-compose.yml,編排容器和服務;docker

第1步:先從Git拉取代碼shell

第2步:添加構建步驟:Build / Publish Docker Imageapache

  1.根據代碼中的Dockerfile構建Images;centos

  2.將構建好的Image,push到倉庫;bash

第3步:添加構建步驟:Execute shell script on remote host using ssh  dom

cd /data/dicker/compose/xplan   #docker-compose.yml所在目錄
docker stack down xplan      #下線
docker stack deploy -c docker-compose.yml xplan  #從新部署

 

第4步:提交代碼,等待構建和發佈;

 

 

 參考: 

【★】Docker+Jenkins持續集成環境(1)使用Docker搭建Jenkins+Docker持續集成環境

Jenkins與網站代碼上線解決方案 

ASP.NET Core + Docker +Jenkins 實現持續集成 

Jenkins持續集成 & .NET

相關文章
相關標籤/搜索