占个位,持续补充。

一、使用Jenkins进行自动化部署

一直以来关于xx框架/中间件的技术博客有个奇怪的事情。这类文章特点大而全,重复率高,读者阅读完毕基本从安装到放弃。

作为一个使用者,我只是为了实现一个初步的功能慕名而来,踩得坑多了才希望寻求一些心得,结果搜索到的偏偏是些连作者自己都觉得云里雾里的东西。

这里,从目的出发,只谈我遇到的障碍与解决方式,构成一条完整的线。

【通过Jenkins实现不需要PC、不需要SSH的自动化部署】

1、首先yum安装。

wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

这里提一点,如果服务器连接国外站点的速度慢,考虑

(1)yum install jenkins --downloadonly,这样你的rpm包会在/var/cache/yum/x86_64/7/jenkins/packages下,复制到那台要安装的服务器上,yum localinstall jenkins-2.150.1-1.1.noarch.rpm即可。

(2)使用镜像下载,在http://mirrors.jenkins-ci.org/status.html查询。

2、参数配置

(1)Java位置

vi /etc/rc.d/init.d/jenkins
    candidates="
    ************
    ************
    /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/bin/java
    "
(2)Jenkins 端口号修改
  a. web界面端口号 
      vi /etc/sysconfig/jenkins
      JENKINS_PORT="8080" ---→  xxxx
  除了:6666-6669端口是IRC协议使用的缺省端口,存在安全风险,容易被木马等程序利用,应该是出于安全考虑,谷歌,火狐浏览器给屏蔽了。
  b. Jenkins运行脚本的用户
  JENKINS_USER默认值为Jenkins,注意你之前部署项目的脚本有没有给这个用户分配权限,为方便可考虑改为root。
3、启动和停止
  service jenkins start
    service jenkins stop
       service jenkins restart
       chkconfig jenkins on
    如果启动失败,查看日志/var/log/jenkins/jenkins.log
4、引导页
  引导页可以直接点右上角X跳过,这样登录时直接输入admin/初始密码(/var/lib/jenkins/secrets/initialAdminPassword)即可。
  如果不想跳过,suggested的插件一个都不要装,以后按需来,除非你确信自己网络状况很好。
  如果启动后兴奋乱改导致配置失败不好挽回,yum remove jenkins,删除/var/lib/jenkins,重新install,这样才会完全重置。
5、安全设置
  左上系统管理-系统设置-全局安全配置,启用安全,Security Realm选Jenkins专有用户数据库,Authorization选登录用户可以做任何事。
  CSRF Protection中Prevent Cross Site Request Forgery exploits前面的√去掉。
  如果修改失败Jenkins会报错(不安分的管家啊),在/var/lib/jenkins/config.xml中<useSecurity>true</useSecurity>改为false就可以设置了。
6、新建一个任务(构建),支持带token的url调用
  (1)我们的目的在于摆脱SSH登录服务器,通过远程url调用,这里假设你已经有了一个部署脚本,完成了git拉取代码并编译打包(maven)的工作,否则需要下载Jenkins的git、maven插件并配置。
  在Build这里选择执行shell,输入之前的部署脚本,并在开头添加

  #!/bin/bash -ilex (允许使用系统环境变量)参考https://blog.csdn.net/zzusimon/article/details/57080337
  #!/bin/sh -e (每条指令之后,都可以用$?去判断它的返回值,零就是正确执行,非零就是执行有误)

  最后,在你之前的部署脚本中加入export BUILD_ID=dontkillme,或者在Jenkins的节点管理中添加,以免Jenkins默认kill构建脚本中所启动的子进程。

  (2)Build Triggers
  Trigger builds remotely (e.g., from scripts)这里选中,填上一个token,这样就可以通过JENKINS_URL/job/构建名/build?token=TOKEN_NAME调用了(get方法即可)。
  注意,如果这里没有启用安全设置,所有人都可以通过/build随时构建你的项目。
7、查看构建结果和历史
  通过左上角Build History查看每一次构建状态信息,最右侧按钮查看console打印信息。
-------------------
待补充。
 

不安分的管家——Jenkins的更多相关文章

  1. 安全研究 | Jenkins 任意文件读取漏洞分析

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由云鼎实验室 发表于云+社区专栏 一.漏洞背景 漏洞编号:CVE-2018-1999002 漏洞等级:高危 Jenkins 7 月 18 ...

  2. Jenkins集群搭建

    Jenkins的目的是加快CI/CD的步伐,集群的搭建也不是必须的,当一台服务器的构建速度受到限制下,可以考虑使用主从并发构建,来加快构建速度.作为一款超级管家的角色,Jenkins的资料非常多,Je ...

  3. 从Docker 到Jenkins 到Ansible的部署经验

    从Docker 到Jenkins 到Ansible的部署经验 工作中,除了开发功能,还负责系统的部署工作.我从频繁的部署工作中,逐渐找到了一些偷懒的方法.从传统的Java -jar命令启动服务,到通过 ...

  4. Jenkins这种构建工具,一般都是内部使用,所以外部基本上不能访问

    类似于Jenkins这种构建工具,一般都是内部使用,所以外部基本上不能访问,也可以隔绝外部黑客的入侵等.直接暴露外部是非常不安全的,特别是没有什么安全验证,容易被别人入侵做一些非法的事情! 所以,希望 ...

  5. 使用jenkins+sonar进行代码扫描,并发送自定义邮件

    jenkins架构 1.一台机器作为jenkins master不进行构建操作,只负责调度其他slave节点执行任务 2.一台slave机器作为执行机器存放从gitlab上拉取的代码,使用sonar- ...

  6. 威胁快报|首爆,新披露Jenkins RCE漏洞成ImposterMiner挖矿木马新“跳板”

    简介 阿里云安全于近日捕获到一起使用Jenkins RCE漏洞进行攻击的挖矿事件.除挖矿外,攻击者还曾植入具有C&C功能的tsunami木马,也预留了反弹shell的功能,给用户带来极大安全隐 ...

  7. Jenkins 安装的HTML Publisher Plugin 插件无法展示ant生成的JunitReport报告

    最近在做基于jenkins ant  junit 的测试持续集成,单独ant junit生成的junitreport报告打开正常,使用Jenkins的HTML Publisher Plugin 插件无 ...

  8. Python-Jenkins API使用 —— 在后端代码中操控Jenkins

    最近在工作中需要用到在后台代码中触发Jenkins任务的构建,于是想到Jenkins是否有一些已经封装好的API类库提供,用于处理跟Jenkins相关的操作.下面就简单介绍下我的发现. Linux C ...

  9. 在centos7上安装Jenkins

    在centos7上安装Jenkins 安装 添加yum repos,然后安装 sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins ...

随机推荐

  1. uboot学习之uboot.bin的运行流程

    上篇博客:http://www.cnblogs.com/yeqluofwupheng/p/7347925.html 讲到uboot-spl的工作流程,接下来简述一下uboot.bin的工作流程,这对应 ...

  2. 品Spring:帝国的基石

    序 生活是一杯酒,有时需要麻醉自己,才能够暂时忘却痛苦与不快.生活是一杯茶,有时需要细细品味,才发现苦涩背后也会有甘甜. Spring是一杯酒,一眼望不到边的官方文档,着实让人难以下咽.Spring是 ...

  3. 接口测试时数据格式是json,如何将响应内容转换为字典解析

    import requests url = 'http://127.0.0.1:5050/index' def apiTestPost(url): datas = { 'a':'cisco3', 'b ...

  4. C# 时间戳的相关操作

    一般的 时间戳 格式分为两种 即 10位(秒)时间戳 与 13位(毫秒)时间戳 时间戳 类型也分为两种 即 本地时间戳 与 世界统一(UTC)时间戳 废话不多说,直接上代码: 一.时间戳获取方法 // ...

  5. 4款黑科技级别的宝藏APP,能够轻松满足你的多种需求,请低调收藏

    有没有这样几款软件,在你每次一换新手机的时候就会立刻重新安装下来,感觉自己已经完全离不开它们?今天就来给大家分享几个非常好用的APP. 一.小羊搜搜 在生活中人人都有自己的爱好,无论你是喜欢影视.小说 ...

  6. gcc编译命令总结

    一步到位编译:gcc hello.c -o hello 预处理 -E (.i) 编译 -S (.s) 汇编-c (.o) 连接-o 预处理 gcc -E hello.c -o hello.i -E:仅 ...

  7. 打印方案之web打印

    前言: 前一段时间在工作中,遇到需要通过打印实现对报表或者工作流清单等事情时,都需要运用到打印功能,那么 ,这个时候你会怎么处理? 在这里,我们可以通过最简单的方式实现web打印功能,简单易懂,方便快 ...

  8. 设计模式-Builder和Factory模式区别

    Builder和Factory模式区别 Builder模式结构: Factory模式一进一出,Builder模式是分步流水线作业.当你需要做一系列有序的工作或者按照一定的逻辑来完成创建一个对象时 Bu ...

  9. Spring 梳理 - JavaConfig实战(spring MVC)-原创

    目录结构 AppInitializer.java package com.jt; import org.springframework.web.servlet.support.AbstractAnno ...

  10. Hadoop点滴-初识MapReduce(1)

    分析气候数据,计算出每年全球最高气温(P25页) Map阶段:输入碎片数据,输出一系列“单键单值”键值对 内部处理,将一系列“单键单值”键值对转化成一系列“单键多值”键值对 Reduce阶段,输入“单 ...