Jenkins 学习使用实践

Jenkins 学习使用实践Jenkins 学习使用实践

大家好,又见面了,我是你们的朋友全栈君。

前言

Jenkins就不用做多余的介绍了,作为CI/CD首选的开源解决方案,持续集成 (Continous Intergration)/ 持续交付 (Continous Delievery),本文只是用于记录使用Jenkins的一些基本操作,Jenkins官方文档也率先支持中文,相信对大家的学习热情会有积极地促进作用。

Jenkins学习使用实践

更新历史

2019年02月12日 – 初稿

阅读原文 – https://wsgzao.github.io/post…

扩展阅读

Jenkins – https://jenkins.io/zh/


Jenkins简介

构建伟大,无所不能

Jenkins 是开源 CI&CD 软件领导者, 提供超过 1000 个插件来支持构建、部署、自动化,满足任何项目的需要。

Jenkins 用户手册 – https://jenkins.io/zh/doc/

Jenkins 训练营之基础篇 – https://ke.qq.com/course/265167
Jenkins 训练营之带你玩转 Pipeline – https://ke.qq.com/course/252785

https://ke.qq.com/webcourse/i…

https://ke.qq.com/webcourse/i…

Jenkins安装

Jenkins 项目产生两个发行线,长期支持版本 (LTS) 和每周更新版本。 根据你的组织需求,一个可能比另一个更受欢迎。
两个版本都以 .war 文件,原生包,安装程序,和 Docker 容器的形式分发。
https://jenkins.io/zh/download/

这里推荐下载使用LTS长期支持版本,以 CentOS 7 作为演示环境

# Java 8
yum install java

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

# start jenkins
service jenkins start

# 初始化配置向导
http://192.168.56.103:8080/

cat /var/lib/jenkins/secrets/initialAdminPassword
5224fc83b6d84cc2be69a18c53309ea4

Install suggested plugins

是否创建管理员账户或者跳过

Jenkins入门

主要的Job类型

Freestyle project
自由风格项目,Jenkins最主要的项目类型

Maven Project
Maven项目专用,类似 Freestyle,更简单

Multi-configuration project
多配置项目,适合需要大量不同配置(环境,平台等)构建

Pipeline
流水线项目,适合使用pipeline(workflow)插件功能构建流水线任务,或者使用Freestyle project不容易实现的复杂任务

Multibranch Pipeline
多分支流水线项目,根据SCM仓库中的分支创建多个Pipeline项目

Freestyle 项目

General
项目基本配置
项目名字,描述,参数,禁用项目,并发构建,限制构建默认node等等

Source code Management
代码库信息,支持Git,Subversion等

Build Triggers
构建触发方式
周期性构建,Poll SCM,远程脚本触发构建,其他项目构建结束后触发等

Build Environment
构建环境相关设置
构建前删除workspace,向Console 输出添加时间戳,设置构建名称,插入环境变量等

Build
项目构建任务
添加 1个或者多个构建步骤

Post-build Actions
构建后行为
Artifact 归档,邮件通知,发布单元测试报告,触发下游项目等等

规范项目必要配置

本规范尤其适用于较多项目共用同一Jenkins的场景

  • 项目命名规范
  • 设置项目描述
  • 设置历史构建清理规则
  • 设置构建节点Label
  • 邮件通知

常用插件

注意Jenkins备份策略,建议结合rsync备份远端

Jenkins定时的备份:ThinBackup
邮件发送插件: Email Extension Plugin
空间清理扩展插件: Distributed Workspace Clean plugin

Jenkins常用插件 – https://vwin.github.io/2019/0…

创建第一个Job

安装Timestamper插件
系统管理-插件管理-可用插件,搜索到timestamper点击Install without restart

新建一个Freestyle类型的Job

  • General 项目名称: My-first-freestyle-demo
  • Build Environment 构建环境:勾选 Add timestamps to the Console Output
  • Build 构建:屏幕打印出 “这是我的第一个Jenkins Job, oops “
  • Post-build Actions 构建后操作:无
  • 点击立刻构建
  • 找到控制台输出
Console Output
14:40:59 Started by user admin
14:40:59 Building in workspace /var/lib/jenkins/workspace/My-first-freestyle-demo
14:41:00 [My-first-freestyle-demo] $ /bin/sh -xe /tmp/jenkins3737737887278720679.sh
14:41:00 + echo '这是我的第一个Jenkins Job, oops '
14:41:00 这是我的第一个Jenkins Job, oops 
14:41:00 Finished: SUCCESS

Jenkins Pipeline介绍

Pipeline,简而言之,就是一套运行于Jenkins上的工作流框架,将原本独立 运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化。

Pipeline 是Jenkins2.X最核心的特性,帮助Jenkins实现从CI到CD与DevOps的转变

什么是Jenkins Pipeline?

Jenkins Pipeline是一组插件,让Jenkins可以实现持续交付管道的落地和实施。持续交付管道(CD Pipeline)是将软件从版本控制阶段到交付给用户或客户的完 整过程的自动化表现。软件的每一次更改(提交到源代码管理系统)都要经过一个复杂的过程才能被发布。

Pipeline提供了一组可扩展的工具,通过Pipeline Domain Specific Language(DSL) syntax可以达到Pipeline as Code的目的

Pipeline as Code:Jenkinsfile 存储在项目的源代码库

Jenkins Pipeline核心概念

Stage
– 阶段,一个Pipeline可以划分为若干个Stage,每个Stage代表一组操作,例如: “Build”, “Test”, “Deploy” 。
– 注意,Stage是一个逻辑分组的概念,可以跨多个Node。

Node
– 节点,一个Node就是一个Jenkins节点,或者是Master,或者是Agent,是执行Step的具体 运行环境。

Step
– 步骤,Step是最基本的操作单元,小到创建一个目录,大到构建一个Docker镜像,由各类 Jenkins Plugin提供,例如: sh ‘make’

为什么要用Pipeline?

  • 代码:Pipeline以代码的形式实现,通常被检入源代码控制,使团队能够编辑,审查和迭代其CD流程。
  • 可持续性:Jenkins重启或者中断后都不会影响Pipeline Job。
  • 停顿:Pipeline可以选择停止并等待人工输入或批准,然后再继续Pipeline运行。
  • 多功能:Pipeline支持现实世界的复杂CD要求,包括fork/join子进程,循环和 并行执行工作的能力。
  • 可扩展:Pipeline插件支持其DSL的自定义扩展以及与其他插件集成的多个选项。

Pipeline和Freestyle的区别

Freestyle:
– 上游 / 下游Job调度,如 BuildJob ->TestJob -> DeployJob
– 在DSL Job里面调度多个子Job(利用Build Flow plugin)

Pipeline:
– 单个Job中完成所有的任务编排
– 全局视图

Pipeline 会取代Freestyle么?

  • Pipeline一定会取代Build Flow插件
  • 会,当你希望做到Pipeline as code的时候
  • 会,当你独立运行一组Job没有特殊价值或者意义的时候
  • 会,当你可以从Multibranch Pipeline受益的时候
  • 会,当你希望获取类似于TravisCI风格的工作流的时候

Jenkins Pipeline入门

Pipeline脚本是由Groovy语言实现
– 无需专门学习Groovy

Pipeline支持两种语法
– Declarative 声明式(在Pipeline plugin 2.5中引入)
– Scripted Pipeline 脚本式

如何创建基本的Pipeline
– 直接在Jenkins Web UI 网页界面中输入脚本
– 通过创建一个Jenkinsfile可以检入项目的源代码管理库

最佳实践
– 通常推荐在 Jenkins中直接从源代码控制(SCM)中载入Jenkinsfile Pipeline

快速创建一个简单的 Pipeline

  1. 新建Job: Jenkins -> 新建 -> 输入 Job名称: “My-first-pipeline-demo” -> 选择 Pipeline -> 点击 “OK”
  2. 配置: 在Pipeline -> Script 文本输入框中输入下列语句,点击 ”保存”
  3. 立即构建
pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'Build'
            }
        }
        stage('Test') {
            steps {
                echo 'Test'
            }
        }
        stage('Deploy') {
            steps {
                echo 'Deploy'
            }
        }
    }
}

Jenkins忘记密码怎么办

如果权限设置错误,或者忘记密码,导致admin自己都无法登陆Jenkins怎么办?

  • 命令行停止Jenkins;
  • 先备份$JENKINS_HOME中的config.xml;
  • 用编辑器打开$JENKINS_HOME中的config.xml;
  • 将<useSecurity>true</useSecurity>元素中的true改为false;
  • 将<authorizationStrategy>和<securityRealm>元素的内容删掉;
  • 命令行启动Jenkins。

Ansible Jenkins API Token 使用技巧

Jenkins REST API 提供了 API token,使得可以在程序中使用 API token 进行认证(而不是使用你真实的密码)。

API token 可以在用户个人设置界面查看
到用户→用户 id→设置页面,在 API Token 区域点击 Show API token 按钮,便可查看 API token,同时还可以更改 API token
相应的 URL 是
http://&lt;JENKINS_URL>/user/<userid>/configure

Manage Jenkins jobs by using Jenkins REST API

jenkins_job_facts – Get facts about Jenkins jobs
https://docs.ansible.com/ansi…

jenkins_job – Manage jenkins jobs
https://docs.ansible.com/ansi…

# python-jenkins package
pip install python-jenkins

# ansble playbook example
---
- hosts: all
  gather_facts: no

  tasks:
    - name: Get host info
      local_action:
        module: jenkins_job_facts
        url: https://xxx
        user: xxx
        token: xxx
        glob: '*mh_kg*'
      register: my_jenkins_job_facts

    - debug:
        msg: "{
   
   {my_jenkins_job_facts}}"

参考内容

官方手册永远是你的最佳参考内容

Jenkins 用户手册 – https://jenkins.io/zh/doc/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/107010.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • python多行注释快捷键用不了_jupyter多行注释快捷键

    python多行注释快捷键用不了_jupyter多行注释快捷键在编写Python程代码时,有时需要将部分代码注释掉,而如果我们一行一行的进行注释,显然是非常麻烦,不够方便。那么我们想要把多行代码程序快速注释掉,有没有什么快捷键可以实现多行注释吗?《Python快乐编程》千锋教育告诉你具体方法。当然是有的,并且有三种方式实现。一、我们可以通过快捷键:Ctr+/来实现。注意:我们在操作此快捷键前需要首先选中准备要注释的代码!单行和多行的注释是一样的…

  • Java之数组转集合&集合转数组[通俗易懂]

    Java之数组转集合&集合转数组[通俗易懂]一、数组转换为集合需要注意的是,转换只能转换为List集合。那么为什么不能转换为Set集合呢?原因是:Set不能存放重复元素,所以若转换为Set集合可能出现丢失元素的情况。。。数组转换为集合使用的是数组的工具类Arrays的静态方法asList。查看API文档可知该方法返回由指定数组支持的固定大小的列表。eg:importjava.util.Arrays;importjava.u…

  • 一年成为Emacs高手(像神一样使用编辑器)

    一年成为Emacs高手(像神一样使用编辑器)

    2021年11月14日
  • ubuntu下deb包安装方法_ubuntu安装下载文件

    ubuntu下deb包安装方法_ubuntu安装下载文件deb包是Debian,Ubuntu等Linux发行版的软件安装包,扩展名为.deb,是类似于rpm的软件包,Debian,Ubuntu系统不推荐使用deb软件包,因为要解决软件包依赖问题,安装也比较麻烦。如果Ubuntu要安装新软件,已有deb安装包(例如:linuxidc.deb),但是无法登录到桌面环境。那该怎么安装?答案是:使用dpkg命令。dpkg是Debianlinuxidc的简写,是为Debian专门开发的套件管理系统,方便软件的安装、更新及移除。所有源自Debian的Linux发行

    2022年10月20日
  • navicate 15 激活码【2021.8最新】[通俗易懂]

    (navicate 15 激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.htmlS32PGH0SQB-eyJsa…

  • todomvc项目_reactive vue

    todomvc项目_reactive vue所有实现代码在文章结尾处分析整个实现过程的步骤:1.显示大标题“todoMVC”在h1中引入{{msg}},在js文件中将msg赋值,从而在html中显示大标签的内容2.当没有数据时,两块模板需要隐藏,用到v-if标签。将两个模板放在一个template标签中,当items.length=0时,则v-if=false,进而两块模板隐藏。3.引入数据。将JS中写好的默认数据引入在html的每一个li标签中。4.将每个事件划分为完成/未完成。该功能用到双向数据绑定,可以在浏览器中vue模

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号