美文网首页
[持续集成] 使用 ansible + jenkins + gi

[持续集成] 使用 ansible + jenkins + gi

作者: w_w_wei | 来源:发表于2019-02-14 17:10 被阅读0次

需要实现的需求很简单,写了一个项目, 主要开发语言php, 想要自动推送到自己nas服务器
使用Gitee来管理代码, 没有架设 gitlab 主要是有点耗内存。

整个流程很简单,Gitee在接收到代码推送后,通过Webhook,可以通知到Jenkins,Jenkins拉去代码,并根据代码中的ansible配置,在编译步骤执行 ansible命令进行远程部署。

为了简单使用docker搭建的 ansible+jenkins, 由于想使用 ssh 账号密码登录, 需要sshpass,所以自己弄了一个镜像 docker push ctwj/jenkins-ansible

正式开始配置

1. docker 容器创建

Docker 这里以威联通的ContainerStation为例



两个文件夹留空就行了, 默认配置文件没有的话,
https://github.com/ctwj/jenkins-ansible
在项目中下载默认配置文件。

上面所有步骤用命令行,其实就一个命令:

docker run -d -p 8080:8080 -p 50000:50000 -v /your/home/jenkins:/var/jenkins_home -v /you/ansible:/etc/ansible ctwj/jenkins-ansible

创建成功后, 访问 http://ip:18080


登录进入容器, 查看文件initialAdminPassword
jenkins@338e61346d48:/$ cat /var/jenkins_home/secrets/initialAdminPassword                                                                                                                                   
6b75287bb5224c07834f993d6a61ea5b                                                                                                                                                                             
jenkins@338e61346d48:/$  

输入密码并继续



选择安装推荐的插件



创建管理员



使用配置的管理员账号密码登录

2. 配置

  1. jenkins 配置 gitee 插件



    安装完成后,在系统配置中进行配置



    在证书令牌那添加一个证书令牌,其中私人令牌登录Gitee获取


    Gitee插件配置完成。

  2. jenkins 添加gitee项目,配置gitee webhook,使得代码更新通知jenkins
    回到首页,创建一个新任务



    General 页

    源码管理页,添加一个账号密码



    构建触发器页

    这里生产一个 WebHook 密码, 需要在Gitee 配置

    具体配置细节参考
    https://gitee.com/help/articles/4193#article-header9
  3. jenkins 项目的build配置, 使得编译完成后自动部署



    其中命令是根据ansible命令和代码中ansible配置来的。

ansible-playbook -i  ./playbooks/inventory/dev  ./playbooks/deploy.yml

其中 -i 参数指定hosts,其中定义了部署的服务器

  1. ssh免密登陆配置

进入容器配置
参考:
https://www.jianshu.com/p/e4ac067f5649

  1. 代码中的 ansible 配置
# deploy.yml
- hosts: "bot"
  gather_facts: true
  remote_user: admin
  roles:
    - bot

指定 ansible hosts 为 bot



其中 playbooks/inventory/dev 指定bot, 通过build配置中-i参数指定该文件。



在 tasks 中指定部署动作

3. 最终效果

推送代码

D:\workspace_ued\TelegramPostBot (master -> origin)
λ git push origin master
Counting objects: 10, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (10/10), done.
Writing objects: 100% (10/10), 1010 bytes | 1010.00 KiB/s, done.
Total 10 (delta 4), reused 0 (delta 0)
remote: Powered By Gitee.com
To https://gitee.com/ctwj/TelegramPostBot.git
   fe36da1..6540605  master -> master

jenkins 自动收到 webhooks 消息


可以看到 由Gitee 自动 push过来的


进入第二次构建,查看输出


总结

最终实现了推送代码, 自动部署的功能, 对以后也是一种劳动力的解放,不需要登录服务器手动部署了。

相关文章

网友评论

      本文标题:[持续集成] 使用 ansible + jenkins + gi

      本文链接:https://www.haomeiwen.com/subject/kggreqtx.html