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

21 篇文章 3 订阅
2 篇文章 0 订阅

问题现象:

  • 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

参考:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值