Jenkins-配置使用ssh拉取仓库代码,配置自动化构建打包(三)(云效)

文章目录

  • 准备
    • 注意:
    • 流程:
  • 检查之前是否配置过与代码仓库的连接
  • 生成密钥对
  • 手动在服务器中与代码仓库建立连接以生成 Known hosts file
  • 代码仓库端添加公钥
  • Jenkins System-Publish over SSH中添加私钥
  • Jenkins中创建项目,并使用私钥添加ssh凭据
  • 构建项目

准备

注意:

如果你确定你的Jenkins使用的是root用户(这里指的是在Linux系统中的用户,不是Jenkins的登录用户),则不需要切换用户直接使用root用户操作"生成密钥对"之后的即可。

如果你不确定你的Jenkins使用的是root用户还是Jenkins用户,则建议分别使用两个账户都去操作一遍。

如果未使用正确的用户配置密钥对,则无法跟代码仓库完成验证,产生 No RSA host key is known for codeup报错,进而无法从代码仓库拉取项目代码。

如果未使用正确的用户进行一次代码仓库的连接,则可能出现known_hosts file does not exist错误。

构建项目中使用的环境可以参考栏目内的环境搭建的文章

流程:

检查之前是否配置过与代码仓库的连接 > 生成密钥对 > 测试与代码仓库的连接 > 代码仓库端添加公钥 > jenkins系统管理-System-Publish over SSH中添加私钥 > Jenkins中创建项目,并使用私钥添加ssh凭据 > 手动在服务器中与代码仓库建立连接以生成 Known hosts file > 自动化编译并构建项目

检查之前是否配置过与代码仓库的连接

注意:确保Jenkins使用的是root账户,如果不是请切换到Jenkins使用的账户

  • 检查之前是否配置过与代码仓库的连接
    我这里使用的是阿里云的云效,如果是其他代码仓库,则需要替换。
    现在只是测试连接,不用进行连接,输入"no" 取消即可

如果是连接过代码仓库,则直接操作"生成密钥对"中的查看公钥与私钥即可

# 未连接过情况,则会进行确认
root@yx-PowerEdge-R730:~# ssh -T git@codeup.aliyun.com
The authenticity of host 'codeup.aliyun.com (118.31.165.50)' can't be established.
RSA key fingerprint is SHA256:yEGmgQc3QAvDvoKwmmQWi9vSt/fE.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?  # 输入no,有这个提示则代表当前用户没有与代码仓库建立过连接# 连接过情况,则会输出欢迎语句
jenkins@bdf796726e0a:/$ ssh -T git@codeup.aliyun.com # 这里是云效地址,如果是其他代码仓库,则需要替换
Welcome to Codeup, zhangbz! # Github输出
You’ve successfully authenticated, but GitHub does not provide shell access 。

生成密钥对

  1. 检查用户
    如果不确定可以查看系统现有账户,如果存在jenkins用户,则建议先切换到Jenkins用户
  • 对于非容器化
root@yx-PowerEdge-R730:~# awk -F':' '{ print $1 }' /etc/passwd # 仅显示用户名列表
root@yx-PowerEdge-R730:~# cat /etc/passwd # 显示所有用户的信息
  • 对于容器
# docker exec Jenkins所在容器ID或名称 awk -F':' '{ print $1 }' /etc/passwd
root@yx-PowerEdge-R730:~# docker exec jenkins_new awk -F':' '{ print $1 }' /etc/passwd# docker exec Jenkins所在容器ID或名称 etc/passwd
root@yx-PowerEdge-R730:~# docker exec jenkins_new cat /etc/passwd
  • 我这里返回结果中包含jenkins用户
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
jenkins:x:1000:1000::/var/jenkins_home:/bin/bash
  1. 切换到jenkins用户
    我这里是容器化部署的Jenkins
  • 容器化Jenkins操作,非容器化部署的忽略这一步
# docker exec Jenkins所在容器ID或名称 bin
root@yx-PowerEdge-R730:~# docker exec -it jenkins_new bash # 进入容器
root@bdf796726e0a:/#  #root后发生了变化,代表进入成功,此时为root用户进入的容器
  • 切换到jenkins用户
    从这里能看出,如果是容器化则@后为你的容器ID,如果不是容器化则@后为你的机器名
# 非容器化
root@yx-PowerEdge-R730:/# su jenkins # 切换用户
jenkins@yx-PowerEdge-R730:/$ #  @前的用户名变为Jenkins,则表示切换成功# 容器化
root@bdf796726e0a:/# su jenkins # 容器内切换用户
jenkins@bdf796726e0a:/$ #  @前的用户名变为Jenkins,则表示切换成功
  1. 生成密钥对
  • 从新建立密钥
# 生成密钥对
jenkins@bdf796726e0a:/$ ssh-keygen -t rsa -C "jenkins"Generating public/private rsa key pair.
Enter file in which to save the key (/var/jenkins_home/.ssh/id_rsa): # 这里直接回车即可
Created directory '/var/jenkins_home/.ssh'.
Enter passphrase (empty for no passphrase): # 直接回车,不额外设置密钥密码
Enter same passphrase again: # 直接回车,确认不额外设置密钥密码
Your identification has been saved in /var/jenkins_home/.ssh/id_rsa. # 这里是你私钥的文件目录
Your public key has been saved in /var/jenkins_home/.ssh/id_rsa.pub. # 这里是你公钥的文件目录
The key fingerprint is:
SHA256:tUB6SjLnvqM7p2l+bmHUZGNqUyyOPmXGyiMp3tC9xNA root@linuxcool.com
The key's randomart image is:
+---[RSA 2048]----+
|       ..        |
|      .oB        |
|    +++Oo..      |
|   ..E@o.o .     |
|  .++Bo.S .      |
|..o.*=o          |
|..o..+o.         |
| . .oo=.         |
|   o*Xo.         |
+----[SHA256]-----+# 使用上面的文件目录路径查看公钥
jenkins@bdf796726e0a:/$ cat /var/jenkins_home/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2 # 示例展示,如果有ssh-rsa开头的字符串则代表成功# 使用上面的文件目录路径查看私钥
jenkins@bdf796726e0a:/$ cat /var/jenkins_home/.ssh/id_rsa
-----BEGIN OPENSSH PRIVATE KEY----- # 有此字符串输出则代表成功
  • 已连接过但不知道密钥在哪
# 全目录搜索密钥文件,优先使用Jenkins用户的密钥
root@bdf796726e0a:/# find / -name *id_rsa*
/root/.ssh/id_rsa # root用户的私钥
/root/.ssh/id_rsa.pub # root用户的公钥
/var/jenkins_home/.ssh/id_rsa # jenkins用户的私钥
/var/jenkins_home/.ssh/id_rsa.pub # jenkins用户的公钥

手动在服务器中与代码仓库建立连接以生成 Known hosts file

  • 测试与代码仓库的连接,以生成known_hosts file
# 连接前:
jenkins@bdf796726e0a:/$ ls /var/jenkins_home/.ssh
id_rsa  id_rsa.pub# 使用Jenkins用户连接,出现欢迎信息则代表成功
jenkins@bdf796726e0a:/$ ssh -T git@codeup.aliyun.com
The authenticity of host 'codeup.aliyun.com (118.31.165.50)' can't be established.
RSA key fingerprint is SHA256:yEGQNVrcCF2s07KwmmQWi9vSt/fE.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? # 输入yes确认
Welcome to Codeup, zhangbz!# 连接后,多了一个konwn_hosts文件
jenkins@bdf796726e0a:/$  ls /var/jenkins_home/.ssh
id_rsa  id_rsa.pub  known_hosts

代码仓库端添加公钥

  1. 添加IP白名单
    路径:云效-工作台-代码管理-全局设置-IP白名单,添加对IP地址
    如果是其他代码仓库请自行查找相关教程
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 添加ssh公钥
    路径:个人设置-SSH公钥-点击添加
    在这里插入图片描述
    在这里插入图片描述

Jenkins System-Publish over SSH中添加私钥

路径:Dashboard - 系统管理 - 系统配置(System) - Publish over
在key中填入私钥,点击保存
在这里插入图片描述

Jenkins中创建项目,并使用私钥添加ssh凭据

这里以Android项目为例
路径:Jenkins > Dashboard > 新建项目

  1. 输入任务名称
  2. 选择构建一个自由风格的软件项目,点击确定
    在这里插入图片描述
  3. 自定义丢弃旧的构建
    在这里插入图片描述
  4. 源码管理
    选择Git
    在这里插入图片描述
    Repository URL 填入复制的ssh链接
    在这里插入图片描述
    Credentials 点击添加,点击Jenkins
    在这里插入图片描述
    类型 选择SSH,Passphrase 填入之前获取到的私钥,点击保存
    在这里插入图片描述
    注意:
    如果Jenkins跟代码仓库连接没有问题的话,这里是不会显示任何报错,有报错就需要切换之前说的用户,再重新生成并配置密钥
    在这里插入图片描述
    假设Credentials 内选择 无,就会显示连接失败的报错
    在这里插入图片描述
  5. 自定义代码分支,想要拉取哪个分支的代码就填哪个分支的名称,默认为master
    在这里插入图片描述
  6. 自定义Build Steps
    由于此项目为Android项目,所以选择Gradle环境
    点击添加构建步骤;选择Invoke Gradle script;Tasks内填入"clean" “assembleRelease”
    说明:assembleRelease # 打全渠道release包
    在这里插入图片描述
  7. 完成
    确认无误后点击保存

构建项目

回到Jenkins主界面,点击进入刚刚创建的项目,点击左侧的立即构建
这里拿已经可以正常构建的项目举例
在这里插入图片描述
点击下方Builds内的条目,即可进入这次构建的详细界面
点击控制台输出,即可查看此次构建的详细日志记录
在这里插入图片描述

至此已完成一个Jenkins的自动化构建流程。Jenkins将会在点击立即构建后,从代码仓库拉取代码,并使用指定的环境进行编译打包,最后生成一个apk文件

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

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

相关文章

镭眸ILS-F13测量型激光雷达:超远距激光雷达专家

镭眸F13是一款超远距离测量型激光雷达,专为需要在超远距离内实现移动物体轮廓数据测量的用户设计。它能够以25Hz的扫描频率,在120米内提供3厘米的扫描精度,解决了现有传感器无法满足的测量距离问题。与市场上其他产品如西克(SICK&…

windows安装deepin双系统

最近入手了一台中柏N100的小主机,本来只想当个机顶盒,没想到性能还可以,就打算用它做一些日常的办公,无聊时想着能不能再装个Linux,就去Deepin官网查看了下方法, 在此记录 另外,欢迎来我的博客…

SAP-FICO 月结流程

一、财务月结 1、资产会计-固定资产折旧计提AFAB 正式运行之前,先测试运行,没有问题就正式运行 可以看到,没有错误 因为正式系统的资产会过于庞大,一般都是后台运行资产的折旧 点击程序--后台执行 AFBP查看运行日志&#xff0c…

深度学习(八) TensorFlow、PyTorch、Keras框架大比拼(8/10)

一、深度学习框架概述 深度学习框架在当今人工智能和机器学习领域中占据着至关重要的地位。其中,TensorFlow 由 Google 开发,自 2015 年发布以来,凭借其灵活的计算图、自动微分功能以及跨平台支持等特点,迅速成为主流深度学习框架…

JVM—类加载器、双亲委派机制

目录 什么是类加载器 类加载器的分类 Bootstrap启动类加载器 通过启动类加载器加载用户jar包 Extension扩展类加载器和Application应用程序类加载器 通过扩展类加载器加载用户jar包 双亲委派机制 打破双亲委派机制 自定义类加载器 线程上下文类加载器 Osgi框架的类加…

flask第一个应用

文章目录 安装一、编程第一步二、引入配置三、代码解析 安装 python环境安装的过程就不重复赘述了,flask安装使用命令pip install Flask即可,使用命令pip show Flask查看flask版本信息 提示:以下是本篇文章正文内容,下面案例可供…

享元模式-实现大颗粒度对象缓存机制

详解 享元模式是一种结构型设计模式,其主要目的是通过共享尽可能多的相同部分来有效地支持大量细粒度的对象。它通过将对象的属性分为内在属性(可以共享、不随环境变化的部分)和外在属性(根据场景变化、不能共享的部分&#xff0…

Flutter学习笔记(一)-----环境配置

一、android 环境 android这边可以参照godot的配置 1.装java Java Downloads | Oracle x64 Compressed Archive :下载后直接解压到某个位置,不用安装 x64 installer: 下载后双击安装 注意:不要去百度直接搜Java安装,这样你最多安…

JetBrains Clion Idea 等缓存文件和配置文件迁移

JetBrains 缓存文件和配置文件迁移 文件默认路径 缓存文件默认路径: %userprofile%/AppData/Local/JetBrains/应用名 如 C:/Users/wbl/AppData/Local/JetBrains/CLion2021.3日志文件默认路径:默认在配置文件目录下的log文件夹 %userprofile%/AppData…

《AI产品经理手册》——解锁AI时代的商业密钥

在当今这个日新月异的AI时代,每一位产品经理都面临着前所未有的挑战与机遇,唯有紧跟时代潮流,深入掌握AI技术的精髓,才能在激烈的市场竞争中独占鳌头。《AI产品经理手册》正是这样一部为AI产品经理量身定制的实战宝典,…

2024年最全2024年最系统的网络安全自学路线,学完即可就业_安全学习路线(2),2024年最新你掌握了多少

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长&#xf…

前端拖拽库方案之react-beautiful-dnd

近期,知名 React 拖拽库 react-beautiful-dnd 宣布了项目弃用的决定,未来将不再维护。这一决定源于其存在的缺陷与局限性,促使作者转向开发一个更加现代化的拖拽解决方案——Pragmatic drag and drop(下面会介绍)&…

【深度学习】实验 — 动手实现 GPT【四】:代码实现Transformer、代码实现GPT模型、训练大型语言模型(LLM)

【深度学习】实验 — 动手实现 GPT【四】:代码实现Transformer、代码实现GPT模型、训练大型语言模型(LLM) 在 Transformer 块中连接注意力层和线性层代码实现Transformer 块 代码实现GPT模型文本生成训练模型计算训练集和验证集的损失 训练大…

我在命令行下剪辑视频

是的,你不需要格式工厂,你也不需要会声会影,更不需要爱剪辑这些莫名其妙的流氓软件,命令行下视频处理,包括剪辑,转码,提取,合成,缩放,字幕,特效等…

海外云手机是什么?对外贸电商有什么帮助?

在外贸电商领域,流量引流已成为卖家们关注的核心问题。越来越多的卖家开始利用海外云手机,通过TikTok等社交平台吸引流量,以推动商品在海外市场的销售。那么,海外云手机到底是什么?它又能为外贸电商卖家提供哪些支持呢…

MATLAB绘图|关于三维制图,给初学者的建议

给MATLAB的关于绘制三维图的建议 文章目录 基础知识使用基本函数设置轴标签和标题调整视角添加网格和图例绘制子图灵活使用 hold on 和 hold off保存图形总结 基础知识 了解三维坐标系统:三维图形有三个轴(x、y、z),确保你理解如…

centos7配置keepalive+lvs

拓扑图 用户访问www.abc.com解析到10.4.7.8,防火墙做DNAT将访问10.4.7.8:80的请求转换到VIP 172.16.10.7:80,负载均衡器再将请求转发到后端web服务器。 实验环境 VIP:负载均衡服务器的虚拟ip地址 LB :负载均衡服务器 realserv…

opencv python笔记

OpenCV课程 OpenCV其实就是一堆C和C语言的源代码文件,这些源代码文件中实现了许多常用的计算机视觉算法。 OpenCV的全称是Open Source Computer Vision Library,是一个开放源代码的计算机视觉库OpenCV最初由英特尔公司发起并开发,以BSD许可证授权发行,可以在商业和研究领域中…

金融标准体系

目录 基本原则 标准体系结构图 标准明细表 金融标准体系下载地址 基本原则 需求引领、顶层设计。 坚持目标导向、问题导向、结果 导向有机统一,构建支撑适用、体系完善、科学合理的金融 标准体系。 全面系统、重点突出。 以金融业运用有效、保护有力、 管理高…

(实战)WebApi第10讲:Swagger配置、RESTful与路由重载

一、Swagger配置 1、导入SwashBuckle.AspNetCore包 2、在.NET Core 5框架里的startup.cs文件里配置swagger 3、在.NET Core 6框架里的Program.cs文件里配置swagger 二、RESTful风格:路由重载,HttpGet()括号中加参数 (1)原则&…