Jenkins项目部署,Jenkins+GitHub/GitLab

环境准备:一台nginx,一台gitlab,一个能使用的github账号

样例:github项目地址 git@github.com:13331033844/test.git

nginx:10.1.1.28

1.下载java环境

官网指路:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

版本:

Linux x64185.16 MB  jdk-8u231-linux-x64.tar.gz

具体下载地址:https://download.oracle.com/otn/java/jdk/8u231-b11/5b13a193868b4bf28bcb45c792fce896/jdk-8u231-linux-x64.tar.gz?AuthParam=1573475025_69f85eeb325c1a8e2037d76d4964650c

注:这个下载地址不保证直接能用,常规节奏是进入Oracle官网进行点击下载(还要求注册Oracle会员),然后用ftp上传服务器。

如果好使,可以直接在shell里wget它。本文是进行了Oracle会员注册后,再shell中就可以下载了。不知道这个注册是不是影响了下载能力。

2.安装Java环境

以本文为例,我们按照管理将文件jdk-8u231-linux-x64.tar.gz下载到/software文件夹中。

# 本文以jdk-8u192版本为例
 
# cd /software
# tar xvf jdk-8u192-linux-x64.tar.gz
# mkdir /usr/local/java
# mv /software/jdk1.8.0_192 /usr/local/java/
# 建立一个/usr/local/的java专用文件夹,因为java环境版本繁杂,为以后可能进行的版本拓展,将所有java文件放在专用文件夹下,并以版本区分
 
# 将java加入环境变量。
# echo "export PATH=\$PATH:/usr/local/java/jdk1.8.0_192/bin" >> /etc/profile
# source /etc/profile

3.下载与安装

官方网站:https://pkg.jenkins.io/redhat-stable/

具体网址:https://prodjenkinsreleases.blob.core.windows.net/redhat-stable/jenkins-2.190.3-1.1.noarch.rpm

# cd /software
# wget https://prodjenkinsreleases.blob.core.windows.net/redhat-stable/jenkins-2.190.3-1.1.noarch.rpm
# yum -y install jenkins-2.190.3-1.1.noarch.rpm


注:jenkins默认的java安装路径是/usr/bin/java。
注:jenkins负责启动的配置文件路径是/etc/init.d/jenkins
# vim /etc/init.d/jenkins

/usr/bin/java
修改成
/usr/local/java/jdk版本号/bin/java
/usr/local/java/jdk1.8.0_192/bin/java

# systemctl start jenkins
# chkconfig jenkins on
# ss -nltp
java占用8080端口,视为开启成功

4.jenkins初探

开启一个浏览器,访问jenkins服务器。

URL:IP:8080

例如:http://10.1.1.10:8080/

提示我:Please wait while Jenkins is getting ready to work ...

等一会后。如果一直不变则需要你进入jenkins的工作目录,打开

# 默认jenkins安装在/var/lib下
# vi /var/lib/jenkins/hudson.model.UpdateCenter.xml

http://updates.jenkins-ci.org/update-center.json
改成
http://mirror.xmission.com/jenkins/updates/update-center.json
或
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/stable/update-center.json

# systemctl restart jenkins

等一小会,页面会变成

解锁 Jenkins

# cat /var/lib/jenkins/secrets/initialAdminPassword
8977544a04844a0e991f658038734cbf

这个就是管理员密码




如果服务员老头眼里冒火,提示报错的内容如下
hudson.security.AccessDeniedException2: anonymous is missing the Overall/Administer permission
则

修改/var/lib/jenkins/config.xml文件
删除authorizationStrategy、securityRealm节点 

进入网页配置环节 

自定义Jenkins

1.网络情况好,尤其访问外网方便的人。
安装推荐插件
2.网络状况差,选择右一
然后直接X掉右上角。点击开始使用jenkins。


http://IP:8080/user/admin/configure
可以根据需求修改默认admin用户的密码。
也可创建新管理员账号,但admin则失效。

若遗忘密码
# cp  /var/lib/jenkins/config.xml /备份目录/config.xml.bak
先备份一下

# vim /var/lib/jenkins/config.xml
打开此文件,然后把下面的一段注释(使用<!--  -->来注释)或删除

<useSecurity>true</useSecurity>
   <authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy">
       <denyAnonymousReadAccess>true</denyAnonymousReadAccess>
   </authorizationStrategy>
   <securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
       <disableSignup>true</disableSignup>
       <enableCaptcha>false</enableCaptcha>
   </securityRealm>

# systemctl stop jenkins
# systemctl start jenkins
重启服务后,web访问就不需要密码验证了

5.jenkins+github+nginx

第一步:github免密。

先操作jenkins这台机器,让它和github账号进行免密ssh关联。
本文以root默认为例,自定义则自主修改。
# ssh-keygen
然后回车三连
# cat /root/.ssh/id_rsa.pub

把公钥加入github。(这段略)

测试下。
# mkdir /test
# cd /test   

设置资料
# git config --global user.name "aaa"
# git config --global user.email "aaa@q.com"
# git config --global push.default simple

下载测试,这段可以自行测试
# git clone git@github.com:13331033844/test.git

# cd test
# echo 12345 > index.html
# git add index.html
# git commit -m '12345'
# git push

正常是需要输入账号密码,而这次则不需要,成功免密。

第二步:jenkins安装插件

cd /var/lib/jenkins/plugins/

jenkins安装插件极其坑爹,网络上相关的各种换源并不是对所有人都好使,作者当前网络状况良好,下片一秒好几M,然而,换了清华源之后仍然failure。
根据排查,得出结论。

项目部署需要的插件如下
1.GitHub Authentication
2.Publish Over SSH

算上所有的依赖之后,用wget下载

https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/jackson2-api/latest/jackson2-api.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/script-security/latest/script-security.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/command-launcher/latest/command-launcher.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/github-api/latest/github-api.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/structs/latest/structs.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/pipeline-stage-step/latest/pipeline-stage-step.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/credentials/latest/credentials.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/apache-httpcomponents-client-4-api/latest/apache-httpcomponents-client-4-api.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/ssh-credentials/latest/ssh-credentials.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/jsch/latest/jsch.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/git-client/latest/git-client.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/scm-api/latest/scm-api.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/display-url-api/latest/display-url-api.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/mailer/latest/mailer.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/git/latest/git.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/token-macro/latest/token-macro.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/plain-credentials/latest/plain-credentials.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/github/latest/github.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/github-branch-source/latest/github-branch-source.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/pipeline-github/latest/pipeline-github.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/junit/latest/junit.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/bouncycastle-api/latest/bouncycastle-api.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/matrix-project/latest/matrix-project.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/github-organization-folder/latest/github-organization-folder.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/ace-editor/latest/ace-editor.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/jquery-ui/latest/jquery-ui.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/branch-api/latest/branch-api.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/pipeline-multibranch-defaults/latest/pipeline-multibranch-defaults.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/trilead-api/latest/trilead-api.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/publish-over-ssh/latest/publish-over-ssh.hpi

# systemctl restart jenkins
重新访问
http://IP:8080/pluginManager/available
搜索下载他俩。
1.GitHub Authentication
2.Publish Over SSH
会自动匹配这些插件,直接安装。
出现报错failure不用理会,安完重启,再安一次,好像就没了。

安装成功后再重启一次
# systemctl restart jenkins

第三步:jenkins私钥配置

在 http://Jenkins_server_IP:8080/configure 里,向下拉。

如果Publish over SSH插件安装成功,则你能看到一个Publish over SSH表单。

将前面与github互连公钥的那份私钥复制进key输入框。

点击add按钮。又弹出4条输入框。这里填写nginx(或web服务)相关信息

Name    自定义一个服务器名字
Hostname    web服务器IP
Username    web服务器使用用户,默认root
Remote Directory    默认填'/'

第四步:上面填完之后要将jenkins服务器与nginx服务器做免密登陆

# ssh-copy-id -i nginx服务器IP
# ssh-copy-id -i 10.1.1.28

然后点击Test Configuration。
提示Success,视为成功
点击save

然后进入,点击凭证,jenkins,全局凭证,Add Credentials
http://Jenkins_server_IP:8080/credentials/store/system/domain/_/newCredentials

kind 选 SSH Username with private key
Username 填 root
Private Key 选中 Enter directly
弹出key,点击add
复制私钥进入。
其余不填

点击 确定/OK 

第五步:创建一个新任务。

回到主页
http://Jenkins_server_IP:8080/

点击 create new jobs
Enter an item name 输入一个名字
选择 Freestyle project
点击 确认/OK

Description 填写点描述
Source Code Management 选择git
    Repository URL	填写git的URL
    Credentials 选择root
    Branch Specifier (blank for 'any') 填写分支名,默认master不动
Build 选择Send files or execute commands over SSH
    Source files 一般填写 **/** 表示github中所有文件
    Remote directory 填写nginx项目目录,例如/usr/local/nginx/html

其余不填,点击save

6.执行测试

回到主页,点击右侧项目名,再点击左侧的Build Now

左下角会出现一个进度条,小球球变成红色是失败,蓝色是成功

点进去可以看到日志信息,分析错误。

总结:

整套流程是 jenkins 将本机root私钥发送给jenkins服务,两次

jenkins将本机公钥发送给github,nginx分别一次

当我们向github传送代码后,jenkins进行手动构建,可以将github的代码推送到nginx中,当绑定项目时填写多个nginx服务,则共同推送,实现代码的同时发布。

7.jenkins+gitlab+nginx

gitlab:10.1.1.11

第一步:照例先Jenkins下载组件

cd /var/lib/jenkins/plugins/

https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/trilead-api/latest/trilead-api.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/structs/latest/structs.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/pipeline-stage-step/latest/pipeline-stage-step.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/script-security/latest/script-security.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/command-launcher/latest/command-launcher.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/credentials/latest/credentials.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/apache-httpcomponents-client-4-api/latest/apache-httpcomponents-client-4-api.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/ssh-credentials/latest/ssh-credentials.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/jsch/latest/jsch.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/git-client/latest/git-client.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/scm-api/latest/scm-api.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/display-url-api/latest/display-url-api.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/mailer/latest/mailer.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/git/latest/git.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/gitlab-plugin/latest/gitlab-plugin.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/gitlab-oauth/latest/gitlab-oauth.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/gitlab-api/latest/gitlab-api.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/publish-over-ssh/latest/publish-over-ssh.hpi

下完重启
systemctl restart jenkins
然后进入浏览器
http://Jenkins_server_IP:8080/pluginManager/available
搜索
Gitlab Authentication 安装它就把上面插件一块安了。

第二步:

基本思路还是两次使用公钥,两次使用私钥。
1.jenkins机器向gitlab传递公钥。(未完成)
2.jenkins向nginx传送公钥。(上面已完成)
3.jenkins向jenkins网页端传送两次私钥。(上面已完成)

首先进行gitlab免密,过程略。

第三步:jenkins私钥配置

在 http://Jenkins_server_IP:8080/configure 里,向下拉。

如果Publish over SSH插件安装成功,则你能看到一个Publish over SSH表单。

将前面与github互连公钥的那份私钥复制进key输入框。

点击add按钮。又弹出4条输入框。这里填写nginx(或web服务)相关信息

Name    自定义一个服务器名字
Hostname    web服务器IP
Username    web服务器使用用户,默认root
Remote Directory    默认填'/'

第四步:将jenkins服务器与nginx服务器做免密登陆

# ssh-copy-id -i nginx服务器IP
# ssh-copy-id -i 10.1.1.28

然后点击Test Configuration。
提示Success,视为成功
点击save

然后进入,点击凭证,jenkins,全局凭证,Add Credentials
http://Jenkins_server_IP:8080/credentials/store/system/domain/_/newCredentials

kind 选 SSH Username with private key
Username 填 root
Private Key 选中 Enter directly
弹出key,点击add
复制私钥进入。
其余不填

点击 确定/OK 

第五步:创建一个新任务。

回到主页
http://Jenkins_server_IP:8080/

点击 create new jobs
Enter an item name 输入一个名字
选择 Freestyle project
点击 确认/OK

Description 填写点描述
Source Code Management 选择gitlab
    Repository URL	填写gitlab的URL
    Credentials 选择root
    Branch Specifier (blank for 'any') 填写分支名,默认master不动
Build 选择Send files or execute commands over SSH
    Source files 一般填写 **/** 表示gitlab中所有文件
    Remote directory 填写nginx项目目录,例如/usr/local/nginx/html

其余不填,点击save

第六步:build一下,没有报错就能成功了。 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值