jenkins X实践系列(4) —— jenkins X 构建提速

摘要:
生成器图像下载速度慢。首先,将其下载到机器上,然后将其放入本地仓库。然后,转到Jenkins的设置,修改映像地址nodejs,安装慢速配置,并使用专用服务器构建cnpm映像1FROM-Jenkins-xio/builder nodejs:2.1.2152MAINTAINERjadbeng34RUNnpminstall gcnpm--注册表=https://registry.npm.taobao.org5RUNcnpminstall-gantdaxiosbabel-plugin-importmobxmobx-reactmobx-react-devtoolsnprogressreactreact-app-rewire-lessreact-app-rewiredreact-domreact-router-domreact-scriptshistorypath6构建后,在jenkins中设置一个k8spodtemplate,并使用jenkins文件中的cnpm加速管道{agent{//使用cnpm加速标签“jenkins cnpm”}……步骤{container{sh“cnpminstall&&npmrunbuild”}}加速maven:maven配置文件的maven配置是通过secretjenkins maven设置配置的。创建mavenpod时,jenkins-maven设置将装载到/root/。m2/,并且配置文件应该是自定义的,执行:#删除旧配置kubectldeletessecretjenkins maven settings#修改配置文件,然后从file=创建新的jenkins maven settingsskubetlcreateseecretgenericjenkins小牛设置/詹金斯公司。每个构建都将从maven仓库下载jar包。为了避免重复下载,您可以安装一个pvc持久maven本地仓库。

jx是云原生CICD,devops的一个最佳实践之一,目前在快速的发展成熟中。最近调研了JX,这里为第4篇,介绍如何加入jx构建和部署。

builder镜像下载慢

先在一台机器上下载好,然后放到本地仓库,到jenkins的setting里,修改镜像地址

cnpm

nodejs安装慢

    1. 配置使用私服
    1. 构建cnpm镜像

  1 FROM jenkinsxio/builder-nodejs:0.1.215
  2 MAINTAINER jadepeng <jqpeng@iflytek.com>
  3 
  4 RUN npm install -g cnpm --registry=https://registry.npm.taobao.org
  5 RUN cnpm install -g antd axios babel-plugin-import mobx mobx-react mobx-react-devtools nprogress react react-app-rewire-less  react-app-rewired  react-dom react-router-dom react-scrip    ts history path
  6 

构建后,在jenkins里设置一个k8s pod template

enter description here

在jenkinsfile里就可以使用cnpm加速了

pipeline {
  agent {
    // 使用cnpm加速
    label "jenkins-cnpm"
  }
 ...
 
      steps {
        container('nodejs') {
          sh "cnpm install && npm run build"
      }
    }

加速maven:

maven配置文件

maven的配置文件通过secret jenkins-maven-settings配置,maven pod创建时,会将jenkins-maven-settings挂载到/root/.m2/,要自定义配置文件,执行:

  # 删除老配置
  kubectl delete secret jenkins-maven-settings 
  # 修改配置文件,然后创建新的jenkins-maven-settings
  kubectl create secret generic jenkins-maven-settings --from-file=./jenkinsx -n incubation

每次build都会从maven仓库下载jar包,为了避免重复下载,可以挂载一个pvc持久化maven本地仓库。

挂载共享cephfs-mavenrepos-pvc 到 /root/.mvnrepository

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolume
metadata:
  name: cephfs-mavenrepos-pv
  labels:
	name: cephfs-mavenrepos-pv
spec:
  capacity:
	storage: 500Gi
  accessModes:
	- ReadWriteMany
  cephfs:
	monitors: 
	- 192.168.86.156:6789
	path: /mavenrepos
	user: admin
	secretRef:
	  name: ceph-secret
	  namespace: kube-system
	readOnly: false
  persistentVolumeReclaimPolicy: Retain
EOF

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: cephfs-mavenrepos-pvc
  namespace: incubation
spec:
  accessModes:
	- ReadWriteMany
  storageClassName: ""
  resources:
	requests:
	  storage: 5Gi
  selector:
	matchLabels:
	  name: cephfs-mavenrepos-pv
EOF

创建好后,到jenkins系统配置里配置挂载信息。

nexus

添加 npm proxy

name: cnjs
address: http://r.cnpmjs.org

RUN npm i --registry=http://nexus/researchnpm/

maven镜像可以添加一个阿里、csdn等proxy,加到 maven-group

chartmuseum.jenkins-x.io访问慢

chartmuseum.jenkins-x.io 经常访问不了,可以搭建私有charts服务,新增一个ingress,域名使用chartmuseum.jenkins-x.io。

{
  "kind": "Ingress",
  "apiVersion": "extensions/v1beta1",
  "spec": {
    "rules": [
      {
        "host": "chartmuseum.jenkins-x.io",
        "http": {
          "paths": [
            {
              "path": "/",
              "backend": {
                "serviceName": "jenkinsx-charts-service",
                "servicePort": 80
              }
            }
          ]
        }
      }
    ]
  }

最核心的是,让构建容器里可以访问到这个:

  • 先修改hosts

    k8s-vip chartmuseum.jenkins-x.io

k8s-vip 要替换成K8S集群的虚拟ip或者masterip

  • 修改coredns,通过hosts插件挂载服务器的hosts文件

 63   Corefile: |
 64     .:53 {
 65         errors
 66         health
 67         hosts /etc/server-hosts {
 68             fallthrough
 69         }
 70         kubernetes cluster.local.  in-addr.arpa ip6.arpa {
 71             pods insecure
 72             upstream
 73             fallthrough in-addr.arpa ip6.arpa
 74         }
 75         prometheus :9153
 76         proxy . 192.168.75.14
 77         cache 30
 78         log
 79         loop
 80         reload
 81         loadbalance
 82     }



165       volumes:
166         - name: config-volume
167           configMap:
168             name: coredns
169             items:
170             - key: Corefile
171               path: Corefile
172         - name: server-hosts
173           hostPath:
174             path: /etc/hosts

jenkins-x 部署慢

  1. 将exposecontroller手动导入上传到jenkins-x-chartmuseum,然后修改env的requirement.yaml,
 alias: expose
  name: exposecontroller
  repository: http://jenkins-x-chartmuseum:8080
  version: 2.3.82
- alias: cleanup
  name: exposecontroller
  repository: http://jenkins-x-chartmuseum:8080
  version: 2.3.82
  1. 修改jenkinsfile
  • 减少stage
  • helm init --client-only
  • 部署不适用jx step,直接使用helm命令部署
pipeline {
  options {
    disableConcurrentBuilds()
  }
  agent {
    label "jenkins-maven"
  }
  environment {
    DEPLOY_NAMESPACE = "cog"
  }
  stages {
    stage('Update Environment') {
      when {
        branch 'master'
      }
      steps {
        container('maven') {
          dir('env') {
             sh 'helm init --client-only --stable-repo-url http://charts.iflyresearch.com/ && helm repo add release http://jenkins-x-chartmuseum:8080 && helm dependency build . && helm upgrade $DEPLOY_NAMESPACE . --install --namespace $DEPLOY_NAMESPACE'
          }
        }
      }
    }
  }
}

作者:Jadepeng
出处:jqpeng的技术记事本--http://www.cnblogs.com/xiaoqi
您的支持是对博主最大的鼓励,感谢您的认真阅读。
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

免责声明:文章转载自《jenkins X实践系列(4) —— jenkins X 构建提速》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇cat 查看文件内容FPGA Verilog HDL 系列实例--------步进电机驱动控制下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

向github项目push代码后,Jenkins实现其自动构建

配置Jenkins(添加Github服务器) 1、进入【系统管理】 --> 【系统设置】 ,找到【Github】 2、添加Github服务器 这里需要github提供一个密钥文本,我们去github创建一个   创建成功后复制下面这一串,贴到Jenkins中 选择凭据后,点击连接测试,查看是否连接上github 创建测试任务(这里...

JENKINS针对不同项目组对用户进行权限分配

权限需求因JENKINS上存有de(开发)、te(测试)、re(预发布)等三个不同环境的项目,同时因为项目需求,需要对不同的开发及测试人员配置不同的jenkins权限,即以项目为单位,对不同人员进行不同权限配置,要求如下: 1、项目都以healthcloud开头,分别以-de、-te、-re结尾,根据三类结尾可把项目分成开发、测试、预发布三类项目,同时分别...

Jenkins+maven+gitlab自动化部署之Jenkins部署(三)

 本章开始正式搭建Jenkins: 公司现在使用的jenkins版本是2.150.3,但是本次实验安装的版本我们选择最新的2.164.3(当然,当你阅读这篇文章时,此版本已经不是最新),jenkins有多种启动方式,这里就不一一介绍,本问采用yum方式部署。 一、配置yum源 [tchua@centos01 ~]$ sudo wget -O /etc/yu...

持续集成(CI):WEB自动化+Allure+Jenkins定时构建

一、allure插件安装 pytest可以通过allure集成展示优美的测试报告,同样allure也可以与Jenkins集成,并且Jenkins有构建记录,所以可以看到历史构建曲线图,通过曲线图可以清晰直观地了解到用例数的变化、用例通过率的变化、用例的执行时间的变化等等。 1.下载allure插件 访问Jenkins插件网站:http://mirrors....

interlliJ idea 不识别文件类型的解决方式

idea 支持非常多种文件类型。然而总有想不到。 近期开发jenkins 插件,jenkins 插件的页面开发大多用jelly 如何让idea识别jelly呢? ctrl+alt+s 快捷键打开配置页面。 搜索file type, 加入一个file类型,此处文件名称写jelly file 然后加入一个patterns。设置为*.jelly。 OK了 就像...

Jenkins 构建JavaHelloWorld

注意:我们知道Jenkins通过master/slave来支持分布式的job运行,这里的JavaHelloworld运行在master,即Jenkins所在的机器。 一 Java的HelloWorld程序 Ant构建脚本:c:\JavaHelloWorld\build.xml <projectname="HelloWorld"basedir="...