Jenkins Tutorial

什么是Jenkins

Jenkins是一个自动化平台,它允许你使用pipelines去部署应用。它也可以自动化其他任务。

  • BUILD
  • TEST
  • DEPLOYMENT

Jenkins 架构

首先,你拥有一个Master Server,它控制pipelines和安排Build到你的Agent上;
其次,你有Agents,能够运行在Build在它们的工作台上。

构建(Build)类型

Freestyle Build

  • 创建一个Build最简单的方法
  • 感觉就像Shell脚本一样

Pipelines

  • 使用Jenkins files
  • 使用 satge 分解构建的组件

安装Jenkins

这里使用Docker进行安装,也可以使用其他方式安装
https://www.jenkins.io/download/

$ docker pull jenkins/jenkins
$ docker run -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home --name jenkins-master --network jenkins jenkins/jenkins

访问http://localhost:8080/ 进入容器复制密码并粘贴
image.png
安装推荐的插件,创建管理员用户
image.png
配置
image.png

创建一个简单的Freestyle Job

  • 点击新建Item

image.png

  • 选择FreeStyle,点击创建image.png

  • 简单编写shellimage.png

  • 在这里能看到构建历史image.png

  • 点击某个构建历史,查看控制台输出,发现我们编写的shell命令已经执行了image.png

  • 点击配置修改,点击查看环境变量列表image.png

  • 去使用Jenkins环境变量,填写在Build Steps处

echo "Hello world"
echo "The build ID of this job is ${BUILD_ID}"
echo "The build URL of this job is ${BUILD_URL}"
  • 点击立即构建,查看控制台输出image.png
  • 重新更新shell script在Build Steps处
echo "Hello world"
echo "The build ID of this job is ${BUILD_ID}"
echo "The build URL of this job is ${BUILD_URL}"ls -ltr
echo "Jenkins" > test.txt
ls -ltr
  • 保存并构建,查看控制台输出,你可以看到一开始没有文件,之后出现了文件

image.png

  • 点击工作空间,你可以看到文件image.png

  • 再次构建一次,查看控制台输出,我们可以看到之前的文件依旧存在image.png

  • 如果我们需要每次构建去清除工作空间,配置勾选此选项image.png

  • 再此查看控制台输出,我们发现之前的文件已经不存在,重新生成了新的文件image.png

探索Jenkins文件系统和工作空间

#进入容器
$ docker exec -it jenkins-master bashjenkins@9fbb1603c9e7:/$ cd /var/jenkins_home/
jenkins@9fbb1603c9e7:~$ ls -ltra
total 128
drwxr-xr-x  1 root    root     4096 Dec 19 15:06 ..
drwxr-xr-x 10 jenkins jenkins  4096 Dec 24 03:08 war
drwxr-xr-x  3 jenkins jenkins  4096 Dec 24 03:08 .cache
drwxr-xr-x  3 jenkins jenkins  4096 Dec 24 03:08 .java
-rw-r--r--  1 jenkins jenkins    64 Dec 24 03:08 secret.key
-rw-r--r--  1 jenkins jenkins     0 Dec 24 03:08 secret.key.not-so-secret
drwxr-xr-x  2 jenkins jenkins  4096 Dec 24 03:08 nodes
-rw-r--r--  1 jenkins jenkins   171 Dec 24 03:08 jenkins.telemetry.Correlator.xml
drwxr-xr-x  2 jenkins jenkins  4096 Dec 24 03:08 userContent
-rw-r--r--  1 jenkins jenkins   129 Dec 24 03:08 queue.xml.bak
-rw-r--r--  1 jenkins jenkins   100 Dec 24 03:14 copy_reference_file.log
-rw-r--r--  1 jenkins jenkins   156 Dec 24 03:14 hudson.model.UpdateCenter.xml
-rw-r--r--  1 jenkins jenkins  1037 Dec 24 03:14 nodeMonitors.xml
-rw-r--r--  1 jenkins jenkins  1661 Dec 24 03:14 config.xml
-rw-r--r--  1 jenkins jenkins     0 Dec 24 03:14 .lastStarted
drwxr-xr-x 87 jenkins jenkins 12288 Dec 24 03:22 plugins
-rw-------  1 jenkins jenkins  1680 Dec 24 03:22 identity.key.enc
drwxr-xr-x  2 jenkins jenkins  4096 Dec 24 03:22 updates
-rw-r--r--  1 jenkins jenkins   370 Dec 24 03:22 hudson.plugins.git.GitTool.xml
drwxr-xr-x  3 jenkins jenkins  4096 Dec 24 03:22 .groovy
drwxr-xr-x  3 jenkins jenkins  4096 Dec 24 03:24 users
-rw-r--r--  1 jenkins jenkins   179 Dec 24 03:24 jenkins.model.JenkinsLocationConfiguration.xml
-rw-r--r--  1 jenkins jenkins     5 Dec 24 03:24 jenkins.install.UpgradeWizard.state
-rw-r--r--  1 jenkins jenkins     5 Dec 24 03:24 jenkins.install.InstallUtil.lastExecVersion
-rw-r--r--  1 jenkins jenkins     1 Dec 24 03:41 .owner
drwxr-xr-x  3 jenkins jenkins  4096 Dec 24 03:48 jobs
drwx------  2 jenkins jenkins  4096 Dec 24 03:55 secrets
drwxr-xr-x  3 jenkins jenkins  4096 Dec 24 04:21 logs
-rw-r--r--  1 jenkins jenkins   504 Dec 24 04:24 org.jenkinsci.plugins.resourcedisposer.AsyncResourceDisposer.xml
drwxr-xr-x  3 jenkins jenkins  4096 Dec 24 04:24 workspace
-rw-r--r--  1 jenkins jenkins   129 Dec 24 04:25 queue.xml
drwxr-xr-x 15 jenkins jenkins  4096 Dec 24 04:25 .
  • 进入/var/jenkins_home/workspace,可以看到我们的Job Name
jenkins@9fbb1603c9e7:~$ cd workspace/
jenkins@9fbb1603c9e7:~/workspace$ ls -ltra
total 12
drwxr-xr-x  2 jenkins jenkins 4096 Dec 24 04:24 my_first_job
drwxr-xr-x  3 jenkins jenkins 4096 Dec 24 04:24 .
drwxr-xr-x 15 jenkins jenkins 4096 Dec 24 04:25 ..
  • 进入我们创建的Job目录下
jenkins@9fbb1603c9e7:~/workspace$ cd my_first_job/
jenkins@9fbb1603c9e7:~/workspace/my_first_job$ ls -ltra
total 12
-rw-r--r-- 1 jenkins jenkins    8 Dec 24 04:24 test.txt
drwxr-xr-x 3 jenkins jenkins 4096 Dec 24 04:24 ..
drwxr-xr-x 2 jenkins jenkins 4096 Dec 24 04:24 .
jenkins@9fbb1603c9e7:~/workspace/my_first_job$ cat test.txt
Jenkins

使用Jenkins运行Python脚本

  • 新建一个Jobimage.png
  • 添加Git仓库位置https://github.com/devopsjourney1/jenkins-101image.png
  • 编写Shell Script在Build Stepsimage.png
  • 点击构建查看控制台输出,发现进行拉取Git仓库执行helloworld.py文件image.png

helloworld.py

print("Hello world")

设置Docker Cloud Agent

image.png
image.png

  • 点击cloudsimage.png
  • 安装插件image.png
  • 你可以在这里添加你需要的云节点(如Docker ,AWS,k8s)image.png

设置Commit触发

  • 在Job的此位置设置,这样类似于设置一个Crontab去检测Git仓库最后一次的commit提交,然后执行自动化

image.png

  • H/5 * * * * 每5分钟去进行一次检测

Pipelines

  • 创建一个任务,选择Pipeline(选择流水线)image.png
  • 向下拉取,你需要添加pipeline脚本在这里image.png

pipeline文件格式

pipeline {  #所有命令包裹着pipeline里agent { node { #通过标签选择agentlabel 'jenkins-agent-goes-here'}}triggers { #触发器pollSCM '* * * * *'}  stages {  #stages->stage->stepsstage('Build') {steps {echo "Building.."sh '''echo "doing build stuff.."'''}}stage('Test') {steps {echo "Testing.."sh '''echo "doing test stuff..'''}}stage('Deliver') {steps {echo 'Deliver....'sh '''echo "doing delivery stuff.."'''}}}
}
  • 将这段pipeline脚本填入,并保存构建
pipeline {agent any   #选择任意一个可用的节点当作agent 这里使用的为本机stages {stage('Build') {steps {echo "构建中.."}}stage('Test') {steps {echo "测试中.."}}stage('Deploy') {steps {echo '部署中..'}}}
}

image.png

  • 查看控制台输出image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/226538.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++环形缓冲区学习

C环形缓冲区设计与实现:从原理到应用的全方位解析 - 知乎 这里插入一个回调函数的学习: C回调函数详解_c 回调函数-CSDN博客 【C】C回调函数基本用法(详细讲解)_c 回调函数-CSDN博客

手机卡为什么要关闭语音功能?看完这篇文章瞬间就懂了!

今天给大家介绍一种流量卡行业中的奇怪的现象,那么就是我明明办理的是正规的号卡,为什么却给我关闭了语音功能吗? 很多朋友都想办理一张正规的,可以打电话,可以发短信的流量卡,但是在拿到流量卡之后才发现卡…

openmediavault(OMV) (19)云相册(3)mt-photos

简介 MT Photos是一款为Nas用户量身打造的照片管理系统。通过AI技术,自动将您的照片整理、分类,包括但不限于时间、地点、人物、照片类型。可以在任何支持Docker的系统中运行它。详情可查看mtmt.tech官网,mt-photos是付费订阅使用的,也可以一次性付费永久使用,具体使用mt…

web3方向产品调研

每次互联网形态的改变,都会对世界产生很大的影响,上一次对社会产生重大影响的互联网形态(Web2.0)催生了一批改变人类生活和信息交互方式的企业。 目录 概述DAO是什么?为什么我们需要DAO? 金融服务金融桥接及周边服务D…

2023年最值得关注的主要网络犯罪统计数据

在互联网高速发展的当今,网络犯罪的种类和数量日益增长,为了保护自身的利益与安全,了解和关注网络犯罪的最新统计数据很有必要。本文汇总了2023年最值得关注的主要网络犯罪统计数据,以帮助企业了解未来趋势与防范启示,…

java freemarker 动态生成excel文件

好久木有更新啦 抓住2023的小尾巴 浅浅更新一下吧~ 最近做了一个动态生成excel的功能,这里记录下部分功能,主要用到的是freemarker框架,spring就有带,我起的demo载入了一下freemarker的jar包 一、创建模板 首先可以创建一个e…

Unity Shader-真实下雨路面

Unity Shader-真实下雨路面 简介素材1.准备插件Amplify Shader Editor(这里我使用的是1.6.4最新版)2.贴纸和切图d 一、创建一个Shader Surface,实现气泡播放效果二、叠加一次气泡播放效果,使其看起来更多,更无序三、小…

学生使用什么牌子的护眼灯好?五款优秀台灯分享

在近几年,儿童青少年近视率非常高。很多家长认为孩子近视的原因是没有养成正确的用眼习惯,例如经常趴桌子写作业、眯眼看书等,但实际上这些坏习惯是因为没有合适的光线而导致的。所以安排一盏合适的台灯给孩子学习是非常重要的。 很多家长会选…

GitHub教程-自定义个人页制作

GitHub是全球最大的代码托管平台,除了存放代码,它还允许用户个性化定制自己的主页,展示个人特色、技能和项目。本教程旨在向GitHub用户展示如何制作个性化主页,同时,介绍了GitHub Actions的应用,可以自动化…

Docker 使用详解看了挺开悟的

使用docker ps命令可以查看所有正在运行中的容器列表, 使用docker inspect命令我们可以查看更详细的关于某一个容器的信息。 $ docker inspect 容器id/image[{"Id": "b57ee6bbf1f4f62a5aba6a73acd53b0f9b8ec542e1f9fa9213159ffd3828c7b4",&q…

[Angular] 笔记 8:list/detail 页面以及@Input

1. list 页面 list/detail 是重要的 UI 设计模式。 vscode terminal 运行如下命令生成 detail 组件: PS D:\Angular\my-app> ng generate component pokemon-base/pokemon-detail --modulepokemon-base/pokemon-base.module.ts CREATE src/app/pokemon-base/p…

Mybatis行为配置之Ⅲ—其他行为配置项说明

专栏精选 引入Mybatis Mybatis的快速入门 Mybatis的增删改查扩展功能说明 mapper映射的参数和结果 Mybatis复杂类型的结果映射 Mybatis基于注解的结果映射 Mybatis枚举类型处理和类型处理器 再谈动态SQL Mybatis配置入门 Mybatis行为配置之Ⅰ—缓存 Mybatis行为配置…

ChatGPT在地学、GIS、气象、农业、生态、环境等领域中的高级应用

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮,可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

华为云服务器yum无更新问题解决

买了一个华为云服务器,系统是银河麒麟v10,cpu选择的事华为的坤鹏。 买了一段时间后,使用yum更新,发现没有任何更新包。 又过了一段时间,还是没有更新包。 通过漏扫设备,发现系统内存在较多存在漏洞的软件…

tsconfig.app.json文件报红:Option ‘importsNotUsedAsValues‘ is deprecated...

在创建vue3 vite ts项目时的 tsconfig.json(或者tsconfig.app.json) 配置文件经常会报一个这样的错误: 爆红: Option ‘importsNotUsedAsValues’ is deprecated and will stop functioning in TypeScript 5.5. Specify compi…

gin框架使用系列之四——json和protobuf的渲染

系列目录 《gin框架使用系列之一——快速启动和url分组》《gin框架使用系列之二——uri占位符和占位符变量的获取》《gin框架使用系列之三——获取表单数据》 上篇我们介绍了如何获取数据,本篇我们介绍一下如何返回固定格式的数据。 一、返回JSON数据 在web开发中…

大创项目推荐 深度学习OCR中文识别 - opencv python

文章目录 0 前言1 课题背景2 实现效果3 文本区域检测网络-CTPN4 文本识别网络-CRNN5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习OCR中文识别系统 ** 该项目较为新颖,适合作为竞赛课题方向,…

红队打靶练习:DIGITALWORLD.LOCAL: FALL

目录 信息收集 1、arp 2、netdiscover 3、nmap 4、nikto 5、whatweb 6、小结 目录探测 1、gobuster 2、dirsearch WEB 80端口 /test.php 文件包含漏洞 SSH登录 提权 get root and flag 信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# arp-scan -l Interfa…

Qt/C++音视频开发61-多屏渲染/一个解码渲染到多个窗口/画面实时同步

一、前言 多屏渲染就是一个解码线程对应多个渲染界面,通过addrender这种方式添加多个绘制窗体,我们经常可以在展会或者卖电视机的地方可以看到很多电视播放的同一个画面,原理应该类似,一个地方负责打开解码播放,将画面…

Android下载gradle失败解决方法

1、在gradle-wrapper.properties文件中查看自己需要下载gradle什么版本的包和zip路径(wrapper/dists)。 2、在setting中查看Gradle的保存路径,如下图:C:/Users/Administrator/.gradle,加上第一步的zip路径得到下载grad…