使用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用户名/密码 ,如下图所示【开发去改造】 不怎么地安全,还是算了把

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

  • 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
        '''
        }
    }

}

文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/6863

(0)
杰斯的头像杰斯
上一篇 2023年1月20日 下午2:50
下一篇 2023年1月31日

相关推荐

  • Shell脚本——提取目录名和文件名

    在许多场景下,我们都需要对文件名称或者文件所在的目录进行操作,已达到我们业务目的。通常的操作是由路径中提取文件名,从路径中提取目录名,提取文件后缀等等一系列的操作。 一、${} 1.${var##*/} 2.${var##*.} 3.${var#*.} 4.${var%/*} 5.${var%%.*} 6.总结 其实 ${} 并不是专门为提取文件名或目录名的…

    2024年2月18日
    19100
  • centos 7 NTP 内网时间定时同步

    一、环境 二、ntp安装服务 server服务器配置: client服务器配置:(如果有多台client服务器,亦可如此配置) 四、启动NTP服务&开机启动设置(包括server服务器和client服务器) 五、server服务器防火墙配置 六、client服务器手动从server服务器进行时间同步 在server服务器上执行date命令,查看时间 …

    2023年6月14日
    21200
  • find命令排除某些目录或文件

    使用-prune开关。例如,如果要排除misc目录,只需将a添加-path ./misc -prune -o到您的find命令中: find . -path ./misc -prune -false -o -name ‘*.txt’ 这是带有多个目录的示例: find . -type d \( -path dir1 -o -path dir2 -o -pat…

    2023年6月16日
    46200
  • Nginx升级版本

    一:宝塔Nginx升级 在宝塔界面点击软件管理->运行环境->Nginx的设置 选择切换版本->选择想要升级的版本,点击切换等待安装成功 二:Linux下升级nginx版本(源码包方式) 方式:使用源码包的方式 老版本:nginx/1.13.0 新版本:nginx/1.22.0 一:下载源码包 wget http://nginx.org/d…

    2022年8月2日
    46700
  • Linux下安装配置maven仓库

    1、安装wget命令 如果需要通过使用wget命令,直接通过网络下载maven安装包时,需要在linux系统中安装wget命令。 2、下载maven安装包 在/usr/local/下创建一个maven文件: mkdir /usr/local/maven 切换到安装目录,即新建的文件中: 下载安装: 3、解压缩maven 4、配置maven环境变量 添加环境变…

    2022年6月20日
    89500

在线咨询: QQ交谈

邮件:712342017@qq.com

工作时间:周一至周五,8:30-17:30,节假日休息

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