当前位置: 首页 > article >正文

使用jenkins 打包前端私服代码失败的问题

问题现象:

  • jinekins 流水线在yarn 编译前端私服依赖包的时候,报错,提示

Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

【emm。。。之前的构建都是好好的,也不知道前端大哥啥时候去封装的前端代码,而且奇怪的是没有放在公共库里。。。。】

Pipeline 流水线:

pipeline{
//指定运行此流水线的节点
agent { node { label "master"}}
//流水线的阶段
stages{
    //阶段1 获取代码
    stage("拉取代码"){
        steps{    
        checkout([$class: 'GitSCM', branches: [[name: '*/develop']], extensions: [], userRemoteConfigs: [[credentialsId: 'test', url: 'git@code.xx.net:xx-n/xx-fe-n/project-a/b/soter-admin.git']]])
        }
    }
    stage("打包编译"){
        steps{
        sh '''
        source /etc/profile && /usr/local/nodejs/bin/yarn && /usr/local/nodejs/bin/yarn build --mode development
        '''
        }
    }
    stage("部署"){  
        steps{
        sh '''
        bash /root/.jenkins/a/web/web-main.shell a-admin a-web-dev
        '''
        }
    }

}

一番排错后,发现是 没有使用机器私钥文件或者 jenkins 私钥凭证 拉取 gitlab中私有封装的依赖包,从而导致打包失败

发现只有在拉取代码阶段使用了 jenjins 上凭证id test 去拉取代码; 后面打包编译阶段,没有使用jenkins私钥凭证或者机器上私钥文件

解决思路:

  • 封装的前端代码,放在公共库里【开发去改造】

  • 前端代码的package.json 文件里,指定 gitlab用户名/密码 ,如下图所示【开发去改造】 不怎么地安全,还是算了把

image-20220401232107052

  • jenkins 流水线的工作节点,使用Jenkins 添加ssh 私钥文件凭证【运维去改造】

最终,我采取了 使用Jenkins 添加ssh 私钥文件凭证 的方式,当构建结束后再自动删除 保留再机器上的私钥文件

虽说有点笨,但是短期内没有发现什么更好的额方法!!!

改造后Pipeline 流水线

pipeline{
//指定运行此流水线的节点
agent { node { label "master"}}
//流水线的阶段
stages{
    //阶段1 获取代码
    stage("拉取代码"){
        steps{    
        checkout([$class: 'GitSCM', branches: [[name: '*/develop']], extensions: [], userRemoteConfigs: [[credentialsId: 'test', url: 'git@code.xx.net:xx-n/xx-fe-n/project-a/b/soter-admin.git']]])
        }
    }

    stage("打包编译"){
        steps{
            withCredentials([sshUserPrivateKey(credentialsId: "test", keyFileVariable: 'keyfile')]) { 
        sh '''
        cp -rp ${keyfile} /root/.ssh/id_rsa
        chmod 600 /root/.ssh/id_rsa
        source /etc/profile && /usr/local/nodejs/bin/yarn && /usr/local/nodejs/bin/yarn build --mode development
        rm -rf /root/.ssh/id_rsa
        '''}
         }
     }

    stage("部署"){  
        steps{
        sh '''
        bash /root/.jenkins/a/web/web-main.shell a-admin a-web-dev
        '''
        }
    }

}

备注: 添加的凭证类型

image-20220417214939990

参考:

  • Jenkins管道中使用SSH凭证 Jenkins管道中使用SSH凭证_jenkins sshuserprivatekey-CSDN博客

  • Jenkins的凭证管理 Jenkins的凭证管理_jenkins secret text-CSDN博客


http://www.kler.cn/a/297470.html

相关文章:

  • A Comprehensive Survey on Graph Neural Networks笔记
  • 【Python 千题 —— 算法篇】字符串替换
  • 编译win2k3简易教程(202409)
  • 紫色UI趣味测试小程序源码,包含多种评测
  • vue3实现拖拽移动位置,拖拽过程中鼠标松开后元素还吸附在鼠标上并随着鼠标移动
  • 2409wtl,wtl与ddx
  • 服务器监控工具都是监控服务器的哪些性能和指标
  • 【文心智能体】通过工作流使用知识库来实现信息查询输出,一键查看旅游相关信息,让出行多一份信心
  • 【重学 MySQL】五、MySQL 的卸载
  • 数据结构:图
  • kubernetes集群部署Confluence 7.2.0+mysql 5.7(自测有效)
  • 【MySQL】—— MySQL命令行客户端介绍
  • 【Python知识宝库】Python中的日期和时间处理:datetime模块详解
  • FPGA随记——OSERDESE2和IERDESE2
  • 论文风向变了!迁移学习+多模态融合才是王道!性能爆炸好
  • TCP Analysis Flags 之 TCP Port numbers reused
  • 用 Python 创建一个简单的速算挑战游戏
  • Git-下载的zip包项目重新指向github项目地址
  • 黑神话 Java,Solon v2.9.2 发布
  • Linux:目录及文件管理