Jenkins的安装和helloworld Pipeline

news2024/10/2 6:34:55

文章目录

  • 环境
  • 安装
    • 下载安装
    • 启动
    • 初始化
  • 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/ (中文文档)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

内存占用构造方法

#使用虚拟内存构造内存消耗 mkdir /tmp/memory mount -t tmpfs -o size5G tmpfs /tmp/memory dd if/dev/zero of/tmp/memory/block #释放消耗的虚拟内存 rm -rf /tmp/memory/block umount /tmp/memory rmdir /tmp/memory #内存占用可直接在/dev/shm目录下写文件

【Deep Dive:AI Webinar】我们是否能将开源许可用于机器学习和人工智能模型?

【深入探讨人工智能】网络研讨系列总共有 17 个视频。我们按照视频内容,大致上分成了 3 个大类: 1. 人工智能的开放、风险与挑战(4 篇) 2. 人工智能的治理(总共 12 篇),其中分成了几个子类&…

Revit-二开之创建线性尺寸标注-(5)

创建线性尺寸标注 对应的Revit界面的按钮 线性尺寸标注源码 本篇文章实现的逻辑是从rvt文章中拾取一面墙,然后对墙添加再水平方向上的线性尺寸标注 protected override Result OnExecute(ExternalCommandData commandData, ref string message, ElementSet elements

使用 llama.cpp 在本地部署 AI 大模型的一次尝试

对于刚刚落下帷幕的2023年,人们曾经给予其高度评价——AIGC元年。随着 ChatGPT 的火爆出圈,大语言模型、AI 生成内容、多模态、提示词、量化…等等名词开始相继频频出现在人们的视野当中,而在这场足以引发第四次工业革命的技术浪潮里,人们对于人工智能的态度,正从一开始的…

快速入门规则引擎

文章首发于微信公众号:职谷智享 一、什么是规则引擎 当我们在对复杂的业务进行开发时,程序本身逻辑代码和业务代码互相嵌套、错综复杂,同时维护成本高,可拓展性差。 可降低复杂业务逻辑组件复杂性、降低应用程序的维护和可扩展…

alibabacloud学习笔记07(小滴课堂)

讲解Sentinel自定义异常降级-新旧版本差异 讲解新版Sentinel自定义异常数据开发实战 如果我们都使用原生的报错,我们就无法得到具体的报错信息。 所以我们要自定义异常返回的数据提示: 实现BlockExceptionHandler并且重写handle方法: 使用F…

【C++】十大排序算法之 冒泡排序 选择排序

本次介绍内容参考自:十大经典排序算法(C实现) - fengMisaka - 博客园 (cnblogs.com) 排序算法是《数据结构与算法》中最基本的算法之一。 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序…

linux系统Jenkins工具流水线项目发布

流水线发布 pipline语法介绍阶段指令 创建流水线项目流水线脚本基础框架 pipline语法介绍 声明式的pipeline语法格式 1. 所有的声明都必须包含在pipeline{}中 2. 块只能有节段,指令,步骤或者赋值语句组成 3. 阶段:agent,stages&a…

tomcat部署和优化(二)----- 轻松搭建博客、状态页优化、虚拟主机配置

一、tomcat 1、自建博客 [rootzzzcentos1 ~]#systemctl stop firewalld [rootzzzcentos1 ~]#setenforce 0 [rootzzzcentos1 ~]#cd /data/ [rootzzzcentos1 data]#rz -E rz waiting to receive. [rootzzzcentos1 data]#ls apache-tomcat-9.0.16 apache-tomcat-9.0…

180基于matlab的频率切片小波变换程序(FTWT)

基于matlab的频率切片小波变换程序(FTWT)。从一种新的角度出发,通过自由选择频率切片函数、引进新尺度参数,在频率域实现小波变换,该变换能够很好地刻画信号各成分之间的相对能量关系。此外,频率切片小波变…

VirtualBox 桥接网卡 未指定 “未能启动虚拟电脑Ubuntu,由于下述物理网卡未找到:”

解决办法,安装虚拟网卡,win11查找方式:控制面板→网络和共享中心→更改适配器设置 此时出现下面情况就算安装成功 但是如果报错:找不到指定的模块 则按下面步骤删除干净垃圾重新上面操作 先安装CCleaner, 链接:CCleaner Makes Y…

latex报错I was expecting a `,‘ or a `}‘的解决办法

解决办法——经过检查在ref22后面缺少一个逗号 总结 当你在使用LaTeX时遇到“I was expecting a , or a }”这样的错误,这通常意味着LaTeX在解析你的代码时,预期在某个位置看到一个逗号(,)或一个大括号(})…

关于阿里云oss的冗余存储类型问题

不得不说一个问题,阿里云服务方便我们的同时 ,他们的文档写的是真的差劲。 东一块,西一块的。非常不好系统的阅读,文档结构比较散。 关于阿里云oss的冗余存储类型问题,这里说一下,简直是个坑。 首页阿里…

(面试题)数据结构:链表相交

问题:有两个链表,如何判断是否相交,若相交,找出相交的起始节点 一、介绍 链表相交: 若两个链表相交,则两个链表有共同的节点,那从这个节点之后,后面的节点都会重叠,知道…

一些可以访问gpt的方式

1、Coze扣子是新一代 AI 大模型智能体开发平台。整合了插件、长短期记忆、工作流、卡片等丰富能力,扣子能帮你低门槛、快速搭建个性化或具备商业价值的智能体,并发布到豆包、飞书等各个平台。https://www.coze.cn/ 2、https://poe.com/ 3、插件阿里…

Android Compose - PlainTooltipBox(已废弃)的替代方案

Android Compose - PlainTooltipBox 的替代方案 TooltipBox(positionProvider TooltipDefaults.rememberPlainTooltipPositionProvider(),tooltip {PlainTooltip {Text(/* tooltip content */)}},state rememberTooltipState(), ) {// tooltip anchorIconButton(onClick {…

Linux多线程服务端编程:使用muduo C++网络库 学习笔记 附录B 从《C++ Primer(第4版)》入手学习C++

这是作者为《C Primer(第4版)(评注版)》写的序言,文中“本书”指的是这本书评注版。 B.1 为什么要学习C 2009年本书作者Stanley Lippman先生应邀来华参加上海祝成科技举办的C技术大会,他表示人们现在还用…

手势识别应用介绍

目录 一、功能介绍 二、安装部署说明 2.1 文件目录说明 2.2 手势识别部分 一、功能介绍 这是一个通过摄像头捕获手势,根据不同的手势来做出不同操作的计算机程序。目前可以识别9种手势,可以根据识别到的手势,进行打开应用、增大音量、减小音量…

抖音视频批量采集软件|视频评论下载工具

在日常工作中,需要频繁下载抖音视频,但逐个复制分享链接下载效率太低?别担心!我们推出了一款专业的抖音视频批量采集软件,基于C#开发,满足您的需求,让您通过关键词搜索视频并自动批量抓取&#…

swoole

php是单线程。php是靠多进程来处理任务,任何后端语言都可以采用多进程处理方式。如我们常用的php-fpm进程管理器。线程与协程,大小的关系是进程>线程>协程,而我们所说的swoole让php实现了多线程,其实在这里来说,就是好比让php创建了多个进程,每个进程执行一条…