安装

  • 参考:
  • 初始化安装插件的时候应该跳过(选择自定义然后什么都不装),后续更换国内镜像安装
  • 修改Jenkins插件下载地址:
    • 更新简体中文插件到1.0.10+(没装的话先装一下,搜Chinese)
    • 点击页面右下角(确保浏览器的语言为中文)的Jenkins中文社区
    • 点击使用按钮
    • 修改更新中心的地址为https://updates.jenkins-zh.cn/update-center.json(就在使用页面)
    • 在插件管理的高级页面,点击立即获取

image.png

基本使用

  • 启动:systemctl start jenkins
  • 配置文件:/etc/sysconfig/jenkins

    1. # 设置用户名和端口
    2. JENKINS_USER="root"
    3. JENKINS_PORT="8888"

    权限管理

  • 插件:Role-based Authorization Strategy

  • 装好之后到 Configure Global Security—-授权策略,选中插件提供的策略
  • 之后到Manage Jenkins—-Security—-manage and assign roles—-manage roles

    global roles:全局

    • 在其中可以创建角色,之后可以为用户分配该角色
    • 默认有一个admin的角色

    item roles:项目角色

    • 使用正则表达式表达角色能访问到的项目
    • 如”accident.*”表示该角色可以访问到路径为accident之后的项目

    node roles:节点角色(如果Jenkins做了主从,那么就可以使用这个选项)

  • 可以去Manage Jenkins—-security—-manage users新建角色,随后在Manage Jenkins—-Security—-manage and assign roles—-assign roles分配角色,可以给不同用户分配不同的角色

    • 分配角色时,需要先add一个用户,才能分配角色(有点奇怪)

      凭证管理

      管理数据库密码、gitlab密码等

  • 插件:Credentials Binding

  • 装好后到Manage Jenkins—-Security—-Manage Credentials 管理凭证,点击全局即可添加不同类型的凭证
  • 凭证的一些类型:

    • Username with password:账户密码,比如说gitlab的
    • SSH Username with private key:SSH秘钥
      • 使用ssh-keygen -t rsa生成秘钥,把公钥(rsa.pub)放到gitlab上,私钥(rsa)放到jenkins里
      • 存放到jenkins时,用户名应该选择生成秘钥的用户名,并且选中private key选项然后把私钥帖进去

        持续集成

  • 默认的工作目录:/var/lib/jenkins/workspace

  • 配置:
    • git(Jenkins要装插件,宿主机要装软件)
    • jdk:
      • 在Global Tool Configuration中配置
      • 新增jdk,把本地jdk的安装目录放进去(去掉install automatic勾选)
    • maven:同jdk
      • 一定要重新maven镜像源!
    • 为jenkins添加全局变量:
      • 在Configure System—-全局属性—-environment variable中添加键值对
      • 键:JAVA_HOME 值:/usr/local/java/jdk1.8.0_251
      • 键:M2_HOME 值:/usr/local/maven/apache-maven-3.5.2
      • 键:PATH+EXTRA 值:$M2_HOME/bin
        • 表示在原有命令中追加maven的命令
  • 如果需要发布到远程的tomcat服务器,需要配置tomcat的登录账号(详见:https://www.yuque.com/mrwemmick/gzlept/aboii0

    构建maven项目

    使用自由风格

  1. 拉取代码:选中freestyle创建项目后,在源码管理中选中git,填写远程仓库的地址以及凭证(如果事先配置了,可以使用事先配置的,如果没有,可以临时填)

image.png

  1. 编译打包:

    1. 构建-添加构建步骤-execute shell
    2. 构建的命令:
      1. echo '-------------开始构建--------------'
      2. mvn clean install
      3. echo '-------------结束构建--------------'
      image.png
  2. 本地部署:把项目部署到jenkins所在的服务器上

    1. 思路就是构建成功后运行项目
    2. 增加构建的命令:
      1. echo '-------------开始构建--------------'
      2. mvn clean install
      3. echo '-------------结束构建--------------'
      4. # 此处应该填写maven打包后的jar包名称,我的是jenkins-0.0.1-SNAPSHOT.jar
      5. ps -ef | grep "jenkins-0.0.1-SNAPSHOT.jar" | grep -v grep | awk '{print $2}'|while read pid
      6. do
      7. kill $pid;
      8. done
      9. # 指定BUILD_ID使得该进程不会在构建结束后被杀死
      10. # 默认在当前目录输出日志,如果对日志输出有要求,请自行研究nohup命令输出日志的方式
      11. BUILD_ID=dontKillMe nohup java -jar target/jenkins-0.0.1-SNAPSHOT.jar &
  3. 远程部署:(jenkins和项目部署的服务器不在同一台机器上)

    1. 安装插件 Send build artifacts over SSH
      1. 该插件的思路为将构建后的项目通过SSH发送给目标服务器,随后在目标服务器中使用脚本运行项目
    2. 在system_config中配置服务器信息(可以选择使用密码,或者是key,使用key可以参考SSH的配置
      1. remote directory为上传至服务器中的路径
    3. image.png
    4. 在项目中可以使用预先配置好的服务器信息
      1. 此处的source files表示构建好的项目所在的目录,默认为jenkins的工作目录
      2. 插件会先把文件上载至服务器,再运行Exec command中的脚本
      3. 如果需要输出脚本的运行信息,可以在Server菜单的高级选项中选中Verbose output in console
    5. image.png

      其他注意事项

      在windows中使用jenkins

  • 如果选则的是execute window batch command,则只能运行dos命令,比如copy、move,而mv、cp这种命令是不被支持的

    配置nginx反向代理

    ``` server {
    1. listen 80;
    2. server_name localhost;
  1. location / {
  2. proxy_pass http://127.0.0.1:8080;
  3. proxy_redirect off;
  4. proxy_set_header Host $host;
  5. proxy_set_header X-Real-IP $remote_addr;
  6. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  7. proxy_set_header X-Forwarded-Proto $scheme;
  8. }

} ```