• Jenkins学习笔记3


    git+github+jenkins:

    架构图

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

    maven java的项目构建工具。

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

     

    1. [root@git-developer ~]# git clone git@github.com:changchunhua2017/jenkins.git
    2. Cloning into 'jenkins'...
    3. remote: Enumerating objects: 3, done.
    4. remote: Counting objects: 100% (3/3), done.
    5. remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
    6. Receiving objects: 100% (3/3), done.
    7. [root@git-developer ~]#
    8. [root@git-developer ~]#
    9. [root@git-developer ~]#
    10. [root@git-developer ~]# ll
    11. total 4
    12. -rw-------. 1 root root 1518 Sep 2 02:39 anaconda-ks.cfg
    13. drwxr-xr-x 3 root root 35 Sep 20 15:27 jenkins
    1. [root@git-developer jenkins]# git config --global user.name "changchunhua"
    2. [root@git-developer jenkins]# git config --global user.email "chang_chunhua@qq.com"
    3. [root@git-developer jenkins]# git config --global color.ui true
    4. [root@git-developer jenkins]# echo 11111 > 1.php
    5. [root@git-developer jenkins]# ll
    6. total 8
    7. -rw-r--r-- 1 root root 6 Sep 20 15:50 1.php
    8. -rw-r--r-- 1 root root 35 Sep 20 15:27 README.md
    9. [root@git-developer jenkins]# git add *
    10. [root@git-developer jenkins]# git commit -m "Added 1.php"
    11. [main cdc0119] Added 1.php
    12. 1 file changed, 1 insertion(+)
    13. create mode 100644 1.php

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

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

    Nginx服务器的准备:

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

    1. [root@nginx ~]# yum install epel-release
    2. [root@nginx ~]# yum install nginx -y
    3. [root@nginx ~]# systemctl start nginx
    4. [root@nginx ~]# systemctl enable nginx

    jenkins安装插件:

    jenkins图形安装publish over ssh插件:

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

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

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

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

    [root@localhost soft]# ssh-keygen

    2)查看并复制私钥:

    1. [root@localhost .ssh]# cat id_rsa
    2. -----BEGIN RSA PRIVATE KEY-----
    3. MIIEpAIBAAKCAQEAqbt2nAw4gB3/3HGa06WZGfZZkccGXdp2dCZX3Vm6MH0zPaOA
    4. egxf+VplgtIMYuXScy1d/4De02p5UTBBRP2Xyw+sXcfneikrffY7JGHY5stmYCR0
    5. V9fNLnWZaoUpBn3DWXH4Cz4QeJCmXMU5hQ0guL3AX4IBQOTOVEiMMVOO8/Ae/BI8
    6. qO7jZAINalrfxTZ+DpOvmOwbOAn0Zj7mt4cOBsX67mmHm2Ci1/5eeEZzJEcCR/xp
    7. bBSnh5XXIMcfHD9d0SmWyyrgEm4JWngEFQVzauDvYWJfNqFcHuLp4nx6Jm+5QBZj
    8. GqEF9TCevUzs5n2OHsGu4cZoRQaFT8zazpgpGwIDAQABAoIBAH+/dqAwmn3jFmYm
    9. oy9U3gyqW/PaZjJRcQIusccJ95bzRJPJ8bLqiXm1zd1OlsAA1gqWRL8/kXZyFulC
    10. dn2kmJDfNQ5InTJWtkNSBmV1t7jNsjn+dgp/hBDJtjR0ENKv6U3y94wOpHr59Byy
    11. 3H4FyXECcD3yLVtYWusYx1uA1oFGKVdmYkA+7WS9tQjjR6Itvt1hsfzydGQdyL00
    12. 9NxXA6A4R1BreMDjAToPD1AbmmY+jDYIujZNlZl2+mUBWFCCsJGPMs5OPvi2T9ir
    13. 9OSPbC/8v8iZo7l2EbHGvFCtyUpKypuy57zI521KT7wxMDjRQ2KFrY2lqu6ZwXi+
    14. ANRC/VECgYEA1CKZ/LnPie0X8Sg0HrvHDrUsa38ODhpeXYzscSnbawXHkT/eF0e7
    15. rTbUF2wEfmKZGK0zb/+AK1bt9KxufWLKJDWBFkjf5e1IqKfc34UzoEHK2v6KEfLV
    16. 3S07QFoYaFF2onu4HnAfPxnn8JIYHwdkVVRPSgBq/SxND8hPRMZ9xpUCgYEAzNRC
    17. q59bZjEn3Jhi2eD6QtBCzfwN0AxAeXKlP8SvR79iAA1XJiZjoK9lAABrdncAU6SU
    18. LkX6Z/RDLef9gos9xReV1kU7k7tY4UdvMk1YUEh7C9txHQNjeQHoXByq5Ftpz2m2
    19. aDVgZ3wfRP8uI1xIdbYwqwKzkm9iAgTXWpWftO8CgYEAwp7UI7bdHy80Tf2Sg7fH
    20. EklJbX3tiSbL+Iv3yIKcWX298BZmTXl0R6ALyUlCfik7SBZvIIuKLTjdqyIfZE2k
    21. IsArpCRLtgiSJpmK3E66ZIa3816fkYP2jaqXt5xw1BQZAUz8SICZSi0cS+vc0WrY
    22. tChbbgsgHRHtyVL+1pw8fFkCgYEAnGd8XUZ66UahtI1b9hkXoAsc5+MOvQ2N8e68
    23. Bjxux295KqcFI+lua9ViXyTy6eumgTgLumXO9rAK2DPsXVFromMHFC2bd4w4KxV7
    24. 8EIlLHCcHIq9DbV3sH/naOavC15OJoYHNf2EFqEt02azWWbvIYs0EHEoo6mPghEm
    25. TFIyOFsCgYBwaSZ5bGqIQ+L+ZgJq1d6FkGzKvS8lrWQGNVds4Ne5iNrMUoeRe6O7
    26. hwsqypAdLhgbF8SgrXxYMOhHBrSMdnaqaAJl5V0H5ydC3rkX/UsGa1pCWsendpVq
    27. TZzTR0pdmNiNYTslQW9ILm9ZkWpaQmwGFFGpTmRqPuYUZHU+WByiGw==
    28. -----END RSA PRIVATE KEY-----

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

    3)在Jenkins中添加私钥:

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

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

    然后点击保存。

    还可以做一个测试。

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

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

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

    1. [root@localhost .ssh]# ssh-copy-id -i 192.168.17.121
    2. /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
    3. The authenticity of host '192.168.17.121 (192.168.17.121)' can't be established.
    4. ECDSA key fingerprint is SHA256:4dogA08L5gdfaA69BGekE13kzSuIP2vcRp9rsqYnpn0.
    5. ECDSA key fingerprint is MD5:93:34:b9:61:03:cd:00:92:b9:91:3d:b6:6c:7a:84:95.
    6. Are you sure you want to continue connecting (yes/no)? yes
    7. /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
    8. /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
    9. root@192.168.17.121's password:
    10. Number of key(s) added: 1
    11. Now try logging into the machine, with: "ssh '192.168.17.121'"
    12. 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的私钥。

    小结:

  • 相关阅读:
    微信如何实现自动转发朋友圈(跟圈)?
    如何实现单片机与手机的远距离通信
    基于matlab实现的多普勒脉冲雷达回波仿真
    DEMO详解示例——基础触控
    Redis-集群
    Linux知识点:系统目录结构的理解,环境变量的作用和添加,创建自己的共享库并使用,引用第三方库
    微服务-gateway鉴权
    教你如何制作浪漫的3D相册表白网站 HTML+CSS+JavaScript
    【Java每日一题】3.船只安排(贪心算法+双指针)
    Xshell 常用命令大全手册
  • 原文地址:https://blog.csdn.net/chang_chunhua/article/details/133073929