Jenkins学习笔记3

git+github+jenkins:

架构图:

说明:jenkins知道github有更新了,就pull进行构建build,编译、自动化测试。然后部署到应用服务器。

maven java的项目构建工具。

在开发者电脑上创建空密码密钥对。

bash 复制代码
[root@git-developer ~]# git clone git@github.com:changchunhua2017/jenkins.git
Cloning into 'jenkins'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
[root@git-developer ~]#
[root@git-developer ~]#
[root@git-developer ~]#
[root@git-developer ~]# ll
total 4
-rw-------. 1 root root 1518 Sep  2 02:39 anaconda-ks.cfg
drwxr-xr-x  3 root root   35 Sep 20 15:27 jenkins
bash 复制代码
[root@git-developer jenkins]# git config --global user.name "changchunhua"
[root@git-developer jenkins]# git config --global user.email "chang_chunhua@qq.com"
[root@git-developer jenkins]# git config --global color.ui true

[root@git-developer jenkins]# echo 11111 > 1.php
[root@git-developer jenkins]# ll
total 8
-rw-r--r-- 1 root root  6 Sep 20 15:50 1.php
-rw-r--r-- 1 root root 35 Sep 20 15:27 README.md

[root@git-developer jenkins]# git add *
[root@git-developer jenkins]# git commit -m "Added 1.php"
[main cdc0119] Added 1.php
 1 file changed, 1 insertion(+)
 create mode 100644 1.php

可以看到1.php文件上传成功:

那开发者这块是没有问题的。

Nginx服务器的准备:

在Nginx服务器上安装nginx,并启动nginx。

bash 复制代码
[root@nginx ~]# yum install epel-release
[root@nginx ~]# yum install nginx -y
[root@nginx ~]# systemctl start nginx
[root@nginx ~]# systemctl enable nginx

jenkins安装插件:

jenkins图形安装publish over ssh插件:

可以看到Publish Over SSH插件已经安装完成。

确认Git plugin插件已经安装完成。

配置Jenkins服务器通过Publish over ssh免密连接Nginx:

1)第1步: 在jenkins服务器上生成空密码密钥对:

bash 复制代码
[root@localhost soft]# ssh-keygen

2)查看并复制私钥:

bash 复制代码
[root@localhost .ssh]# cat id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAqbt2nAw4gB3/3HGa06WZGfZZkccGXdp2dCZX3Vm6MH0zPaOA
egxf+VplgtIMYuXScy1d/4De02p5UTBBRP2Xyw+sXcfneikrffY7JGHY5stmYCR0
V9fNLnWZaoUpBn3DWXH4Cz4QeJCmXMU5hQ0guL3AX4IBQOTOVEiMMVOO8/Ae/BI8
qO7jZAINalrfxTZ+DpOvmOwbOAn0Zj7mt4cOBsX67mmHm2Ci1/5eeEZzJEcCR/xp
bBSnh5XXIMcfHD9d0SmWyyrgEm4JWngEFQVzauDvYWJfNqFcHuLp4nx6Jm+5QBZj
GqEF9TCevUzs5n2OHsGu4cZoRQaFT8zazpgpGwIDAQABAoIBAH+/dqAwmn3jFmYm
oy9U3gyqW/PaZjJRcQIusccJ95bzRJPJ8bLqiXm1zd1OlsAA1gqWRL8/kXZyFulC
dn2kmJDfNQ5InTJWtkNSBmV1t7jNsjn+dgp/hBDJtjR0ENKv6U3y94wOpHr59Byy
3H4FyXECcD3yLVtYWusYx1uA1oFGKVdmYkA+7WS9tQjjR6Itvt1hsfzydGQdyL00
9NxXA6A4R1BreMDjAToPD1AbmmY+jDYIujZNlZl2+mUBWFCCsJGPMs5OPvi2T9ir
9OSPbC/8v8iZo7l2EbHGvFCtyUpKypuy57zI521KT7wxMDjRQ2KFrY2lqu6ZwXi+
ANRC/VECgYEA1CKZ/LnPie0X8Sg0HrvHDrUsa38ODhpeXYzscSnbawXHkT/eF0e7
rTbUF2wEfmKZGK0zb/+AK1bt9KxufWLKJDWBFkjf5e1IqKfc34UzoEHK2v6KEfLV
3S07QFoYaFF2onu4HnAfPxnn8JIYHwdkVVRPSgBq/SxND8hPRMZ9xpUCgYEAzNRC
q59bZjEn3Jhi2eD6QtBCzfwN0AxAeXKlP8SvR79iAA1XJiZjoK9lAABrdncAU6SU
LkX6Z/RDLef9gos9xReV1kU7k7tY4UdvMk1YUEh7C9txHQNjeQHoXByq5Ftpz2m2
aDVgZ3wfRP8uI1xIdbYwqwKzkm9iAgTXWpWftO8CgYEAwp7UI7bdHy80Tf2Sg7fH
EklJbX3tiSbL+Iv3yIKcWX298BZmTXl0R6ALyUlCfik7SBZvIIuKLTjdqyIfZE2k
IsArpCRLtgiSJpmK3E66ZIa3816fkYP2jaqXt5xw1BQZAUz8SICZSi0cS+vc0WrY
tChbbgsgHRHtyVL+1pw8fFkCgYEAnGd8XUZ66UahtI1b9hkXoAsc5+MOvQ2N8e68
Bjxux295KqcFI+lua9ViXyTy6eumgTgLumXO9rAK2DPsXVFromMHFC2bd4w4KxV7
8EIlLHCcHIq9DbV3sH/naOavC15OJoYHNf2EFqEt02azWWbvIYs0EHEoo6mPghEm
TFIyOFsCgYBwaSZ5bGqIQ+L+ZgJq1d6FkGzKvS8lrWQGNVds4Ne5iNrMUoeRe6O7
hwsqypAdLhgbF8SgrXxYMOhHBrSMdnaqaAJl5V0H5ydC3rkX/UsGa1pCWsendpVq
TZzTR0pdmNiNYTslQW9ILm9ZkWpaQmwGFFGpTmRqPuYUZHU+WByiGw==
-----END RSA PRIVATE KEY-----

这段私钥,只是代表这台服务器的root账户私人免密,并不能代表jenkins软件免密。

3)在Jenkins中添加私钥:

安装了插件,才有这个Publish over SSH。

还需要添加要连的服务器:

然后点击保存。

还可以做一个测试。

这样,就是配置jenkins软件的私钥。

私钥是解密,公钥是加密。

4)在jenkins服务器上配置对nginx服务器的免密登录。

bash 复制代码
[root@localhost .ssh]# ssh-copy-id -i 192.168.17.121
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.17.121 (192.168.17.121)' can't be established.
ECDSA key fingerprint is SHA256:4dogA08L5gdfaA69BGekE13kzSuIP2vcRp9rsqYnpn0.
ECDSA key fingerprint is MD5:93:34:b9:61:03:cd:00:92:b9:91:3d:b6:6c:7a:84:95.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.17.121's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '192.168.17.121'"
and check to make sure that only the key(s) you wanted were added.

把Jenkins的服务器的公钥给Github:

直接将id_rsa.pub内容配置到Github中。

jenkins连接Github,私钥连接公钥。

为Jenkins服务器添加凭据:

凭据是Jenkins给自己的构建项目授权用的。

我们本项目案例里jenkins是通过ssh免密去找github的项目仓库clone或pull项目代码。

在前面的配置里已经把jenkins服务器的公钥添加到了github仓库上, 在jenkins服务器上root用户使用git clone 项目地址都可以成功。

但是jenkins服务本身并不允许使用自己的私钥去访问github的公钥, 给个凭据, 让它能做就解决问题了

总结: ==凭据是一种和第三方程序(如github,gitlab等)通讯的权限授权。本案例的凭据就是允许使用ssh免密==

你可以把这个凭据在jenkins里授予给任何需要ssh免密通讯的构建项目。

在Jenkins里添加凭据:

之前私钥是连接Nginx的私钥,这个私钥配置是连接前面的Github的私钥。

小结:

相关推荐
heimeiyingwang1 天前
【CI/CD·Jenkins篇】环境搭建:从零部署 Jenkins 主从架构
ci/cd·jenkins
heimeiyingwang1 天前
【CI/CD·Jenkins篇】Pipeline 基础:Declarative 与 Scripted 语法详解
ci/cd·pipeline·jenkins
遨游DATA2 天前
Jenkins 修改 config.xml 后页面仍是旧配置:让 live job 配置真正生效
ci/cd·jenkins·devops·故障排查·config.xml
Dobby_052 天前
【CICD】Jenkins Pipeline 快速学习入门
运维·学习·jenkins
上海安当技术3 天前
统一身份认证平台怎么落地?11 个异构业务系统接入 ASP 的完整实施路径
数据库·servlet·架构·kubernetes·jenkins
回眸不遇4 天前
Elasticsearch嵌套类型nested使用指南
大数据·elasticsearch·jenkins
回眸不遇5 天前
类型的区别和应用场景 nested 每个对象独立存储为隐藏的子文档 适合存储数组 查询的时候有特定的语法 nested查询 且字段要 ...
运维·jenkins
X1A0RAN6 天前
容器化部署 Jenkins 教程
运维·docker·jenkins
BullSmall6 天前
jenkins 全局工具变更后,构建的任务为什么没有刷新过来
运维·jenkins
BullSmall6 天前
报错 libatomic.so.1: No such file or directory
jenkins