十. 安装Jenkins
1.1 安装前准备
1.1.1 安装Java
yum -y install java
但对于centos有个问题,不可以安装成gcj(例如:gij(GNU libgcj) version 4.4.6 20110731(Red Hat 4.4.6-3)),导致Jekins不工作,如果查看java版本类似如上例,需要卸载,安装其他版本
java -version #查看Java版本 yum remove java #卸载异常版本
1.1.2 防火墙设置
#配置Jenkins端口8080 firewall-cmd --zone=public --add-port=8080/tcp –permanent #开端口后必须重新加载 firewall-cmd --reload
1.1.3 其他
1.2 安装Jenkins
1.2.1 拉取库的配置到本地
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
1.2.2 导入公钥
sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
1.2.3 安装Jenkins
#`-y`参数:回答全部问题为是 sudo yum -y install jenkins
1.2.4 更新Jenkins
yum update jenkins
1.2.5 卸载Jenkins
rpm -e jenkins
删除其他相关文件
find / -iname jenkins | xargs -n 1000 rm -rf
1.2.6 Jenkins相关配置信息
1.2.6.1 系统配置文件
cat /etc/sysconfig/jenkins | more
可以获得几个重要配置项目信息
JENKINS_HOME="/var/lib/jenkins",存放jenkins 配置及工作文件
JENKINS_PORT="8080",jenkins默认8080端口
1.2.6.2 配置文件夹
ls /var/lib/jenkins
有jobs
、logs
、plugins
等文件夹及文件若干。
这次主要看了看plugins
文件夹,所有插件都在里面,如插件ssh-slaves
,会有一个ssh-slaves
文件夹及ssh-slaves.jpi
。
当某个插件未安装成功时,会有一个以.tmp
结尾的文件
1.2.6.3 日志
/var/lib/jenkins/logs
/var/log/jenkins/jenkins.log,记录了插件安装等日志,失败信息原因等很清晰
1.3 启动Jenkins及安装插件
1.3.1 启动服务
service jenkins start
1.3.2 浏览器访问:http://192.168.56.99:8080
1.3.3 获取管理员密码
vi /var/lib/jenkins/secrets/initialAdminPassword
1.3.4 安装插件
1.3.5 安装Git Parameter插件
- 系统管理-->插件管理-->可选插件-->搜索git parameter;
- 安装插件
1.3.6 其他
1.4 配置Nginx的反向代理
1.4.1 创建Nginx下Jenkins的配置文件
vi /usr/local/nginx/conf/conf.d/jenkins.conf
1.4.2 配置文件内容如下
upstream jenkins { keepalive 32; # keepalive connections server 127.0.0.1:8080; # jenkins ip and port } server { #注意这里,要把默认的那个default_server去掉,因为我们在下面要单独配置域名访问,所以这里不要留default_server,不然会报错。 listen 80; #这里写你想设置的域名,可以写多个,与名之间用空格隔开 server_name jenkins.domain.com; # Load configuration files for the default server block. location / { proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # Fix the "It appears that your reverse proxy set up is broken" error. proxy_pass http://127.0.0.1:8080; proxy_read_timeout 90; proxy_redirect http://127.0.0.1:8080 https://jenkins.domain.com; # Required for new HTTP-based CLI proxy_http_version 1.1; proxy_request_buffering off; # workaround for https://issues.jenkins-ci.org/browse/JENKINS-45651 add_header 'X-SSH-Endpoint' 'jenkins. domain.com:50022' always; } access_log /var/log/jenkins/access.log; error_log /var/log/jenkins/error.log; error_page 404 /404.html; location = /404.html { root /usr/local/nginx/html; } # redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/local/nginx/html; } }
1.4.3 重启Nginx
nginx -t
nginx -s reload
1.4.4 配置Jenkins访问路径:
访问Jenkins:http://jenkins.domain.com
进入系统管理-->系统设置-->Jenkins Location,设置URL为:http://jenkins.domain.com
1.5 Jenkins任务中Shell使用sudo
1.5.1 将jenkins用户添加至sudo用户组
usermod –a –G sudo Jenkins
1.5.2 编辑/etc/sudoers,授权jenkins不使用命名
visudo -f /etc/sudoers
添加jenkins用户添加至sudoers文件中的配置:
jenkins ALL=(ALL) NOPASSWD: ALL
jenkins ALL=NOPASSWD: /var/lib/jenkins/workspace/, /usr/sftpdata/web/
1.5.3 在Jenkins任务中执行sudo命令
sudo mkdir /usr/sftpdata/web/archives
1.5.4 相关资料
https://embeddedartistry.com/blog/2017/11/16/jenkins-running-steps-as-sudo
https://stackoverflow.com/questions/11880070/how-to-run-a-script-as-root-in-jenkins
https://github.com/skamayker/jenkins-sudo
1.6 修改Jenkins的启动用户
1.6.1 找到jenkins的配置文件
vi /etc/sysconfig/jenkins
1.6.2 修改配置文件中的默认登录用户
JENKINS_USER="admin"
1.6.3 修改相关文件或目录的权限
chown admin:admin file/chown -R admin:admin directory
#修改以下文件或目录的权限(上述命令中的参数:directory)
/var/lib/jenkins/
/var/log/jenkins/
/var/cache/jenkins/
/usr/lib/jenkins/jenkins.war
/etc/sysconfig/jenkins
1.6.4 重启jenkins
service Jenkins restart
1.7 使用Extended Choice Parameter带参数构建
1.7.1 按照插件-Extended Choice Parameter
1.7.2 配置任务时,使用插件设置参数
设置参数名为:Parm_Assemblys,设置其值为:Com.Common,Com.Framework,如下图设置
1.7.3 构建时,读取参数
执行Shell时,循环读取Parm_Assemblys参数,如下:
assemblys=$Param_Assemblys arr=(${assemblys//,/ }) for s in ${arr[@]} do echo $s done
1.7.4 执行结果
1.7.5 相关资料
https://wiki.jenkins.io/display/JENKINS/Extended+Choice+Parameter+plugin
1.8 相关问题
1.8.1 Failed to connect to repository: Error performing command: git.exe ls-remote -h https://github.com/szabbas/Sample-programs.git HEAD
解决方案:
- CentOS安装git,命令:sudo yum install -y git
- 在Jenkins中设置Git的执行路径为git(配置路径:Manage Jenkins -> Configure System -> Git -> Git Installations -> Path to Git executable)
1.9 相关资料
1.9.1 使用Docker安装Jenkins及将TFS项目进行持续集成/部署