【测试平台】打包 jenkins配置和jenkinsfile文件
背景:
当打包机环境配置完成后,需要挂到master的jenkins中,完成调度。
jenkins启动
命令行直接启动即可。
nohup java -jar /usr/local/opt/jenkins/libexec/jenkins.war --httpListenAddress=0.0.0.0 --httpPort=80 appending output to nohup.out
jenkins配置从节点
管理系统->节点列表->新增节点
端口号(需要和IT 给开的端口号配置一致,不一定是图中的端口号)和 java环境变量
配置完成后看连接日志
成功这个样子,有报错的话 根据报错修改配置选项
jenkins新建一个jenkins job
可以选择复制一个现有的工程项目名字进行修改
手工构建jenkins Job
JenkinsfIle文件
shell本质jenkins的流水线语法,具体语法可以自己查下。
前置混淆操作
后置混淆操作
FQA
1.挂节点机器报链接错误
原因:远程链接默认端口号为22,如果开的远程端口号不是22,是其他值,那就会报链接错误。需要需要设定端口
解决方案
2.挂节点机器报java环境变量错误
报错原因:因为节点机器配置的java环境变量不在/usr/local/java/bin/java路径上
解决方案:
Manage Jenkins > Manage Nodes and Clouds > Configure node > Advanced section under Launch Agents via ssh block > "update Java path in there"
[08/23/23 10:43:44] [SSH] Checking java version of /usr/local/java/bin/java
Couldn't figure out the Java version of /usr/local/java/bin/java /usr/local/java/bin/java
bash: /usr/local/java/bin/java: No such file or directoryjava.io.IOException: Java not found on hudson.slaves.SlaveComputer@3dd3ad4b. Install Java 8 or Java 11 on the Agent.at hudson.plugins.sshslaves.JavaVersionChecker.resolveJava(JavaVersionChecker.java:83)at hudson.plugins.sshslaves.SSHLauncher.lambda$launch$0(SSHLauncher.java:453)at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)at java.base/java.lang.Thread.run(Thread.java:829)
[08/23/23 10:43:44] Launch failed - cleaning up connection
[08/23/23 10:43:44] [SSH] Connection closed.
3.挂节点机器提示权限错误
原因:/home/admin/.jenkins使用的是root权限创建的,所以admin账号没有相关权限
解决方案:
[root@bogon admin]# chown -R admin:admin /home/admin/.jenkins
报错详情:
[08/23/23 10:49:28] [SSH] Starting sftp client.
[08/23/23 10:49:28] [SSH] Copying latest remoting.jar...
java.io.IOException: Could not copy remoting.jar into '/home/admin/.jenkins' on agentat hudson.plugins.sshslaves.SSHLauncher.copyAgentJar(SSHLauncher.java:733)at hudson.plugins.sshslaves.SSHLauncher.lambda$launch$0(SSHLauncher.java:456)at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.io.IOException: Could not copy remoting.jar to '/home/admin/.jenkins/remoting.jar' on agentat hudson.plugins.sshslaves.SSHLauncher.copyAgentJar(SSHLauncher.java:725)... 5 more
Caused by: com.trilead.ssh2.SFTPException: Permission denied (SSH_FX_PERMISSION_DENIED: The user does not have sufficient permissions to perform the operation.)at com.trilead.ssh2.SFTPv3Client.openFile(SFTPv3Client.java:1201)at com.trilead.ssh2.SFTPv3Client.createFile(SFTPv3Client.java:1074)at com.trilead.ssh2.SFTPv3Client.createFile(SFTPv3Client.java:1055)at com.trilead.ssh2.jenkins.SFTPClient.writeToFile(SFTPClient.java:102)at hudson.plugins.sshslaves.SSHLauncher.copyAgentJar(SSHLauncher.java:718)... 5 more
[08/23/23 10:49:28] Launch failed - cleaning up connection
[08/23/23 10:49:28] [SSH] Connection closed.
4.构建打包jenkins 报git 相关错误
原因:因为是使用root账号去安装git 和配置密钥的,所以admin账号无法拉取git
解决方案:使用admin账号进行配置git和密钥
Started by user admin
Obtained script/Jenkinsfiles/android-hertz/Jenkinsfile from git https://git.joyme.sg/joymeqa/odin.git
[Pipeline] Start of Pipeline
[Pipeline] node
Running on 10.61.153.59 in /home/admin/.jenkins/workspace/android-7hz[Pipeline] {
[Pipeline] VersionNumber
[Pipeline] withEnv
[Pipeline] {
[Pipeline] stage
[Pipeline] { (clean source)
[Pipeline] sh
+ git clean -df
+ git reset --hard
HEAD is now at ba42594 change by odin auto builder
+ git pull --rebase
Host key verification failed.
fatal: Could not read from remote repository.Please make sure you have the correct access rights
and the repository exists.[Pipeline] }[Pipeline] // stage[Pipeline] stage
[Pipeline] { (building)
Stage "building" skipped due to earlier failure(s)[Pipeline] }[Pipeline] // stage[Pipeline] stage
[Pipeline] { (Declarative: Post Actions)
[Pipeline] sh
+ '[' nujoom_1.5.90_gp_rb '!=' master ']'
+ git clean -df
+ git reset --hard
HEAD is now at ba42594 change by odin auto builder
+ git checkout master
Already on 'master'
+ git branch -D nujoom_1.5.90_gp_rb
Deleted branch nujoom_1.5.90_gp_rb (was 78c6a5a).[Pipeline] }[Pipeline] // stage[Pipeline] }[Pipeline] // withEnv[Pipeline] }[Pipeline] // node[Pipeline] End of PipelineERROR: script returned exit code 1
Finished: FAILURE
5.构建时ssh 10.61.158.55 机器报错Host key verification failed
+ ssh building@10.61.158.55 mkdir -p /Users/building/odin-h5ai/android-charmchat-sockpuppet/CharmChat/charmchat_1.0.0_gp_rb/20230829.7
Host key verification failed.
Error when executing failure post condition:
hudson.AbortException: script returned exit code 255at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.handleExit(DurableTaskStep.java:664)at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.check(DurableTaskStep.java:610)at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.run(DurableTaskStep.java:554)at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)at java.base/java.lang.Thread.run(Thread.java:829)
排查方法:手工在虚拟打包机器上, 使用admin的账号,进行上面的命令。如果需要设置密码,那就说明没有配置ssh免登陆
ssh building@10.61.158.55 mkdir -p /Users/building/odin-h5ai/android-charmchat-sockpuppet/CharmChat/charmchat_1.0.0_gp_rb/20230829.7
解决方法:
-
虚拟机器上执行
[admin@bogon lastet]$ cd ~/.ssh
[admin@bogon .ssh]$ ll
total 12
-rw------- 1 admin admin 1675 Aug 23 11:43 id_rsa
-rw-r--r-- 1 admin admin 395 Aug 23 11:43 id_rsa.pub
-rw-r--r-- 1 admin admin 363 Aug 23 14:42 known_hosts
将虚拟机的id_rsa.pub 文件download以后 上传到master 机器上。必须是复制文件的形式,否则会报错
-
master机器上执行
一定要追加写入,不要重新写入,否则所有的都需要重新弄。不放心的话可以提前备份一份/Users/building/.ssh/authorized_keys文件
cat id_rsa.pub >>/Users/building/.ssh/authorized_keys
-
虚拟服务器上操作,检查配置是否生效
6.构建时jenkins提示JAVA_HOME有问题
-
解决方案1:odin/script/Jenkinsfiles/android/Jenkinsfile 脚本中声明
export PATH=/home/admin/jdk-11.0.20+8/bin/:$PATH
-
解决方案2:
报错详情
构建类型: bundleOuterRelease
构建分支: nujoom_1.5.90_gp_rb
======java========
./bloodeye/odinAutoBuilder: line 9: java: command not foundERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.
-
构建时报错无法获取到网络资源libimcore-1.2.12.aar文件
-
报错信息:
-
FAILURE: Build completed with 3 failures.1: Task failed with an exception. ----------- * What went wrong: Execution failed for task ':app:checkHertzOuterReleaseDuplicateClasses'. > Could not resolve all files for configuration ':app:hertzOuterReleaseRuntimeClasspath'.> Failed to transform libimcore-1.2.12.aar (com.im.live:libimcore:1.2.12) to match attributes {artifactType=enumerated-runtime-classes, org.gradle.category=library, org.gradle.libraryelements=jar, org.gradle.status=release, org.gradle.usage=java-runtime}.> Could not download libimcore-1.2.12.aar (com.im.live:libimcore:1.2.12)> Could not get resource 'http://maven.linkv.fun/repository/liveme-android/com/im/live/libimcore/1.2.12/libimcore-1.2.12.aar'.> Read timed out
-
排查:直接在虚拟服务器上, 访问 对应的下载地址,可以访问通,但是下载非常慢。
-
原因:这个访问链接linkv 超时,目前解决不了,遇到这种报错,就登录打包机上传该aar文件即可
-
临时方案:手工mac本地下载libimcore-1.2.12.aar文件,手工上传到打包服务器中
cd /home/admin/.gradle/caches/modules-2/files-2.1/com.im.live/libimcore/1.2.12
mkdir 7e494aecb44925457b4cc28ed98bca8ba12f3e67
-
终极解决方案:联系IT部门(切换网络出口,服务器刚才是香港出口访问的,咱们办公电脑是新加坡出口访问的,切换到新加坡出口就可以下载了)
7.构建时报错chmod: cannot access
chmod: cannot access ‘/home/admin/ramdisk/android-charmchat/bloodeye/odinAutoBuilder’: No such file or directory
原因:因为对应的/home/admin/ramdisk/ 目录下 权限所有为root,而jenkins构建使用的是admin,所以提示无权限
解决方案:
chown -R admin:admin /home/admin/ramdisk/
8.构建时报错workspace/JOB_NAME@2
解决方案:
-
删除/home/admin/.jenkins/workspace 下所有对应的 JOB_NAME@ 的文件夹。 我当时试这个不好使
-
重新新建一个job,换一个名字。这个当时好使了。相当于 上面的job 彻底不要了
相关文章:
【测试平台】打包 jenkins配置和jenkinsfile文件
背景: 当打包机环境配置完成后,需要挂到master的jenkins中,完成调度。 jenkins启动 命令行直接启动即可。 nohup java -jar /usr/local/opt/jenkins/libexec/jenkins.war --httpListenAddress0.0.0.0 --httpPort80 appending output to n…...
Leetcode224 -- 基本计算器及其拓展
题目分析: 其实这个计算器的实现并不难,因为除了括号就剩下加减法嘛,括号肯定比加减法先执行,但是加减法是同级的,只是会改变数字的正负号而已,所以实现的逻辑并不是很难,我们只需要一个栈&…...
python的lambda实用技巧
lambda表达式 lambda表达式是一种简化的函数表现形式,也叫匿名函数,可以存在函数名也可以不存在。 使用一行代码就可以表示一个函数: # 格式 lambda arg[参数] : exp[表现形式] # 无参写法 lambda : "hello" # 一般写法 lambda …...
VB中的资源文件(Resource File)及其用途
在Visual Basic(VB)中,资源文件(Resource File)是一种特殊的文件,用于存储应用程序中使用的非代码资源。这些资源可以是字符串、图像、图标、音频文件、视频文件等。资源文件的主要用途是使应用程序的管理和…...
【vue】11.Vue 3生命周期钩子在实践中的具体应用
Vue 3的生命周期钩子为开发者提供了在不同阶段操作组件的强大能力。本文将带您了解每个生命周期钩子的使用场景,并通过简单的案例来展示它们在实际开发中的应用。 1. 创建阶段(Creation Hooks) beforeCreate 进行一些初始化操作,…...
1.5 新特性 C++面试常见问题
1.5.1 说说C11的新特性有哪些? C11 引入了许多重要的新特性和增强,目的是提升语言的性能、可读性和简洁性。以下是 C11 的一些主要新特性: 1. 自动类型推导 使用 auto 关键字,可以让编译器自动推导变量的类型。auto x 42; …...
[mysql]子查询的概述和分类及单行子查询
子查询引入 查询的基本结构已经给大家了,子查询里面也是有一些新的内容,子查询其实就是在查询中嵌套另一个查询,叫嵌套查询可能大家更容易理解一点..,类似与FOR循环和FOR循环的嵌套,这一章是我们查询的最难的部分,大家 难度是查询的顶峰,多表查询和子查询是非常重要,SQL优化里…...
SpringMVC执行流程(视图阶段JSP、前后端分离阶段)、面试题
目录 1.SpringMVC执行流程分为以下两种 2.非前后端分离的SpringMVC的执行流程 3.前后端分离的项目SpringMVC执行流程 4. 面试题 1.SpringMVC执行流程分为以下两种 2.非前后端分离的SpringMVC的执行流程 流程图: 更加生动的描述: DisPatcherServlet…...
宠物空气净化器有用吗?有哪几款吸毛效果好且低噪的推荐
伴随着天气越来越凉,照常来说,猫咪掉毛的频率应该会变少,但是为什么我家的猫咪还在掉很多毛。 现在就连南方地区都要加外套了,但是猫咪掉毛太多,都不敢穿纯棉面料的衣服,还有本来想着顺应天气的变化&#…...
linux -磁盘管理命令
学会用fidsk -l blkid lskid 就够用 格式化文件系统:mkfs -t <文件系统格式> /dev/vdb1 1..df -Th 查看磁盘挂载情况。 2.fdisk 磁盘分区命令 示例一:fdisk -l 查看磁盘分区,箭头指出分区信息 示例二:创建分区eg…...
[Chrome插件开发]关于报错Service worker registration failed. Status code: 15
manifest.json中不能使用ts: "background": {"service_worker": "background.ts"}只能使用js "background": {"service_worker": "background.js"}在vite.config.js中增加以下配置,可以将…...
uniapp封装movable-area+movable-view组件,实现悬浮按钮可拖动,自动吸附边缘效果,自动向两边靠拢
兼容H5、App、微信小程序 子组件 /components/ShopCar/ShopCar.vue <template><view class"ShopCar"><movable-area class"movableArea" v-if"isShow"><movable-view class"movableView" :position"posi…...
音频重采样(libresample)
https://github.com/minorninth/libresample USB audio同步问题及Jitter分析_usb mic i2s 时钟不同步-CSDN博客 是的,电脑和 USB 摄像头之间的 UAC(USB Audio Class)传输,**可能会因为两边时钟不同步而引起破音问题**。时钟不同…...
使用Python来下一场雪
具体效果:(大雪缓缓下落) 完整代码: import pygame import random# 初始化 Pygame pygame.init()# 设置窗口 width, height 800, 600 screen pygame.display.set_mode((width, height)) pygame.display.set_caption("下雪…...
Pyspark中pyspark.sql.functions常用方法(4)
文章目录 pyspark sql functionsforall 判断array是否满足allfilter 过滤zip_with 数组合并 pyspark sql functions forall 判断array是否满足all df spark.createDataFrame([(1, ["bar"]), (2, ["foo", "bar"]), (3, ["foobar", &…...
Nginx 配置基于IP 地址的 Web 服务器
Nginx 配置基于IP 地址的 Web 服务器 1.配置网卡 nmcli connection modify ipv4.address 192.168.232.130/24 ipv4.gateway 192.168.232.2 ipv4.dns 192.168.232.2 ipv4.method manual connection.autoconnect yes 2.添加ip地址 nmcli connection modify ens160 ipv4.address…...
【TVM 教程】线性和递归核
Apache TVM 是一个端到端的深度学习编译框架,适用于 CPU、GPU 和各种机器学习加速芯片。更多 TVM 中文文档可访问 → https://tvm.hyper.ai/ 作者:Tianqi Chen 下面介绍如何在 TVM 中进行递归计算(神经网络中的典型模式)。 from…...
猫主福利大放送,双11猫奴们的购物狂欢节 养猫必备清单
双十一购物狂欢节终于来啦!铲屎官们是不是已经迫不及待想为心爱的猫咪挑选新玩具和必需品了呢?作为一名资深铲屎官,我专门为大家整理了一份双十一养猫必备清单。抓住这个难得的机会,让我们为猫咪挑选最舒适、最实用的好物吧&#…...
Linux中gcc的使用
GCC的基本概念和用途 GCC(GNU Compiler Collection)是GNU项目提供的一套编程语言编译器集合,包括了C、C、Objective-C、Fortran、Java、Ada和Go等语言的编译器。GCC广泛用于Linux和其他类Unix系统中,用于将源代码编译成可执行文件…...
React 组件 API
React 组件 API React 组件 API 是 React 应用程序开发中的核心部分,它提供了一系列的接口和方法,使得开发者能够创建和管理组件的状态、属性以及生命周期。在本篇文章中,我们将深入探讨 React 组件 API 的各个方面,包括组件的定…...
一个使用接口模式、工厂模式、模板方法模式的日志文件系统
引言: 编写一个与具体业务无关的示例代码。这个示例代码主要体现以下几个设计思想和模式: 接口模式(Interface Pattern):定义接口类,并让具体实现类去实现该接口的功能。 工厂模式(Factory Pa…...
openjdk17 C++源码是怎么给java字段赋值的
##java源码 public class OtherClass {public static int CONSTANT_O9876;public int o1234;public void dddd(){String dddd "dddd";//System.out.println(dddd);System.out.println(ddddCONSTANT_O);}} public int o1234; 在openjdk17中 C源码怎么执行这段代码…...
C++初阶(八)--内存管理
目录 引入: 一、C中的内存布局 1.内存区域 2.示例变量存储位置说明 二、C语言中动态内存管理 三、C内存管理方式 1.new/delete操作内置类型 2.new和delete操作自定义类型 四、operator new与operator delete函数(重要点进行讲解) …...
C# 企业微信机器人推送消息 windows服务应用程序的使用
C# 企业微信机器人推送消息 先添加一个机器人! 然后查看机器人就可以得到一个 webhook 特别特别要注意:一定要保护好机器人的webhook地址,避免泄漏! 然后开始写代码 ,只需要httpPost 调用一下这个地址就可以发送消息了。 首先我…...
社区交流系统设计与实现
社区交流系统设计与实现 1. 系统概述 社区交流系统是一个基于PHP和SQL的Web应用程序,旨在为用户提供一个互动交流的平台。该系统允许用户注册、发布帖子、回复帖子、查看其他用户的帖子和回复,以及管理个人资料,提高用户之间的互动和信息共享…...
【模型学习之路】手写+分析bert
手写分析bert 目录 前言 架构 embeddings Bertmodel 预训练任务 MLM NSP Bert 后话 netron可视化 code2flow可视化 fine tuning 前言 Attention is all you need! 读本文前,建议至少看懂【模型学习之路】手写分析Transformer-CSDN博客。 毕竟Bert是tr…...
Redis学习文档(常见面试题)
目录 Redis回收使用的是什么算法? Redis如何做大量数据插入? 为什么要做Redis分区? 你知道有哪些Redis分区实现方案? Redis分区有什么缺点? Redis持久化数据和缓存怎么做扩容? 分布式Redis是前期做还…...
【C++刷题】力扣-#594-最长和谐子序列
题目描述 和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。 给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度。 数组的 子序列是一个由数组派生出来的序列,它可以通过删除一些元素或不删除元素、且不改变…...
MoveIt 控制自己的真实机械臂【2】——编写 action server 端代码
完成了 MoveIt 这边 action client 的基本配置,MoveIt 理论上可以将规划好的 trajectory 以 action 的形式发布出来了,浅浅尝试一下,在 terminal 中运行 roslaunch xmate7_moveit_config_new demo.launch 报错提示他在等待 xmate_arm_control…...
C#制作学生管理系统
定义学生类 定义一个简单的类来表示学生,包括学号、姓名、性别、年龄、电话、地址。再给其添加一个方法利于后续添加方法查看学生信息。 //定义学生类 public class student {public int ID { get; set; }//开放读写权限public string Name { get; set; }public i…...
广告制作公司怎么拉业务/百度seo 优化
原文地址为: 看了保证你笑到抽筋 2010最新语录1、种草不让人去躺,不如改种仙人掌! 2、我心眼儿有些小,但是不缺;我脾气很好,但不是没有! 3、人和猪的区别就是:猪一直是猪,…...
做网站有哪些费用/网站建设黄页视频
1.Python的注释注释的目的是让阅读人员能够轻松读懂每一行代码的意义,同时也为后期代码维护提供便利。在python中,单行注释以#开头,如下所示.#第一个注释 print(Hello,Wold!)#第二个注释Python的多行注释用两个三引号 包含起来,如…...
开发商交房必备条件/seo交流论坛
之前下载vc运行库都是百度,从中关村、当下等软件网站下载,但是最近这些网站涉及到安全问题,所以从官网下载比较合适 微软官网-中文 在搜索中 搜索vc2010/2015等,搜索结果中找到xxxxxxxxxx Redistributable Package (x64)这种Redis…...
wordpress 如何修改导航链接/seo公司
“什么是数据产品经理”这个问题的本质其实是在问“数据产品经理和产品经理到底有什么区别?”,金老师先来看看他们之间的区别吧!用数据来指导产品设计已经不是什么新鲜事了,几乎所有的产品经理都需要依赖数据做产品决策——从早期产品开发时的用户研究&…...
巴音郭楞网站建设/怎么建个人网站
在分类中,和自己的父类关联public class AssessQualityIndex extends IdEntity<AssessQualityIndex> {private static final long serialVersionUID 1L; private String scoreStandard; // 评分标准private AssessQualityIndex parent; // 父级Js…...
wordpress 邮箱变更/好的seo公司营销网
一、路由基础Routing protocol 用于路由器动态寻找最优路径,并使路由器都拥有路由表,R/p 决定了数据包的上行路径,eg:RIP IGRP EIGRP OSPF,被动路由协议被分配到接口上并决定数据数据包的传送方式, Router:把一个数据包…...