Jenkins的安装和helloworld Pipeline

文章目录

  • 环境
  • 安装
    • 下载安装
    • 启动
    • 初始化
  • Pipeline
    • UI
    • SCM(Source Control Management)
      • 准备
      • pipeline
  • 参考

环境

  • RHEL 9.3
  • Jenkins 2.44.0.1

安装

参考 https://www.jenkins.io/doc/book/installing/linux/#red-hat-centos

下载安装

[ding@192 ~]$ sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
--2024-03-02 18:13:19--  https://pkg.jenkins.io/redhat-stable/jenkins.repo
Resolving pkg.jenkins.io (pkg.jenkins.io)... 2a04:4e42:1a::645, 151.101.110.133
Connecting to pkg.jenkins.io (pkg.jenkins.io)|2a04:4e42:1a::645|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 85
Saving to: ‘/etc/yum.repos.d/jenkins.repo’

/etc/yum.repos.d/jenkins.repo                               100%[========================================================================================================================================>]      85  --.-KB/s    in 0s      

2024-03-02 18:13:20 (3.03 MB/s) -/etc/yum.repos.d/jenkins.repo’ saved [85/85]
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
sudo yum upgrade
sudo yum install fontconfig java-17-openjdk # Add required dependencies for the jenkins package
sudo yum install jenkins
sudo systemctl daemon-reload

启动

设置开机启动:

sudo systemctl enable jenkins

启动:

sudo systemctl start jenkins

检查Jenkins状态:

[ding@192 ~]$ sudo systemctl status jenkins
● jenkins.service - Jenkins Continuous Integration Server
     Loaded: loaded (/usr/lib/systemd/system/jenkins.service; enabled; preset: disabled)
     Active: active (running) since Sat 2024-03-02 18:18:30 CST; 19s ago
   Main PID: 9453 (java)
      Tasks: 49 (limit: 22752)
     Memory: 1.0G
        CPU: 34.636s
     CGroup: /system.slice/jenkins.service
             └─9453 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/java/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=8080

Mar 02 18:18:12 192.168.1.11 jenkins[9453]: 9cc784ffe4ad46e4bb2b8a1a4116839b
Mar 02 18:18:12 192.168.1.11 jenkins[9453]: This may also be found at: /var/lib/jenkins/secrets/initialAdminPassword
Mar 02 18:18:12 192.168.1.11 jenkins[9453]: *************************************************************
Mar 02 18:18:12 192.168.1.11 jenkins[9453]: *************************************************************
Mar 02 18:18:12 192.168.1.11 jenkins[9453]: *************************************************************
Mar 02 18:18:30 192.168.1.11 jenkins[9453]: 2024-03-02 10:18:30.504+0000 [id=33]        INFO        jenkins.InitReactorRunner$1#onAttained: Completed initialization
Mar 02 18:18:30 192.168.1.11 jenkins[9453]: 2024-03-02 10:18:30.526+0000 [id=24]        INFO        hudson.lifecycle.Lifecycle#onReady: Jenkins is fully up and running
Mar 02 18:18:30 192.168.1.11 systemd[1]: Started Jenkins Continuous Integration Server.
Mar 02 18:18:31 192.168.1.11 jenkins[9453]: 2024-03-02 10:18:31.611+0000 [id=49]        INFO        h.m.DownloadService$Downloadable#load: Obtained the updated data file for hudson.tasks.Maven.MavenInstaller
Mar 02 18:18:31 192.168.1.11 jenkins[9453]: 2024-03-02 10:18:31.613+0000 [id=49]        INFO        hudson.util.Retrier#start: Performed the action check updates server successfully at the attempt #1

至此,Jenkins已经安装好,并启动。

初始化

打开浏览器,访问 http://localhost:8080

在这里插入图片描述

按照提示,访问 /var/lib/jenkins/secrets/initialAdminPassword 文件:

[ding@192 ~]$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword
9cc784ffe4ad46e4bb2b8a1a4116839b

注:这个密码也是默认的 admin 用户的密码。

把文件内容复制到输入框,并点击“Continue”按钮。

在这里插入图片描述

对于新手,选择左边的默认的插件就行。点击后,开始安装:

在这里插入图片描述

大约需要几分钟时间,就安装好了,自动跳转到下一个页面:

在这里插入图片描述

填入用户名、密码、邮箱等信息,点击“Save and Continue”按钮,跳转到下一个页面:

在这里插入图片描述

默认的URL是 http://localhost:8080/ ,无需修改,直接点击“Save and Finish”按钮,进入下一个页面:

在这里插入图片描述

点击“Start using Jenkins”按钮,进入Jenkins主页面:

在这里插入图片描述

至此,Jenkins初始化完成,可以开始工作了。

Pipeline

参考 https://www.jenkins.io/doc/book/pipeline/getting-started

UI

在Jenkins主页面,点击左上角的“New Item”:

在这里插入图片描述

在接下来的页面中,填入名字,选择“Pipeline”,然后点击“OK”按钮:

在这里插入图片描述

在接下来的“Config”页面,到页面最下面:

在这里插入图片描述

可见,默认选择的是“Pipeline script”。在“Script”框里,填写pipeline代码。

如果不知道写什么好,可以在右边的下拉列表里,选择一个,比如“Hello World”:

在这里插入图片描述

生成的代码如下:

pipeline {
    agent any

    stages {
        stage('Hello') {
            steps {
                echo 'Hello World'
            }
        }

最后,点击“Save”按钮。至此,pipeline就创建好了。

接下来,点击左边的“Build Now”,运行 hello1 pipeline:

在这里插入图片描述

很快就可以看到,build运行成功了:

在这里插入图片描述

点击 #1 ,然后点击 “Console Output”,可以查看log:

在这里插入图片描述
可见,确实输出了 Hello World

SCM(Source Control Management)

前面的例子,代码是直接写在Jenkins里的,缺点是移植性和可维护性比较差。

更好的方法是把代码写在文本文件里,用源码控制工具来管理。该文件被称为 Jenkinsfile 。Jenkins用源码控制工具把 Jenkinsfile' pull下来,把它作为pipeline项目构建过程的一部分,然后来运行pipeline。

准备

首先要安装git。

然后在github创建一个项目 jenkinstest 。在项目根目录下,创建文件 Jenkinsfile 如下:

pipeline {
    agent any 
    stages {
        stage('Stage 1') {
            steps {
                echo 'Hello world!' 
            }
        }
    }
}

注:在其它位置创建 Jenkinsfile 也行,需在Jenkins里指定其路径。

在这里插入图片描述

pipeline

回到Jenkins主页面,点击左上角“New Item”,仍然选择“Pipeline”,拉到页面最下面,这次选择 Pipeline script from SCM

在这里插入图片描述
Repository URL 处,填写git repo的URL,本例为 https://github.com/dukeding/jenkinstest

Credentials 处,选择git的credential。如果还没有配置,则点击下方的 Add 按钮添加。

在这里插入图片描述

本例中,使用的是用户名密码的方式:

在这里插入图片描述
添加完成后,就可以选择它了:

在这里插入图片描述

接下来,在 Branch 处选择git branch,默认值是 */master ,本例中为 */main

Script Path 处选择 Jenkinsfile 的路径,默认值是 Jenkinsfile ,本例中文件名和路径都无需修改(即项目根目录下的 Jenkinsfile 文件)。

在这里插入图片描述

最后,点击“Save”按钮。

现在就可以运行pipeline了。点击左上角的 Build Now ,很快就能看到运行成功了:

在这里插入图片描述

点击 #1 ,然后点击 Console Output 查看log:

Started by user ding
Obtained Jenkinsfile from git https://github.com/dukeding/jenkinstest
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in /var/lib/jenkins/workspace/hello2
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Declarative: Checkout SCM)
[Pipeline] checkout
Selected Git installation does not exist. Using Default
The recommended git tool is: NONE
using credential duke_ding_git
Cloning the remote Git repository
Cloning repository https://github.com/dukeding/jenkinstest
 > git init /var/lib/jenkins/workspace/hello2 # timeout=10
Fetching upstream changes from https://github.com/dukeding/jenkinstest
 > git --version # timeout=10
 > git --version # 'git version 2.39.3'
using GIT_ASKPASS to set credentials 
 > git fetch --tags --force --progress -- https://github.com/dukeding/jenkinstest +refs/heads/*:refs/remotes/origin/* # timeout=10
 > git config remote.origin.url https://github.com/dukeding/jenkinstest # timeout=10
 > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10
Avoid second fetch
 > git rev-parse refs/remotes/origin/main^{commit} # timeout=10
Checking out Revision ff3347d08ac2eec7bed80862b80efe02bcf21b93 (refs/remotes/origin/main)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f ff3347d08ac2eec7bed80862b80efe02bcf21b93 # timeout=10
Commit message: "Update Jenkinsfile"
First time build. Skipping changelog.
[Pipeline] }
[Pipeline] // stage
[Pipeline] withEnv
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Stage 1)
[Pipeline] echo
Hello world!
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

可见,确实输出了 Hello World

参考

  • https://www.jenkins.io/doc/book/installing/linux/#red-hat-centos
  • https://www.jenkins.io/doc/book/pipeline/getting-started
  • https://www.jenkins.io/zh/doc/book/getting-started/ (中文文档)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024新算法:鹅算法优化VMD参数,五种适应度函数任意切换,最小包络熵、样本熵、信息熵、排列熵、排列熵/互信息熵...

本期采用鹅算法优化一下VMD参数。利用MATLAB官方自带的VMD函数。 替换为官方自带的VMD函数后,寻优速度真的大幅度提升!数据量大的不妨都试试这个官方的VMD函数。当然要下载2020a以上的MATLAB才可以哦! 同样以西储大学数据集为例,选…

vue 部署后修改配置文件(接口IP)

近期,有一个项目,运维在部署的时候,接口ip还没有确定,而且ip后面的路径一直有变动,导致我这里一天打包至少四五次才行,很麻烦,然后看了下有没有打包后修改配置文件修改接口ip的方法,…

【QT+QGIS跨平台编译】之六十四:【QGIS_CORE跨平台编译】—【错误处理:未定义类型QTemporaryDir - QgsSourceCache】

文章目录 一、未定义类型QTemporaryDir二、解决办法 一、未定义类型QTemporaryDir 报错&#xff1a; 二、解决办法 QgsSourceCache.h文件中 第25行修改为&#xff1a; #include <QTemporaryDir>

深入了解Kafka的文件存储原理

Kafka简介 Kafka最初由Linkedin公司开发的分布式、分区的、多副本的、多订阅者的消息系统。它提供了类似于JMS的特性&#xff0c;但是在设计实现上完全不同&#xff0c;此外它并不是JMS规范的实现。kafka对消息保存是根据Topic进行归类&#xff0c;发送消息者称为Producer&…

FreeRTOS学习笔记——FreeRTOS中断管理

什么是中断&#xff1f; 简介&#xff1a;让CPU打断正常运行的程序&#xff0c;转而去处理紧急的事件&#xff08;程序&#xff09;&#xff0c;就叫中断 例&#xff1a; 中断执行机制&#xff0c;可简单概括为三步&#xff1a; 中断优先级分组设置 ARM Cortex-M 使用了 8 位…

微信小程序触屏事件_上划下划事件

一、微信小程序触屏事件 bindtouchstart&#xff1a;手指触摸动作开始 bindtouchmove&#xff1a;手指触摸后移动 bindend&#xff1a;手指触摸动作结束 属性类型说明touchesArray触摸事件&#xff0c;当前停留在屏幕中的触摸点信息的数组 Touch 对象 属性类型说明identi…

基于MVS的三维重建算法学习笔记(一)— MVS三维重建概述与OpenMVS开源框架配置

基于MVS的三维重建算法学习笔记&#xff08;一&#xff09;— MVS三维重建概述与OpenMVS开源框架配置 声明1. MVS&#xff08;Multi-view stereo&#xff09;概述稀疏重建与稠密重建的区别稀疏重建——SFM&#xff08;Structure from Motion&#xff09;算法稠密重建——MVS&am…

家政行业的数字转型:开发智能化家政预约APP的挑战与机遇

为了适应这一变化&#xff0c;许多家政企业开始积极探索数字化转型&#xff0c;其中包括开发智能化预约APP。本文将探讨开发智能化预约APP所面临的挑战与机遇。 ​一、挑战&#xff1a; 1.用户体验设计&#xff1a; -开发智能化预约APP需要注重用户体验设计&#xff0c;包括…

Android使用OpenGL和FreeType绘制文字

Open GL主要是渲染图形的&#xff0c;有时候需要绘制文字&#xff0c;网上搜了一下&#xff0c;基本思路都是把文字转成位图&#xff0c;再使用Open GL纹理进行渲染。加载纹理在特定阶段才能成功&#xff08;在onSurfaceCreated中加载&#xff09;&#xff0c;这样就无法动态的…

动态规划(算法竞赛、蓝桥杯)--树形DP树形背包

1、B站视频链接&#xff1a;E18 树形DP 树形背包_哔哩哔哩_bilibili #include <bits/stdc.h> using namespace std; const int N110; int n,V,p,root; int v[N],w[N]; int h[N],to[N],ne[N],tot; //邻接表 int f[N][N];void add(int a,int b){to[tot]b;ne[tot]h[a];h[a…

Docusaurus框架——react+antd+echarts自定义mdx生成图表代码解释文档

文章目录 ⭐前言⭐Docusaurus框架渲染mdx内容&#x1f496; 创建一个mdx文件&#x1f496; 创建一个react jsx文件&#x1f496; mdx引入react的组件并渲染&#x1f496; mdx引入react的组件源代码内容 ⭐渲染一个echarts地图的代码解释文档&#x1f496; echarts 渲染地图&…

idea中springboot项目创建后追加依赖

springboot项目创建后追加依赖 前言1、安装插件editstarters设置->插件 2、进入pom.xml 页面 前言 在项目创建的时候选择好依赖创建项目&#xff0c;之后追加依赖不是很方便&#xff0c;介绍一个简单的使用方法&#xff0c;通过editstarters进行添加 1、安装插件editstart…

html基本标签

<h1></h1> <p></p> h是标签从h1~h6&#xff0c;没用h7,h8 p是段落 <a href"https://www.educoder.net">Educoder平台</a> href可以指定链接进行跳转 <img src"https://www.educoder.net/attachments/download/2078…

C语言---文件操作(1)

1.文件的打开和关闭 fopen有2个参数&#xff0c;第一个是文件的名字&#xff0c;第二个是打开的模式&#xff08;例如是读文件还是写文件&#xff09; (1)该文件夹下面没有data.txt文件&#xff0c;但是我执行了read操作&#xff0c;所以会显示这样的错误 &#xff08;2&#…

链表类型题目

文章目录 简介链表的常用技巧两数相加原理代码代码|| 两两交换链表中的节点代码原理 重排链表(重要)原理代码 合并 K 个升序链表代码递归代码 K 个一组翻转链表原理代码 简介 大家好,这里是jiantaoyab,这篇文章给大家带来的是链表相关的题目练习和解析,希望大家能相互讨论进步 …

强化学习_06_pytorch-PPO实践(Hopper-v4)

一、PPO优化 PPO的简介和实践可以看笔者之前的文章 强化学习_06_pytorch-PPO实践(Pendulum-v1) 针对之前的PPO做了主要以下优化&#xff1a; batch_normalize: 在mini_batch 函数中进行adv的normalize, 加速模型对adv的学习policyNet采用beta分布(0~1): 同时增加MaxMinScale …

排序(3)——直接选择排序

目录 直接选择排序 基本思想 整体思路&#xff08;升序&#xff09; 单趟 多趟 代码实现 特性总结 直接选择排序 基本思想 每一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个元素&#xff0c;存放在序列的起始位置&#xff0c;直到全部待排序的…

JOSEF约瑟 漏电继电器LLJ-400F 配套零序互感器φ100mm 50-500mA 0.1S 导轨安装

系列型号&#xff1a; LLJ-150F(S)漏电继电器 LLJ-160F(S)漏电继电器 LLJ-200F(S)漏电继电器 LLJ-250F(S)漏电继电器 LLJ-300F(S)漏电继电器 LLJ-320F(S)漏电继电器 LLJ-400F(S)漏电继电器 LLJ-500F(S)漏电继电器 LLJ-600F(S)漏电继电器 一、产品用途及特点 LLJ-FS系列漏电继电…

MWC 2024丨美格智能推出5G RedCap系列FWA解决方案,开启5G轻量化新天地

2月27日&#xff0c;在MWC 2024世界移动通信大会上&#xff0c;美格智能正式推出5G RedCap系列FWA解决方案。此系列解决方案具有低功耗、低成本等优势&#xff0c;可以显著降低5G应用复杂度&#xff0c;快速实现5G网络接入&#xff0c;提升FWA部署的经济效益。 RedCap技术带来了…

MATLAB知识点:if条件判断语句的嵌套

​讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 节选自​第4章&#xff1a;MATLAB程序流程控制 我们通过一个…