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

news2024/9/9 4:57:27

安装环境: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.coloradmin.cn/o/1961381.html

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

相关文章

大模型面经之bert和gpt区别

BERT和GPT是自然语言处理(NLP)领域中的两种重要预训练语言模型,它们在多个方面存在显著的区别。以下是对BERT和GPT区别的详细分析。 一、模型基础与架构 BERT: 全称:Bidirectional Encoder Representations from Trans…

系统移植(九)Linux内核移植(未整理)

文章目录 一、概念二、在linux内核源码的arch/arm/configs目录下生成FSMP1A板子对应的默认配置文件三、将自己编写的驱动通过图形化界面的方式编译到内核的镜像文件uImage中(一)拷贝myled.c和myled.h文件到linux内核源码的drivers/char目录下&#xff08…

第15周 15.1 Zookeeper简介安装及基础使用

1. Zookeeper介绍 1.1 介绍 1.2 应用场景简介 1.3 zookeeper工作原理 1.4 zookeeper特点

Canva收购Leonardo.ai,增强生成式AI技术能力

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

MyBatis-Plus自动生成代码

目录 前言一. 什么是 MyBatis-Plus1. Mybatis-Plus 的特点2. Mybatis-Plus 结构二. MyBatis-Plus 自动生成步骤1. 数据库准备2. 环境准备(1) 创建一个空的 Spring Boot 工程(2) 导入pom依赖(3) 编辑application.yml文件(4) 在启动类加入 @MapperScan 注解3. 配置代码4. 运行三.…

Hutool SoapClient 调用使用@webservice 发布的webService接口,参数传递为空

一.发布webService接口 (1)接口声明 import javax.jws.WebService;WebService public interface Calculator {String add(String a, String b);int multi(int a, int b);}(2)实现方法 import com.maxnerva.cloud.webservice.ser…

初始mybatis

一、J D B C 编程和 ORM 模 型 1.JDBC回顾 加载驱动 :导入JDBC 连接数据库的 jar包,利用CLASS.forName 加载驱动; 获取连接 : 利用 DriverManager 获取 Connection,然后创建 Statement ; 执行SQL语句 &…

算法刷题day20|回溯:39. 组合总和、40. 组合总和 II、131. 分割回文串

39. 组合总和 回溯 class Solution { private:vector<vector<int>> result;vector<int> path;void backtracking(vector<int>& candidates, int target, int sum, int startIndex) {if (sum > target) {return;}if (sum target) {result.push…

valideer,一个超强的 Python 库!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个超强的 Python 库 - valideer。 Github地址&#xff1a;https://github.com/podio/valideer 在开发应用程序时&#xff0c;数据验证是一个至关重要的环节。它确保了输入数…

【SpringBoot】5 Swagger

官网 https://swagger.io/ 介绍 Swagger 是一套基于 OpenAPI 规范构建的开源工具&#xff0c;可以帮助开发者实现设计、构建、记录、使用 Rest API。 Swagger 是一款根据 Restful 风格生成的接口开发文档&#xff0c;并且支持做测试的一款中间软件。 Swagger主要包括三部分&…

jfif怎么改成jpg?分享给大家三个小技巧!

在数字时代&#xff0c;图片是我们日常生活和工作中不可或缺的一部分。然而&#xff0c;在处理图片时&#xff0c;我们可能会遇到各种格式的问题&#xff0c;比如JFIF格式的图片在某些平台上无法直接打开或编辑。别担心&#xff0c;今天我就给大家分享三个简单实用的小技巧&…

spring自动装配读取引用jar包下的META-INF文件里的类,将其加载进spring启动容器.

总结: 0.ComponentScan默认只扫描同包、子包下的所有类, 因此扫描不到引的其他jar包依赖里的类 1.引的其他jar包依赖里的类想要被spring加载进容器, 在spring2.7之前,要把类的全类名写在自己项目包下的resources/META-INF/spring.factories下的文件中, 从spring boot2.7开…

【Linux】软连接|硬链接|当前路径(.)|上级路径(..)|硬链接不能链接目录

目录 前言 软连接 ​编辑 删除源文件 快捷应用 总结 硬链接 硬链接为何不能链接目录 为什么软连接可以 软硬链接区别 当前路径(.)和上级路径(..) ​编辑 前言 在 Linux 中&#xff0c;文件的存储位置和数据&#xff08;属性内容&#xff09;是由 inode 号来唯一标…

spring源码 bean的生命周期

问&#xff1a;谈谈对spring的理解 答&#xff1a;总分思想&#xff0c;先说对spring的总体认知&#xff0c;再说小一点的比如&#xff1a;IOC,AOP,IOC如何实现&#xff0c;生命周期&#xff0c;循环依赖等 IOC&#xff1a;控制反转 xml和注解创建对象的流程 xm文件通过IO流读…

RVC-AI声音克隆-你的声音不再是唯一

RVC是一个基于Hubert模型的AI语音转换工具&#xff0c;可以实现男女声的互换和降噪。 本文将要介绍RVC的安装和使用方法 首先感谢花儿不哭大佬带来的RVC声音克隆 花儿不哭&#xff1a; 花儿不哭的个人空间-花儿不哭个人主页-哔哩哔哩视频 (bilibili.com) RVC下载地址&#xff…

Elastic 线下 Meetup 将于 2024 年 8 月 25 号在南京举办

2024 Elastic Meetup 南京站活动&#xff0c;由 Elastic、华博集团、新智锦绣联合举办&#xff0c;现诚邀广大技术爱好者及开发者参加。 时间地点 2024 年 8 月 25 日 13:30-18:00 活动地点 南京雨花台区花神大道 17 号 华博智慧园 7 楼 智慧岛会议厅 报名地址 2024 Elasti…

稳态准直太阳光模拟器仪器光伏电池组件IV测试

太阳能模拟器电池IV测试仪、单体测试仪&#xff0c;配备匹配标准的AAA Class稳态太阳能模拟器及相关测试附件&#xff0c;可对太阳能电池片的IV性能进行测量、分级分选等&#xff1b; 介绍 AAA class太阳光模拟器整合完整的IV测量系统&#xff0c;针对各种太阳能电池的性能&a…

Redis学习[3] ——持久化

四. Redis 持久化 4.1 Redis 如何保证数据不丢失&#xff1f; 由于Redis的数据是保存在内存中&#xff0c;而内存中的数据会在Redis重启后丢失。因此&#xff0c;为了保证数据不丢失&#xff0c;Redis实现了数据持久化的机制。这个机制会将内存中的数据存储到磁盘&#xff0c…

【JVM】内存区域、垃圾回收和内存分配策略

文章目录 运行时数据区域程序计数器Java虚拟机栈栈帧Java堆方法区运行时常量池 直接内存 揭秘对象对象的内存布局对象头实例数据对齐填充 对象的访问定位 OutOfMemoryError异常Java堆溢出虚拟机栈和本地方法栈溢出方法区和运行时常量池溢出本机直接内存溢出 对象已死&#xff1…

剪画小程序:什么?刷到陈楚生的视频转换成音频这么简单!

在这个信息爆炸的时代&#xff0c;我们常常在各种平台上刷到自己喜欢的视频&#xff0c;尤其是那些有陈楚生精彩表现的视频。 而有时候&#xff0c;我们可能只想单纯地聆听他的歌声&#xff0c;不想被视频画面所干扰。 你是否曾想过&#xff0c;把刷到的陈楚生的视频转换成音频…