zoukankan      html  css  js  c++  java
  • 使用Docker+Jenkins自动构建部署

    环境

    Windows 10 

    Docker Version 18.06.1-ce-win73 (19507)

    运行jenkins

     运行jenkins 容器

    docker run -d --name lnmp-jenkins --user root -p 8080:8080 -p 50000:50000 jenkins/jenkins:2.165

    1、请使用 root 账户运行,否则使用默认jenkins账户运行的时间将会有问题。

    2、由于是Windows 环境,所以这里不建议挂在数据卷。否则将会有一些插件安装不成功的问题出现。如果非要挂在请求使用 Kitematic.exe  

    3、方便区分,请给容器给个名字

    设置账户

    通过http://you_host:8080登陆查看

    在Getting Started界面会需要初始的密码Unlock Jenkins。密码会在输出终端,也可根据页面提示到容器的jenkins_home中查找

    查看密码请进入容器内查看

    docker exec -it lnmp-jenkins bash
    
    密码文件路径
    root@52c33b1a61ba:/var/jenkins_home/secrets# 

    有了密码,输入后安装建议的插件。完毕后,根据提示设置登陆账户。

    安装Publish Over SSH插件

    首页 -> 点击系统管理 -> 管理插件 ->可选插件 -> 过滤:ssh -> 选择Publish Over SSH插件,点击直接安装。 

    设置服务器SSH信息

    首先在容器中生成rsa密钥:

    # 从宿主机客户进入容器,目前容器名lnmp-jenkins,也可通过docker ps 查看
    $ docker exec -it lnmp-jenkins /bin/bash
    # 进入容器后建立.ssh目录,创建密钥文件私钥id_rsa,公钥id_rsa.pub
    ~ mkdir ~/.ssh && cd ~/.ssh
    ~ ssh-keygen -t rsa
    # 一直回车即可
    

     

    添加公钥到宿主机
    将id_rsa.pub中字符串添加到authorized_keys文件末尾,重启ssh服务sudo service ssh restart
    注意宿主机是否开启ssh服务。
    可以在容器终端中使用下面的命令添加到宿主机中。也可手动复制id_rsa.pub到宿主机的.ssh/authorized_keys文件中。

    ssh-copy-id -i ~/.ssh/id_rsa.pub <username>@<host>
    

    这里会要求我们输入远程服务器的密码。

    修改服务器的ssh配置文件

    ssh-server配置文件位于:/etc/ssh/sshd_config中,需要设置ssh-server允许使用私钥/公钥对的方式登录,打开配置文件:

    vim /etc/ssh/sshd_config
    

    增加设置:

    RSAAuthentication yes
    PubkeyAuthentication yes
    

    然后重启ssh-server:

    sudo /etc/init.d/ssh restart
    

    设置完成之后就可以使用命令ssh <username>@<host>直接登录服务器了,不需要再输入密码了。

     

    项目配置

    首先,新建一个任务。填写项目名称。 选择源码管理为:Git,填写项目库的URL。私有项目需要添加Git账号。

    构建环境:选择Send files or execute commands over SSH after the build runs,选择服务器,以及添加Exec command。保存。

    添加私钥
    jenkins首页,系统管理 -> 系统设置 -> 下拉,找到Publish over SSH,填写Key 和 SSH Server -> 保存

     

    高级选项能够配置ssh服务器端口和超时。Test可测试,显示success配置成功。

     

    配置webhook

    配置webhook,实现自动部署
    获取API tonken:首页 -> 用户 -> 选择当前的用户 -> 设置 -> 在API Tonken 项中点击Show API Token...

    http://jenkins.tinywan.top/buildWithParameters?token=11216ee77000c52461ad16e5c4502427bb&cause=Cause+Text
    
    http://jenkins.tinywan.top/job/Python%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/build?token=11216ee77000c52461ad16e5c4502427bb&cause=Cause+Text
    

     添加令牌:返回首页 -> 项目 -> 配置 -> 构建触发器 -> 选择 "触发远程构建" ->粘贴"API Token"内容到"身份验证令牌"

     注意:这里的身份验证令牌是随意生成的。不是非必须后台生成的token api

      

     测试结果

    修改本地代码然后提交、Jenkins自动构建部署

    查看构建日志记录

    控制台输出
    Started by remote host 192.30.252.37 with note: Cause Text
    Building in workspace /var/jenkins_home/workspace/Python自动化测试
    No credentials specified
     > git rev-parse --is-inside-work-tree # timeout=10
    Fetching changes from the remote Git repository
     > git config remote.origin.url https://github.com/Tinywan/t_log.git # timeout=10
    Fetching upstream changes from https://github.com/Tinywan/t_log.git
     > git --version # timeout=10
     > git fetch --tags --progress https://github.com/Tinywan/t_log.git +refs/heads/*:refs/remotes/origin/*
     > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
     > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
    Checking out Revision 34f8b6beaf5ebc8f400e2da3432fd798c64acc83 (refs/remotes/origin/master)
     > git config core.sparsecheckout # timeout=10
     > git checkout -f 34f8b6beaf5ebc8f400e2da3432fd798c64acc83
    Commit message: "使用Docker+Jenkins自动构建部署【Python自动化测试】"
     > git rev-list --no-walk fd1c8499da56077ce84accfd3d0b1843c859398a # timeout=10
    SSH: Connecting from host [52c33b1a61ba]
    SSH: Connecting with configuration [www.tinywan.com] ...
    SSH: EXEC: STDOUT/STDERR from command [pwd
    cd /home/www/data/t_log
    echo "jenkins before" >> jenkins.log
    git pull 
    echo "jenkins after" >> jenkins.log] ...
    /home/www
    From https://github.com/Tinywan/t_log
       fd1c849..34f8b6b  master     -> origin/master
    Updating fd1c849..34f8b6b
    Fast-forward
     README.md | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    SSH: EXEC: completed after 4,005 ms
    SSH: Disconnecting configuration [www.tinywan.com] ...
    SSH: Transferred 0 file(s)
    Finished: SUCCESS

     

    参考

    1、使用ssh免密码登录Linux服务器

    2、Docker+Jenkins自动构建部署

    3、SpringBoot+Docker+Git+Jenkins实现简易的持续集成和持续部署

    4、JENKINS针对不同项目组对用户进行权限分配

  • 相关阅读:
    页面高度自适应方法(PC、移动端都适用)
    Axure 文本框去掉边框 富文本 粘贴文字图标
    Axure 文本框去掉边框 富文本 粘贴文字图标
    mui switch 点击事件不冒泡
    使用vue-router+vuex进行导航守卫(转)
    Layui select下拉框改变之 change 监听事件(转)
    jQuery获取节点和子节点文本的方法
    动态规划(3)——算法导论(18)
    动态规划(2)——算法导论(17)
    Base64编码
  • 原文地址:https://www.cnblogs.com/tinywan/p/10425714.html
Copyright © 2011-2022 走看看