Jenkins 服务搭建以及自动化编译部署

安装环境:Ubuntu22.04

1.首先安装Jenkins
这是 Jenkins 的 Debian 软件包存储库,用于自动安装和升级。 要使用此存储库,请先将密钥添加到系统中,在服务器执行命令:

curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null

然后添加一个 Jenkins apt 存储库条目:
echo “deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/” | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null

更新本地包索引,然后最终安装 Jenkins:

sudo apt-get update
sudo apt-get install fontconfig openjdk-11-jre
sudo apt-get install jenkins

安装完成后查看

安装完成后,查看jenkins是否运行:

sudo systemctl status jenkins

active (running)表示正在运行,如果未运行,输入sudo systemctl  start jenkins 运行

2.配置Jenkins & GitLab  SSH 公钥
安装完成后,jenkins的web登录端口默认是 8080

在浏览器输入http://服务器IP:8080/ 即可访问到Jenkins web页面:

想要自动化编译GitLab 的代码,那还需要搭建一个Gitlab代码管理仓库,这个测试部已经搭建过了。我们需要做的就是在gitlab上传好代码,然后配置jenkins和gitlab的ssh key,

这样jenkins才能从gitlab clone到代码。

Jenkins服务器ssh key创建
安装Jenkins的服务器会自动创建一个jenkins的账号,现在我们切换到此账号:su jenkins,如果密码不对,需要先sudo passwd jenkins 设置密码。

输入cd,会自动到jenkins的家目录/var/lib/jenkins,

如果是新安装的jenkins 肯定没有创建过ssh key,我们执行ssh-keygen -t rsa 来创建,后面的提示一路回车即可。

创建成功后 cat .ssh/id_rsa.pub  ,复制如下SSH密钥到gitlab。
ssh-rsa xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= jenkins@Super-Server-0

配置jenkins的SSH 公钥到GitLab
这一步操作是为了能让系统的jenkins用户拥有访问 gitlab 的权限

将复制的id_rsa.pub文件的SSH密钥粘贴到 红框3 的位置保存即可。

配置jenkins web的 凭证
1.首先登录到jenkins web,点击右上角的下拉键选择“凭据”

2.然后点击“全局”,

3.进入里层目录后点击“ Add Credentials”

4.然后类型选择“SSH Username with private key”,用户名固定填“jenkins”

5.最后勾上Enter directly,回到jenkins用户命令行,执行cat .ssh/id_rsa,获取Private Key,复制后粘贴到框里保存即可.

3.上传代码到GitLab
测试jenkins是否可以运行,需要先创建一个测试的代码仓库,或者使用现有的代码仓库。

登录到Gitlab后,点击右侧新建项目,创建一个空白的项目,

然后按照指示上传自己的代码,指示已经比较详细,按照步骤即可正确上传,

这里我测试直接上传OpenBmc的代码。代码push成功后,复制SSH的克隆地址,我测试的时候好像jenkins不能使用 http地址,可能与Gitlab的网址是纯IP有关。

4.创建Jenkins自动化任务
回到Jenkins页面,点击新建任务,

由于最终是为了构建OpenBmc,经过测试可以使用’Build Steps’ 的shell脚本来完成,所有这里选择自由风格的软件项目。

Configure 配置
源码管理-git的Repository URL 填入之前复制到GitLab 的SSH 克隆链接,填入自己的分支。

Build Steps 脚本示例

–Build Steps脚本

#!/bin/bash -e
#防止jenkins杀死启动的进程
BUILD_ID=DONTKILLME
. /etc/profile
export LANG=en_US.UTF8
cd $WORKSPACE/openbmc
source setup evb-ast2500
ln -s …/…/downloads downloads
bitbake obmc-phosphor-image -c clean
time bitbake obmc-phosphor-image

4.执行构建

构建完成后,可在控制台输出 查看log

参考
流水线 (jenkins.io)

jenkins/run-build-script-ci - 知乎 (zhihu.com)

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

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

相关文章

如何在 SpringBoot 中优雅的做参数校验?

一、故事背景 关于参数合法性验证的重要性就不多说了,即使前端对参数做了基本验证,后端依然也需要进行验证,以防不合规的数据直接进入服务器,如果不对其进行拦截,严重的甚至会造成系统直接崩溃! 本文结合…

Windows下编译安装Kratos

Kratos是一款开源跨平台的多物理场有限元框架。本文记录在Windows下编译Kratos的流程。 Ref. from Kratos KRATOS Multiphysics ("Kratos") is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, a…

昇思25天学习打卡营第24天|RNN实现情感分类

RNN实现情感分类学习总结 概述 情感分类是自然语言处理领域的重要任务,主要用于识别文本中表达的情绪。本文使用MindSpore框架实现基于RNN的情感分类模型,示例包括: 输入: “This film is terrible” -> 标签: Negative输入: “This fi…

UE5.4内容示例(1)- 学习笔记

https://www.unrealengine.com/marketplace/zh-CN/product/content-examples 《内容示例》是学习UE5的基础示例,可以用此示例熟悉一遍UE5的功能 模型与材质部分 StaticMeshes FBX_Import_Options Material_Advanced Material_Decals Material_Instances Material_N…

MySQL零散拾遗(八)--- MySQL正则表达式

MySQL 支持使用正则表达式进行模式匹配,这对于复杂的字符串处理非常有用。MySQL 中的正则表达式可以通过 REGEXP 或 RLIKE 运算符来实现。下面详细介绍 MySQL 中正则表达式的语法和一些常用的正则表达式模式。 正则表达式基础 锚点 ^: 匹配字符串开头$: 匹配字符串…

Python 高阶语法

前言: 我们通过上篇文章学习了Python的基础语法,接下来我们来学习Python的高阶语法 1.初识对象 在Python中我们可以做到和生活中那样,设计表格、生产表格、填写表格的组织形式的 面向对象包含 3 大主要特性:  封装  继承 …

Zilliz 推出 Spark Connector:简化非结构化数据处理流程

随着人工智能(AI)和深度学习(Deep Learning)技术的高速发展,使用神经网络模型将数据转化为 Embedding 向量 已成为处理非结构化数据并实现语义检索的首选方法,广泛应用于搜索、推荐系统等 AI 业务中。 以生…

架构建模-系统架构师(三十二)

1、DNS配置文件是(),它包含了主机的域名搜索顺序和DNS服务器地址。 A /etc/hostname B /dev/host.conf C /etc/resolv.conf D /dev/name.conf 解析: 保存在etc/reolv.conf 2、信息隐蔽式开发整体程序时使用的法则&#xff0c…

C语言 定义结构体变量并计算该日在本年中是第几天

定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题&#xff08;即将闰年情况包含在内&#xff09;。 #include <stdio.h>typedef struct {int year;int month;int day; } Date;int isLeapYear(int year) {if ((year % 4 0 && year %…

力扣202.快乐数

202. 快乐数 - 力扣&#xff08;LeetCode&#xff09; 主要是用到了鸽巢原理&#xff0c;最后他们一定会重合&#xff0c;我们只需要判断类似&#xff0c;链表的成环相遇的时候是不是1就行了 class Solution { public:int bitsum(int n){int sum 0;while (n){int a 0;a n …

用护眼灯还需要开灯吗?护眼灯行业三大套路迷局揭秘

用护眼灯还需要开灯吗&#xff1f;在使用护眼台灯时&#xff0c;同时开启室内的主照明十分必要。如果关闭其他灯具&#xff0c;仅保留护眼台灯&#xff0c;那么只有台灯周围的小片区域能够被照亮&#xff0c;而房间的其他部分则处于相对昏暗的状态。这种明显的光线差异会造成视…

freertos的学习cubemx版

HAL 库的freertos 1 实时 2 任务->线程 3 移植 CMSIS_V2 V1版本 NVIC配置全部是抢占优先级 第四组 抢占级别有 0-15 编码规则&#xff0c; 变量名 &#xff1a;类型前缀&#xff0c; c - char S - int16_t L - int32_t U - unsigned Uc - uint8_t Us - uint…

Java常见的面试二

1、普通类和抽象类有那些区别 普通类中不能有抽象方法&#xff0c;抽象类中可以有抽象方法普通类可以直接实例化&#xff0c;抽象类不能直接实例化 2、抽象类能够使用final修饰吗 不能&#xff0c;抽象类是由子类继承的&#xff0c;但是final修饰的类不能被继承。两者矛盾所以…

《书生大模型实战营第3期》入门岛 学习笔记与作业:Python 基础知识

文章大纲 Python 简介1 安装Python1.1 什么是conda&#xff1f;1.1.1 功能与作用&#xff1a;1.1.2 常用命令&#xff1a;1.1.3 适用性&#xff1a; 1.2 Python安装与学习环境准备1.2.1 下载miniconda1.2.2 安装miniconda1.2.3 创建一个python练习专属的conda虚拟环境 2: Pytho…

【制作100个unity游戏之31】用unity制作一个爬坡2d赛车小游戏

最终效果 【制作100个unity游戏之31】用unity制作一个爬坡2d赛车小游戏 前言 今天用unity制作一个简单的爬坡2d赛车小游戏 素材 https://www.spriters-resource.com/mobile/hillclimbracing/ 拼装车素材 车身添加碰撞体&#xff0c;摩檫力0 轮胎添加碰撞体和刚体&#xff0…

【VSCode实战】Golang无法跳转问题竟是如此简单

上一讲【VSCode实战】Go插件依赖无法安装 – 经云的清净小站 (skycreator.top)&#xff0c;开头说到了在VSCode中Golang无法跳转的问题&#xff0c;但文章的最后也没给出解决方案&#xff0c;只解决了安装Go插件的依赖问题。 解决了插件依赖问题&#xff0c;无法跳转的问题也离…

苍穹外卖 02

1.新增员工 controller&#xff1a; EmployeeServiceImpl&#xff1a; 实现controller里的save方法&#xff0c;要调用到mapper层的insert方法 因为员工登录成功后&#xff0c;会将id封装进jwt令牌,并响应给前端 所以后续请求中前端会携带jwt令牌。通过令牌可解析出被封装的…

C++:平衡搜索二叉树(AVL)

hello&#xff0c;各位小伙伴&#xff0c;本篇文章跟大家一起学习《C&#xff1a;平衡搜索二叉树&#xff08;AVL&#xff09;》&#xff0c;感谢大家对我上一篇的支持&#xff0c;如有什么问题&#xff0c;还请多多指教 &#xff01; 文章目录 :maple_leaf:AVL树:maple_leaf:…

速盾:分享一些防御 DDoS 攻击的措施

DDoS&#xff08;分布式拒绝服务&#xff09;攻击是指攻击者通过操纵大量的计算机或网络设备&#xff0c;向特定的目标发起大规模的网络流量&#xff0c;以消耗目标网络资源&#xff0c;造成网络服务不可用的攻击行为。为了保护网络免受DDoS攻击的影响&#xff0c;组织和个人可…