关于jenkins:Jenkins-忘记密码密码重置

I. 以后环境OS Version : AlmaLinux release 8.8Jenkins Version : 2.414.1II. 操作步骤2.1 批改配置文件SSH 登录服务器后盾,批改以下配置文件 vim /var/lib/jenkins/config.xml把字段 useSecurity 的值批改为 false,如下 Hello重启 Jenkins 服务 systemctl restart jenkins2.2 批改用户明码关上前台首页,顺次进入系统管理 -> 平安 -> 全局平安配置,在“认证(Authentication)”-> 平安域 -> 抉择“Jenkins专有用户数据库”,勾销勾选“容许用户注册”,在受权策略 -> 抉择“登录用户能够做任何事”,勾销“匿名用户具备可读权限”,实现后点“保留”如下图 返回系统管理 -> 平安 -> 治理用户,在用户列表找到要批改明码的用户,点配置如下图 找到明码项,输出你的明码,实现后点“保留”。从新关上 Jenkins 登录页,验证你批改后的明码。

September 18, 2023 · 1 min · jiezi

关于jenkins:面对复杂的系统与众多的插件如何确保Jenkins项目的安全性

CloudBees在Jenkins/CBCI生态系统上建设了一个专门的平安团队。对于该团队的公开信息能够在从此链接中找到:https://www.jenkins.io/security/。因为所波及的零碎简单且插件数量泛滥(见下文),许多扫描提供的信息短少有价值的上下文,除非使用者有相应的工具教训。所以,专门的平安团队很有必要。 平安团队次要口头和责任以下是该团队所采取的要害口头的纲要,并在适当的中央提供了链接。如需进一步信息,请发送邮件至support@cloudbees.com,或分割CloudBees受权合作伙伴——龙智(customer@shdsd.com)。 审计新插件代码的托管申请(想要进入生态系统的插件); https://github.com/jenkins-infra/repository-permissions-updater/labels/hosting-request 审计CAP中是否蕴含插件(心愿进入CloudBees保障打算的插件);依据插件的风行水平(基于装置数量判断),对随机插件进行被动审核;当CloudBees发现危险模式时,进行大规模剖析/考察; 因为须要涵盖2000多个插件,这对CI生态系统来说是非凡的。Jenkins专用工具开发(jenkins-codeql和usage-in-plugins); Jenkins插件生态系统的CodeQL自定义规定; 这些规定检测到平安专家多年来发现的常见缺点,利用CloudBees团队的专业知识为上下文提供一些有意义的货色。工具开发,以避免缺点被引入。https://github.com/jenkins-infra/jenkins-codeql多种模式(Classes, Methods 和Fields等)的自定义代码搜索引擎。 https://github.com/jenkins-infra/usage-in-plugins内部平安钻研人员和插件维护者之间的合作/协调; 确保报告清晰,蕴含足够的细节;复现不同的破绽;为保护人员提供倡议;审查纠正,协调公布版本。 CloudBees平安正告页面网址为:https://www.cloudbees.com/security-advisories Jenkins平安正告页面的网址为:https://www.jenkins.io/security/advisories/ 在CloudBees流水线中实现扫描报告剖析; 对剖析进行CVE(Common Vulnerabilities & Exposures,通用破绽披露)评估和论证。客户扫描报告剖析; 对剖析进行CVE评估和论证。通过共享的Slack渠道、Confluence和学习倒退训练,进行教育和领导,晋升外部和内部的安全意识;遵循产品开发团队执行的外部OLA(操作级别协定)政策;Jenkins CERT是一个CNA(CVE编号的散发机构),容许生成CVE。疑难问题解答以下是对于Jenkins平安话题的两个问题,龙智CloudBees的技术专家进行了解答,心愿能为您提供参考。 问题1: 在Jenkins的平安正告里,最初会提醒哪些插件破绽还没有修复,然而CloudBees里的平安正告最初都是让降级版本,这意思是降级版本能够解决/防止插件破绽吗? 解答: 是的,CI在降级版本的时候,曾经蕴含了新版本的Plugin,而这些新版本的Plugin会会蕴含这些安全漏洞的修复。 问题2: 对于插件破绽,Jenkins也能够降级Plugin版本来解决? 解答: 开源的Jenkins不会帮忙你去测试新版本的Plugin和其余Plugin的兼容性,后果就是必须本人去解决兼容性问题,这也是开源Jenkins降级最让人头疼的问题之一。 然而CloudBees所提供的降级版本,新的Plugin曾经和其余的新旧版本的Plugin都测试过兼容性了,所以下载后间接可用,不便省心。

May 10, 2023 · 1 min · jiezi

关于jenkins:jenkins-harbor-webhook自动触发构建

背景:cicd还是基于jenkins(spinnaker尽管也玩了,公司规模也小,简略jenkins能够走天下)其实很多场景还是手动构建的,根本没有做主动构建的jenkins流程。明天就忽然有了那么一个需要。合作方大爷要频繁批改一个镜像。恩他们构建了镜像上传到仓库(仓库咱们的,对方木有),他们也不想第二次操作jenkins什么的...当然了他们也不会把代码仓库给到咱,而后我就想到了jenkins的构建触发器-Generic Webhook Trigger去触发构建。 jenkins-harbor webhook主动触发构建对于jenkins的触发器插件:搜寻插件名称:Generic Webhook Trigger重启jenkins后,进入一个Pipeline我的项目设置,曾经能够抉择这个触发器了....这里就疏忽了,我这里早装置了插件好多年了...... harbor or ccr仓库webhook其实我的镜像仓库应用了腾讯云的tcr镜像仓库,仓库能够配置触发器看了一眼文档触发器操作指南:顺便看了一眼harbor的示例:https://www.1nth.com/post/jenkins_webhook/参数构造目测都一样的间接拿来用了! jenkins Generic Webhook Trigger pipelinejenkins创立pipeline新建一个工作,自定义工作名称,抉择流水线pipeline形式:间接写pipeline了: pipeline { agent any triggers { GenericTrigger( genericVariables: [ [key: 'harbor_type', value: '$.type', expressionType: 'JSONPath'], [key: 'harbor_image', value: '$.event_data.resources[0].resource_url', expressionType: 'JSONPath'], [key: 'image_tag', value: '$.event_data.resources[0].tag', expressionType: 'JSONPath'], [key: 'harbor_namespace', value: '$.event_data.repository.namespace', expressionType: 'JSONPath'], [key: 'repo_name', value: '$.event_data.repository.name', expressionType: 'JSONPath'], ], token: 'xxxxxxx' , causeString: ' Triggered on $branch' , printContributedVariables: true, printPostContent: true, //regexpFilterText: '$ref', //regexpFilterExpression: 'refs/heads/' + BRANCH_NAME regexpFilterText: '$harbor_type#$harbor_namespace#$repo_name', regexpFilterExpression: 'pushImage#xxxx#xxxx' ) } stages { stage('Hello') { steps { sh ''' echo harbor_type=$harbor_type echo harbor_image=$harbor_image echo harbor_image=$image_tag echo repo_name=$repo_name echo harbor_namespace=$harbor_namespace echo "do something..." #kubectl set image deployment.apps/$repo_name $repo_name=$harbor_image ''' } } }}镜像仓库创立触发器:设置名称,触发动作抉择了推送镜像,命名空间,仓库名称设置好,版本tag空。url 的格局为: ...

February 24, 2023 · 2 min · jiezi

关于jenkins:vivo-自研Jenkins资源调度系统设计与实践

作者:vivo 互联网服务器团队- Wu Qinghua本文从目前业界实现Jenkins的高可用的实现计划,剖析各计划的优缺点,引入vivo目前应用的Jenkins高可用计划,以及目前Jenkins资源的调度计划的设计实际和目前的落地运行成果。 一、前言当初的企业很多都在用Jenkins做继续集成,各个业务端都依附Jenkins,vivo Devops也是应用Jenkins来进行继续构建,部署Jenkins服务时如何保障服务的高可用变得尤为重要。 上面是目前Jenkins存在的一些问题。 Jenkins自身是单体的,即只能有一个Jenkins Master。尽管你也能够在多台机器上部署多个Jenkins Master,但这些Master之间没有分割,都是各自把工作交给手下的slave去执行,没有任何交加。兴许某个master下的slave很忙,而另一个master下的slave却很闲,资源得不到充分利用。 当其中一个slave宕机之后,该slave上的运行的job工作没有版本从新进行调配,须要用户从新执行。并且slave节点离线之后没有告诉管理员。 当零碎业务量比拟大的时候业务申请集中在Jenkins Master上,会对Jenkins造成压力,甚至的造成Jenkins服务不可用。 当有job工作在jenkins Master上队列排队的时候,Jenkins Master宕机后,队列工作不可长久化。Jenkins Workspace没有主动清理性能,会导致磁盘空间有余,工作执行不了的状况。基于以上状况,vivo Devops对Jenkins的部署架构进行优化搭建,并且配套了一套Jenkins资源调度零碎用于治理Jenkins资源。 二、业界实现目前业界也蕴含一些Jenkins 高可用的设计形式,然而并不能齐全的满足解决上述问题,比方: 2.1 计划一  Gearman + Jenkins这是OpenStack团队应用的计划。这个计划应用了gearman, gearman是个工作散发框架。 须要在每个Master上装置好gearman的插件,并配置好能连贯到gearman server,同时在每个Master必须建设雷同的job。 之后运行工作的流程如下: gearman worker运行在各个Jenkins Master中期待gearman server散发工作;gearman client向gearman server收回运行job的申请;gearman server告诉各个gearman worker有工作拉,第一个闲着的worker会接受任务,如果所有的worker都忙,则放入gearman的工作队列,得worker闲暇时再调配;gearman worker闲下来后会从工作队列里取job来执行,执行完之后,将后果发回给gearman server;gearman server将后果返回给 gearman client。长处: 这样各个salver资源能够失去充分利用,某个master挂掉另外的master能够持续服务。 弊病: 每个master的slave必须配置统一,否则会造成job调度谬误,同时会造成一些资源的节约。当一个master呈现问题,该master的工作不会进行主动重新分配。 2.2 计划二 革新Jenkins的文件存储形式目前Jenkins的配置文件都是间接在硬盘上以文件模式存储的,你在JENKINS_HOME的个文件夹下能看到各种.xml文件。有些公司在Jenkins上进行二次开发,将Jenkins的数据存储形式改为数据库存储,这样前端能够起多个Jenkins服务,后端连雷同的数据库即可。数据库也有比拟成熟的高可用计划。 长处:  能够达到Jenkins的高可用也就是某个master挂掉另外的master能够持续服务。 弊病:须要对Jenkins进行二次开发,应用数据库会升高读取资源效率降落。 2.3 计划三 最简略的Jenkins一主一备模式平时让Jenkins A机器提供服务,并应用SCM Sync configuration plugin保留数据,JenkinsA机器批改配置后触发Jenkins B更新配置,一旦Jenkins A呈现问题挂掉后,切换到备机Jenkins B上。 长处:   能够达到Jenkins的高可用,当master宕机后会进行切换到备机上。 弊病:   会有一批Jenkins备机存在资源节约,切换master工夫过长,会导致有段时间Jenkins服务不可用。 三、vivo Jenkins Scheduler零碎指标因为目前业界的一些实现还不能齐全的满足咱们目前的需要,所以咱们进行了vivo jenkins scheduler零碎的设计与实现。该零碎须要达到如下的目标: 晋升整个构建服务可靠性时长。 保障jenkins集群的高可用,解决目前master-slave的单点问题,保障整个构建服务的可靠性时长。 升高劫难时服务复原时长。 ...

February 13, 2023 · 1 min · jiezi

关于jenkins:Jenkins-通过上传文件的方式进行构建和发布

当 Jenkins 无奈间接拜访 GitLab 仓库时,也能够通过 Jenkins Web 端间接上传文件或者压缩包的形式进行构建和公布。 解决方案关上工程配置 在参数化构建过程中增加文件参数(File Parameter)参数备注文件门路指定上传文件的门路,绝对于工作空间。(例如:./source.zip)形容后续展现给用户看的形容信息。从浏览器表单提交中承受一个文件,作为构建参数。上传后的文件将会放在工作空间中指定的地位,你 能够在构建工作中拜访并应用它。这对于很多场景下是有帮忙的,例如: 让用户基于他们构建进去的成品运行测试。容许用户在自动化上传、公布、部署过程中替换文件。通过上传一个数据集来解决数据。表单提交中的文件名称就是文件的门路,并且是在环境变量中可见的。例如:你把文件门路设置为 abc.zip,而后${abc.zip}会从浏览器传递给你原始的文件名称。 (例如my.zip。)这里的名称不会蕴含目录局部。 文件的上传是可选的。如果用户不上传任何文件,Jenkins只是简略地跳过这个参数并不会替换 任何文件(然而也不会删除任何曾经存在的文件)。 在命令行模式下参数-p对于构建命令build会抉择一个本地文件 (-remoting),或者从规范输入中读取。(在字符模式下,只容许定义一个文件参数) 在构建中间接通过执行 Shell 操作上传的文件上传后的文件将会放在工作空间中指定的地位,通过执行 Shell 即可操作上传的文件,例如 unzip -o ./source.zip 其余细节命令形容rm -rf mydirectory删除目录rm -rf mydirectory/*删除目录下文件及目录rm -rf mydirectory/{*,.[!.]*}删除目录下所有文件及目录(包含以点.开始的暗藏文件及目录)rm -rf mydirectory-*删除所有以 mydirectory- 开始的目录前端我的项目以点.开始的暗藏文件及目录较多,包含配置文件等等,所以用 {*,.[!.]*} 匹配这些文件至关重要。 具体参考《如何通过 glob 匹配除当前目录.及父目录..外所有暗藏文件》 how to glob every hidden file except current and parent directory欢送关注我的微信公众号:乘风破浪的Coder

January 13, 2023 · 1 min · jiezi

关于jenkins:Java开发者必看手把手带你搞定JenkinsMaven仓库Docker-仓库部署自动更新pom版本-一条龙部署服务

原文公布于:Java开发者必看!手把手带你搞定Jenkins+Maven仓库+Docker,欢送应用 RSS 订阅获取最新更新。 1. 写在结尾为了调通这长长的一串破费了整整4天工夫。。。写完后将之前写的API都采取了这样的形式进行部署,极大水平的压缩了须要我部署的工夫,还是十分值得的。 比起上次写的 应用Jenkins对springboot我的项目进行docker镜像一键部署,jenkins + docker + springboot 集成了更多的内容,也更加动态化。 因为流程很长,如果你在看这篇博客的时候有任何问题能够通过邮箱:tangym@runnable.run分割我,我会提供我能帮忙到的。 1.1 实现的性能一次构建,能够实现如下所有操作checkout code → build jar package → push package to nexus → build docker image → push image to repositories → deploy → update pom.xml version 当中没有接入SonarQube或者墨菲平安之类的stage是因为我把这个部份做到了code一提交时触发的GitHub Actions中。 废话不多说,马上开始教程。 2. 搭建过程2.1 筹备内容搭建环境: 一个简略的Spring Boot我的项目,应用Java17,我曾经筹备好了这个,倡议先clone到本地:https://github.com/MingGH/dem...阿里云账号(推送nexus和docker image)一台曾经装置了docker的电脑或者服务器,如果服务器装置docker有难度,能够参考这篇博客:应用官网装置脚本主动装置2.2 通过Docker装置Jenkins创立一个目录,用来存在Jenkins的数据 mkdir -p /dockerData/jenkins/jenkins-data进入到/dockerData/jenkins 目录,咱们在这创立Dockerfile cd /dockerData/jenkinsvim Dockerfile复制以下内容到文件Dockerfile 中 FROM jenkins/jenkins:2.375.1USER rootRUN apt-get update && apt-get install -y lsb-releaseRUN curl -fsSLo /usr/share/keyrings/docker-archive-keyring.asc \ https://download.docker.com/linux/debian/gpgRUN echo "deb [arch=$(dpkg --print-architecture) \ signed-by=/usr/share/keyrings/docker-archive-keyring.asc] \ https://download.docker.com/linux/debian \ $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.listRUN apt-get update && apt-get install -y docker-ce-cliUSER jenkinsRUN jenkins-plugin-cli --plugins "blueocean:1.26.0 docker-workflow:563.vd5d2e5c4007f"从Dockerfile中构建镜像 ...

January 6, 2023 · 3 min · jiezi

关于jenkins:不背锅运维云原生下的CICD3件套快速搭建合集jenkinsharborgitlab

应用docker容器启动jenkinsdocker run -d -u root --name jenkins-ser01 --restart=always -p 80:8080 -p 50000:50000 -v /data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean须要留神: /data 是宿主机的数据目录,请选用容量足够、性能好的文件系统必须显示申明-u root,应用root启动容器,否则容器不能失常启动宿主机的/var/run/docker.sock请确保存在,或请确保门路是正确的拜访 http://192.168.11.252/login?f... 解锁Jenkins 对应宿主机上的数据门路是/data/secrets/initialAdminPassword[root@svr-jenkins ~]# cat /data/secrets/initialAdminPassword bb7b64bf187048f1b7850208e9a2d9a4将bb7b64bf187048f1b7850208e9a2d9a4复制到解锁页面进行解锁,而后下一步首次插件装置 装置倡议的插件:装置举荐的一组插件,这些插件基于最常见的用例.抉择要装置的插件:抉择装置的插件集。当你第一次拜访插件抉择页面时,默认抉择倡议的插件。小白能够抉择装置倡议的插件,老司机能够抉择抉择要装置的插件 如果总是有装置失败的插件,可先点击持续跳过,后续再切换下载源地址,再进行装置持续接下来的步骤 创立治理账号 而后抉择保留并实现持续实例配置,能够放弃默认 而后抉择保留并实现持续最初抉择重启 点击了重启后,发现容器进行了,拉起即可。拉起容器jenkins-ser01[root@svr-jenkins ~]# docker start jenkins-ser01jenkins-ser01[root@svr-jenkins ~]# 提醒!启动容器时,能够加上 --restart=always,当容器stop掉的时候会主动拉起容器最初,即可胜利进入到登录页面!用创立好的第一个管理员账号登录即可 Harbor官方网站:http://vmware.github.io/harbor/ Harbor 源码地址:https://github.com/vmware/harbor 硬件要求: 最低要求 2c/4m/40g举荐 4c/8m/160gHarbor所需软件: vmware harbor (镜像仓库)docker ce (docker容器引擎,社区版)docker compose (批量治理容器,高效治理主机上的docker容器)装置形式 在线装置离线装置(本文次要简略解说离线装置的全过程,应用docker-compose的形式装置)开始离线装置 下载harbor离线包wget https://github.com/goharbor/harbor/releases/download/v2.6.2/harbor-offline-installer-v2.6.2.tgz装置最新版本的Docker Engine、containerd和Docker Composeyum install -y yum-utils device-mapper-persistent-data lvm2yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.reposed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repoyum makecache fastyum install docker-ce docker-compose-plugin -yln -s /usr/libexec/docker/cli-plugins/docker-compose /usr/local/bin/解压[root@svr-harbor ~]# tar -zxf harbor-offline-installer-v2.6.2.tgz[root@svr-harbor ~]# cd harbor[root@svr-harbor harbor]# 批改上面2处配置,在这里,为了简略不便,其余配置放弃默认[root@svr-harbor ~]# cd harbor[root@svr-harbor harbor]# cp -a harbor.yml.tmpl harbor.yml[root@svr-harbor harbor]# egrep -v "#|^$" harbor.yml# 内容如下:hostname: 192.168.11.250http:  port: 80data_volume: /data数据目录请抉择容量足够、性能好的文件系统正文掉harbor.yml中和https无关的配置(内网就不配置https了)#https:#  port: 443#  certificate: /your/certificate/path#  private_key: /your/private/key/path开始初始化[root@svr-harbor harbor]# ./prepare 执行装置脚本[root@svr-harbor harbor]# ./install.sh 留神:亲测,请确保防火墙是关上的状态,因为在install的过程中会主动配置防火墙策略,如果防火墙是进行的,将会install失败。装置胜利后,最初会提醒:Harbor has been installed and started successfully.----查看数据目录[root@svr-harbor ~]# cd /data/[root@svr-harbor data]# lsca_download  database  job_logs  redis  registry  scandata_exports  secret[root@svr-harbor data]# 装置实现后,曾经在指定的数据目录下主动创立了所需的目录,这就是保留任何数据的目录查看运行的容器[root@svr-harbor ~]# cd harbor[root@svr-harbor harbor]# docker-compose psNAME                COMMAND                  SERVICE             STATUS              PORTSharbor-core         "/harbor/entrypoint.…"   core                running (healthy)   harbor-db           "/docker-entrypoint.…"   postgresql          running (healthy)   harbor-jobservice   "/harbor/entrypoint.…"   jobservice          running (healthy)   harbor-log          "/bin/sh -c /usr/loc…"   log                 running (healthy)   127.0.0.1:1514->10514/tcpharbor-portal       "nginx -g 'daemon of…"   portal              running (healthy)   nginx               "nginx -g 'daemon of…"   proxy               running (healthy)   0.0.0.0:80->8080/tcp, :::80->8080/tcpredis               "redis-server /etc/r…"   redis               running (healthy)   registry            "/home/harbor/entryp…"   registry            running (healthy)   registryctl         "/home/harbor/start.…"   registryctl         running (healthy)   [root@svr-harbor harbor]# 留神要进去harbor目录下,须要在docker-compose.yml配置文件所在的目录下能力正确执行docker compose命令拜访拜访80端口即可拜访到UI,默认的账号是admin,默认的明码是Harbor12345 罕用治理# 进行[root@svr-harbor harbor]# docker-compose stop# 查看运行的容器[root@svr-harbor harbor]# docker-compose ps# 启动[root@svr-harbor harbor]# docker-compose up -d# 或者这样启动[root@svr-harbor harbor]# docker-compose start镜像的推送和拉取在另外一台装置有docker的主机上推送镜像到harbor仓库在/etc/docker/daemon.json配置文件下减少insecure-registries配置,这个操作应该就是注册受信赖的仓库地址,容许往这个仓库进行推送镜像,否则就会回绝。 {  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],  "insecure-registries": ["192.168.11.250"] //这是减少的}留神,这是一个json格局的配置文件,现有的配置不要动,减少即可,如果须要注册多个,在数组里用逗号分隔增加就好。重启docker服务 [root@test-a-docker01 ~]# systemctl daemon-reload[root@test-a-docker01 ~]# systemctl restart docker我本地有个nginx的镜像,将其打标签,它是通过标签的形式来得悉属于哪个仓库、哪个我的项目 [root@test-a-docker01 ~]# docker tag nginx:latest 192.168.11.250/library/nginx:v1192.168.11.250是仓库服务器的IP地址library是harbor服务器上的我的项目文件夹登录 [root@test-a-docker01 ~]# docker login 192.168.11.250Username: adminPassword: WARNING! Your password will be stored unencrypted in /root/.docker/config.json.Configure a credential helper to remove this warning. Seehttps://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded推送 [root@test-a-docker01 ~]# docker push 192.168.11.250/library/nginx:v1拉取 # 先删除本地的(为了测试)[root@test-a-docker01 ~]# docker rmi 192.168.11.250/library/nginx:v1# 再拉取[root@test-a-docker01 ~]# docker pull 192.168.11.250/library/nginx:v1v1: Pulling from library/nginxDigest: sha256:ee89b00528ff4f02f2405e4ee221743ebc3f8e8dd0bfd5c4c20a2fa2aaa7ede3Status: Downloaded newer image for 192.168.11.250/library/nginx:v1192.168.11.250/library/nginx:v1[root@test-a-docker01 ~]# docker imagesREPOSITORY                     TAG       IMAGE ID       CREATED         SIZEbusybox                        latest    beae173ccac6   10 months ago   1.24MB192.168.11.250/library/nginx   v1        605c77e624dd   10 months ago   141MBnginx                          latest    605c77e624dd   10 months ago   141MBgolang                         latest    276895edf967   11 months ago   941MBcentos                         latest    5d0da3dc9764   14 months ago   231MB[root@test-a-docker01 ~]# Gitlab所需软件 docker cedocker compose在centos7上装置docker-ce(社区版),装置最新版本的Docker Engine、containerd和Docker Compose# 装置所需的零碎工具sudo yum install -y yum-utils device-mapper-persistent-data lvm2# 增加软件源信息yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.reposed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo#更新并装置yum makecache fast[root@svr-harbor ~]# yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y[root@svr-harbor ~]# ln -s /usr/libexec/docker/cli-plugins/docker-compose /usr/local/bin/# 启动Docker服务systemctl start docker设置环境变量[root@svr-gitlab ~]# echo "export GITLAB_HOME=/data" >> .bash_profile [root@svr-gitlab ~]# source .bash_profile /data目录将会作为gitlab的数据目录,请抉择容量足够、性能好的文件系统创立和配置docker-compose.yml[root@svr-gitlab ~]# mkdir gitlab[root@svr-gitlab ~]# cd gitlab/[root@svr-gitlab gitlab]# vi docker-compose.ymldocker-compose.yml的内容如下:version: '3.6'services:  web:    image: 'gitlab/gitlab-ce:latest'    restart: always    hostname: 'gitlab-ser'    environment:      GITLAB_OMNIBUS_CONFIG: |        external_url 'https://192.168.11.251'        # Add any other gitlab.rb configuration here, each on its own line    ports:      - '443:443'    volumes:      - '$GITLAB_HOME/config:/etc/gitlab'      - '$GITLAB_HOME/logs:/var/log/gitlab'      - '$GITLAB_HOME/data:/var/opt/gitlab'    shm_size: '256m'[root@svr-gitlab gitlab]# docker compose up -d[+] Running 7/9 ⠼ web Pulling                                                                                                                     ... ... ...                                      确保启动的命令和docker-compose.yml位于同一目录中首次启动需做各种初始化的动作,需多期待一会再拜访https://192.168.11.251/users/... 首次登录时,明码是随机的,上面解说如何查看初始的明码,默认的账号是root# 查看容器[root@svr-gitlab data]# docker psCONTAINER ID   IMAGE                     COMMAND             CREATED          STATUS                   PORTS                                                                                                             NAMES1427ade162cb   gitlab/gitlab-ce:latest   "/assets/wrapper"   11 minutes ago   Up 9 minutes (healthy)   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:2222->22/tcp, :::2222->22/tcp   gitlab-web-1# 进入容器[root@svr-gitlab gitlab]# docker exec -it gitlab-web-1 bash# 查看初始密码root@gitlab-ser:/# cat /etc/gitlab/initial_root_password # WARNING: This value is valid only in the following conditions#          1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).#          2. Password hasn't been changed manually, either via UI or via command line.##          If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.Password: 1auf23re9a70Tikipx9edUzICyLPuYwkMoHmV+QY8cs=# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.明码就是这个:1auf23re9a70Tikipx9edUzICyLPuYwkMoHmV+QY8cs= 正告!应用初始密码登录后,记得尽快重置root的明码,因为在24小时后,将会主动删除掉/etc/gitlab/initial_root_password文件 本文转载于:https://mp.weixin.qq.com/s/D_...

December 20, 2022 · 1 min · jiezi

关于jenkins:Jenkins

前置环境筹备服务器 OS Linux CentOS数据库服务器 MYSQL ServerGithub账号Idea IDE一、简介开源平台罕用于自动化测试、继续集成二、Jenkins根底下载Jenkins docker pull jenkins/jenkins第一次启动 docker run --name jenkins -u root --rm -d -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean装置实现后拜访地址-> http://{部署Jenkins所在服务IP}:8080, 此处会有几分钟的等待时间初始化Jenkins解锁Jenkins进入Jenkins容器:docker exec -it {Jenkins容器名} bash例如 docker exec -it jenkins bash查看明码:cat /var/lib/jenkins/secrets/initialAdminPassword复制明码到输入框外面插件装置中... 能够看到,有几个插件下载失败了,持续往下看切换下载源地址 点击Manage Jenkins点击Correct点击Advanced找到页面最上面的Update Site,替换链接为:>https://mirrors.tuna.tsinghua... 查看装置失败的插件,在Available外面搜寻重装即可装置实现后重启,插件报错隐没。 舒适提醒:自己操作过程中有些步骤比较慢,还需有急躁。 间接下载(必可行)如果第一个办法还不行,咱们能够思考间接下载安装。插件地址:http://updates.jenkins-ci.org... 间接找到须要的插件,点击下载。实现后在下图地位导入即可胜利。 三、根底设置增加用户权限 增加用户

December 18, 2022 · 1 min · jiezi

关于jenkins:快速创建Jenkins-Job

Jenkins Job 类型 1.Freestyle project 这个是jenkins的根底性能,能够用它来执行各种构建工作,他只能构建在一个电脑上,如果没有太多的需要,这个job根本够用了,它蕴含了所有根底性能. 2.Pipeline 实在的工作环境有很多job,比方先编译,而后执行动态代码查看、单元测试、而后部署服务器、服务器重启、进行ui测试等。咱们须要对这些job进行一些设置将它们的上下游关系配置好。这个时候就须要pipeline配置了.具体的能够参考这篇文章 3.External job 用来监督内部执行的job. 4.Multi-configuration project 能够让job跑在不同的机器上.这个须要增加机器(节点),流程的话能够参考这篇文章5.文件夹这是一种能够把多个我的项目归类到一起的形式,而不是我的项目自身的类型。请留神,这并不像Jenkins仪表板上传统的“视图”选项卡那样,让你依照我的项目列表筛选。更确切地说,它就像操作系统中的目录文件夹。文件夹名称是我的项目门路的一部分。 Job配置界面 1.General:个别设置Project name:项目名称 Description:我的项目形容,多人写作请肯定要加上 Discard old builds:该选项配置如何摈弃旧的构建 每次构建相干的文件都会保留下来,将会慢慢耗光磁盘空间,为此提供两种形式供选择: Days to keep builds:如果其值为非空的N,就留N天之内的构建文件Max # of builds to keep:如果#为非空,就公保留最多#个最近构建的相干文件days to keep artifcts 产品保留工夫,然而log,历史记录会保留builds to keep with artifacts 保留最近几个构建的产品This project is parameterized:能够设置用户可输出的参数,没有输出则应用默认值,有字符串,多行字符串,布尔值等能够设置.点击理解更多Throttle builds:设置两个build工作之间最小距离和同一个工夫内最大工作数量Disable this project:进行这个job,当例如源码不可用时,能够临时勾选这个进行buildExecute concurrent builds if necessary: 如果能够会并发执行build.勾选上后.如果有足够的线程池则会并发,否则不会.并发构建会在不同的workspace中.如果用户本人设置的workspace则不会离开,这个是有危险的.Restrict where this project can be run: 设置是否必须在某个机器上运行.如果是分布式部署或者迁徙job,留神移除或批改此项配置Quiet period:配置期待未产生提交变动的工夫. 因为 jenkins检测到代码变动时,就主动立刻构建,然而有些状况下, 须要屡次提交代码到版本控制系统上,此时,可能产生代码还没残缺提交就开始构建,造成构建失败,为避免此种状况产生,能够配置值X,则jenkins会在代码变动后期待X秒,如果没在产生代码提交,才开始构建,保障稳定性。Block build when downstream project is building:该选项当多个相关联的我的项目由一个提交所影响,然而它们必须以一个指定的程序进行构建的时候十分有用。当你抉择这个选项的时候,Jenkins将会在启动这个构建之前,实现任何上游构建Job; 例如应用pipes的时候 ...

November 27, 2022 · 1 min · jiezi

关于jenkins:GOPS现场-大规模团队如何实现Jenkins的集中管理对话龙智技术顾问

2022GOPS寰球运维大会·深圳站,咱们对话了龙智技术顾问陈红华,为大家带来Jenkins企业版——CloudBees的产品介绍、性能特点以及利用范畴,为有大规模治理Jenkins难题的企业提供一个新的、企业级解决方案。https://www.bilibili.com/vide... 视频文字实录Q:CloudBees CI是一个刚刚进入中国不久的产品,对大家来说比拟新,请简略地介绍一下。 A:CloudBees CI依靠的Jenkins知名度较高。咱们一说Jenkins大家就理解了,CloudBees CI知名度小一些,但一说它是企业版Jenkins,大家就都晓得了。但可能客户会有疑难,有开源版的Jenkins,咱们为什么还要企业版呢?很多人不晓得为什么要应用它。 广泛的体验是,如果是一个小范畴团队,实际上(Jenkins)应用得比拟好,(Jenkins)帮忙很多企业解决了继续集成的痛点或需要。然而,团队逐步在变大、业务变简单的时候,会遇到困难。 CloudBees是Jenkins的开源代码最大贡献者,它晋升了Jenkins的所有性能。用CloudBees不影响Jenkins原有的性能,Jenkins提供的任何性能CloudBees都有。在原有的根底上,它还提供了一个Operation Center操作核心。 在这个根底上,CloudBees的作用得以体现。它把原来的Jenkins全治理起来。大家也广泛反馈说,尽管是小团队,但他们也用了好几个实例,是独自治理的。或者说有多个实例,依靠于一个团队治理。业务略微简单一点时,尽管也跑得通,但的确有点艰难,须要离开治理多个实例。这时,如果应用CloudBees CI,就不须要离开治理,它有操作核心来进行对立集中管理。这体现出它的价值。 CloudBees CI可能可视化,看到全副多个节点的Jenkins,能够进行配置。CloudBees CI的性能更强,比方反对方面,Jenkins作为开源软件,根本不提供反对。尽管(少数时候)跑的比拟顺畅、用得较好,但不可能齐全遇不到问题,或者说不可能齐全不须要反对。须要反对时,无奈从Jenkins处获取。这时,CloudBees提供了反对服务,不仅仅是原厂,咱们龙智这样的国内代理商也提供反对服务。 产品布署好,自带的休眠技术可能开释资源,在不必的时候把资源开释给别的节点应用。这是它的特点,也是劣势所在。 Q:具体来说,CloudBees次要提供哪些性能? A:次要笼罩CI/CD这块。这以前是Jenkins提供的性能,当初CloudBees也提供此性能,并笼罩Jenkins CI/CD局部的所有性能。 很多用户可能有限定的应用场景,比方要求用当初较新的技术K8S部署,不想用过期的技术去部署CloudBees或Jenkins。他们以前也用K8S部署Jenkins,即便CloudBees替换了Jenkins,还是一样用K8S部署CloudBees,把K8S自带的优良性能用上。 一些客户说,以前用了Jenkins的插件,放心用CloudBees后,插件是不是用不了?Jenkins所有的插件CloudBees是全副继承的,并且CloudBees更进一步,所有的插件分等级反对。 并且,CloudBees自主开发了一些插件,这些插件在社区中没有,洽购CloudBees后能力去利用,享受到这些插件带来便当。 Q:与其余继续集成的工具相比呢? A:个别状况下,咱们跟客户谈到竞品,他们有局部应用Bamboo,有局部应用自研工具。用自研工具的,一可能是大厂,二是有国产化代替要求。这种产品因为临时还没有面向市场,可能只在是外部应用,很多大厂都有的这种产品。昨天和明天都碰到了这样的用户,跟他聊的时候,他们的确说遇到过插件抵触。也有业务团队较大、用了多个节点的,反馈治理起来比拟麻烦,一下就说到了痛点(这些都是Cloudbees能够解决的)。 Q:应用Jenkins的团队应该如何判断引进CloudBees的机会?或者说,Cloudbees适宜什么样的团队应用? A:小团队(感觉本人)用不上。大团队如果(Jenkins)应用不顺畅,可能会频繁的反馈问题。工具链不好导致频繁反馈问题,比方开发程序CI、代码CI时呈现了问题,向开发团队反馈,开发就比较烦。因为他的外围工作是开发代码,而不是解决CI问题,这相当于让开发减少了工作量。 工具用得不好,碰到了难点,相当于加大其余人员的工作量,因为要去解决问题和难点。如果用开源的Jenkins,碰到难点后,社区上找不到解决方案,只能本人去考察。 有痛点就应该去寻找解决方案。有Jenkins的痛点,就要去找企业级的解决方案。应该有痛点就解决,寻找解决方案。 有一些用户反馈,碰到痛点后,也没想去找CloudBees这样的解决方案,而是找了替代性的计划,比方多部署一个节点、多部署一个Jenkins实例等,这可能长期解决问题,但不是长久之计。因为多部署一个节点,相当于多一个运维的累赘,当前可能会多一个产生危险的点。这只是长期解决问题,对那些想缩小本人的运维工作量,让工具代替人力做事的人来说,应该去找成熟的、解决痛点的产品,而不是忍耐痛点。

September 26, 2022 · 1 min · jiezi

关于jenkins:记录Jenkins部署并运行Java项目

环境筹备centos 7Java 1.8Maven 3.6.3Docker 20.10.17Gitlab gitlab-ce:14.0.5-ce.0Jenkins 2.60.3(强烈建议,其余版本有坑)Jenkins相干依赖环境装置Java环境装置尽管咱们是采纳docker的形式装置Jenkins,所有的依赖镜像都曾经打包好了。然而咱们在后续应用Jenkins的过程中,会采纳Jenkins主机上的Java运行环境,所以咱们还是要装置一下java JDK8、并且配置一下环境变量。 举荐教程:https://segmentfault.com/a/11...maven环境装置举荐教程:https://segmentfault.com/a/11...部署docker装置举荐教程:https://segmentfault.com/a/11...Gitlab装置举荐教程:https://segmentfault.com/a/11...部署jenkins(基于docker)咱们能够本人在本机上部署jenkins,也能够应用docker进行部署,这次咱们抉择docker来部署。 备份一下/usr/local/java目录和/usr/local/apache-maven-3.6.3目录外面的 cp -r /usr/local/java /usr/local/java_bakcp -r /usr/local/apache-maven-3.6.3 /usr/local/apache-maven-3.6.3_bak执行以下命令即可: docker run -d -p 8001:8080 -p 8002:50000 -v /usr/local/jenkins:/var/jenkins_home -v /etc/localtime:/etc/localtime -v /etc/local/java:/etc/local/java -v /usr/local/apache-maven-3.6.3:/usr/local/apache-maven-3.6.3 --name jenkins jenkins:2.46.3能够尝试在命令中退出-e JAVA_OPTS=-Duser.timezone=Asia/Shanghai,这样能够解决Jenkins时区不对的问题(待测试),也能够在部署后采纳文中最初解决方案。 其中要留神的是:挂载/usr/local/jenkinsHome是jenkins的主目录挂载/etc/localtime目录是为了容器内的jenkins与主机工夫统一;挂载/etc/local/java是同步主机的java到容器中的jenkins(不然前面会有坑)挂载/usr/local/apache-maven-3.6.3是同步主机的maven到容器中的jenkins(不然前面会有坑)上面是命令的解释: docker run -d -p 8001:8080\ # 将容器中的端口8080,挂载到主机端口8001 -p 8002:50000\ # 将容器中的端口50000,挂载到主机端口8002 -v /usr/local/jenkins:/var/jenkins_home\ # 将容器中的目录/var/jenkins_home,挂载到主机目录/usr/local/jenkins -v /etc/localtime:/etc/localtime\ # 将容器中的目录/etc/localtime,挂载到主机目录/etc/localtime -v /etc/local/java:/etc/local/java\ # 将容器中的目录/etc/local/java,挂载到主机目录/etc/local/java -v /usr/local/apache-maven-3.6.3:/usr/local/apache-maven-3.6.3\ # 将容器中的目录/usr/local/apache-maven-3.6.3,挂载到主机目录/usr/local/apache-maven-3.6.3 --name jenkins\ # 给容器命名为jenkins jenkins:2.46.3 # 抉择镜像执行命令docker ps,咱们会发现jenkins并没有被启动起来。这是因为咱们方才挂载的目录,jenkins容器并没有拜访启动。所以,咱们须要给挂载的目录给予权限。 ...

September 24, 2022 · 1 min · jiezi

关于jenkins:Veinmind-Tools-在-Jenkins-的体验

Veinmind Jenkins 插件推出了v1.0.0版本,能够顺滑的集成进CI中,对容器镜像的构建步骤进行扫描,而无需批改任何代码。 在CI集成各种平安能力的过程中,最为苦楚的便是面对成千上百的仓库和分支,须要手动批改各种配置文件来退出平安扫描的步骤;通常状况下,在Jenkins CI过程内想要引入容器平安检测,须要手动的去批改Jenkinsfile文件来插入扫描步骤。 如果您是几百个我的项目的运维人员,在DevSecOps的经营过程中,如何在各个多个我的项目的多个分支的Jenkinsfile内的某处插入平安扫描能力? Veinmind Jenkins 插件能够帮你解决上述场景的问题。在 Jenkins装置Veinmind 插件,开启主动扫描选项,即可无需插入任何步骤,主动监听docker build行为,扫描build生成的镜像,同时反对扫描报表以及工作阻断等性能。 1.Veinmind Jenkins 的个性反对主动扫描模式,无需批改Jenkinsfile文件或BuildStep,自动识别docker build的动作,触发扫描工作。反对手动模式,能够手动减少Build Step/Pipeline Step来手动触发扫描。简便装置,一次装置,永恒应用。应用简略,无需记住简单的参数,鼠标配置即可。反对阻断性能。提供数据统计和详情页面。2.Veinmind Jenkins 的应用Step.1 下载并装置Veinmind Jenkins 插件在 github 下载最新的 veinmind scanner.hpi 文件https://github.com/chaitin/ve... 装置进Jnekins并重新启动。 Step.2 在全局配置设置主动扫描的策略装置好插件后,在 Manage Jenkins -> Configure System 找到Veinmind Scanner Options 勾选上主动扫描的选项,而后抉择Agent: 选用开源的 veinmind-runner, 倡议应用最新的版本号。 而后点击保留即可。 Step.3 开始一次构建任意找一个Step存在构建的Project,点击立刻构建触发流程。 Step.4 查看扫描后果当工作完结时,能够在侧边栏发现Veinmind Scanner页面,能够查看本次构建内扫描的后果和详情。 3. Veinmind Jenkins 的更多用法Veinmind Jenkins 插件除了主动扫描反对之外,同样也反对手动指定扫描,来满足多样化的需要。 Pipeline Porject 手动模式 在Jenkinsfile内插入Veinmind scanner的扫描代码,即可人工指定一次扫描: veinmindScanner block: true, image: 'YOOUR_IMAGE_REF', scanConfig: [$class: 'RunnerConfig', agentVersion: 'V1.5.0', scanArgs: '-v /var/run/docker.sock:/var/run/docker.sock', workSpace: ''] ...

August 26, 2022 · 1 min · jiezi

关于jenkins:手把手教你用-Jenkins-自动部署-SpringBoot

@[toc] 1. 什么是 CI/CDCI/CD 是一种通过在利用开发阶段引入自动化来频繁向客户交付利用的办法。 CI/CD 的外围概念能够总结为三点: 继续集成继续交付继续部署CI/CD 次要针对在集成新代码时所引发的问题(俗称"集成天堂")。 为什么会有集成天堂这个“雅称”呢?大家想想咱们一个我的项目部署的过程,拉取代码->构建->测试->打包->部署,如果咱们常常须要部署我的项目,特地是在微服务时代,服务特地多的状况下,不停的测试打包部署,那预计得有集体一整天专门做这事了,而这事又是繁琐的反复无意义的。 具体而言,CI/CD 可让继续自动化和继续监控贯通于利用的整个生命周期(从集成和测试阶段,到交付和部署),这些关联的事务通常被统称为"CI/CD 管道",由开发和运维团队以麻利形式协同反对。 1.1 CI(Continuous Integration)CI/CD 中的"CI"始终指继续集成,它属于开发人员的自动化流程。胜利的 CI 意味着利用代码的新更改会定期构建、测试并合并到代码仓库中,该解决方案能够解决在一次开发中有太多利用分支,从而导致互相抵触的问题。 1.2 CD(Continuous Delivery/Continuous Deployment)CI/CD 中的"CD"指的是继续交付和/或继续部署,这些相干概念有时会穿插应用。两者都事关管道后续阶段的自动化,但它们有时也会独自应用,用于阐明自动化水平。 继续交付(Continuous Delivery)通常是指开发人员对利用的更改会主动进行谬误测试并上传到代码仓库(如 GitHub、GitLab 等),而后由运维团队将其部署到实时生产环境中。这旨在解决开发和运维团队之间可见性及沟通较差的问题。因而,继续交付的目标就是确保尽可能减少部署新代码时所需的工作量。 继续部署(Continuous Deployment)指的是主动将开发人员的更改从代码仓库公布到生产环境,以供客户应用。通过一套全自动化的流程,来解决手动测试、编译、打包等操作。继续部署以继续交付的劣势为根基,实现了管道后续阶段的自动化。 2. 什么是 Jenkins后面说的 CI/CD 算是一种思维,思维要落地,就须要对应的工具。 Jenkins 是一款开源的 CI/CD 软件,能够算是 CI/CD 软件领导者,它提供了超过 1000 个插件来反对构建、部署、自动化,基本上可能满足任何我的项目的须要。 整体来说,Jenkins 有如下六大特点: 继续集成和继续交付作为一个可扩大的自动化服务器,Jenkins 能够用作简略的 CI 服务器,或者变成任何我的项目的继续交付核心。 繁难装置Jenkins 是一个基于 Java 的独立程序,能够立刻运行,蕴含 Windows、Mac OS X 和其余类 Unix 操作系统。 配置简略Jenkins 能够通过其网页界面轻松设置和配置,其中包含即时谬误检查和内置帮忙。 插件通过更新核心中的 1000 多个插件,Jenkins 集成了继续集成和继续交付工具链中简直所有的工具。 扩大Jenkins 能够通过其插件架构进行扩大,从而为 Jenkins 能够做的事提供简直有限的可能性。 ...

August 4, 2022 · 3 min · jiezi

关于jenkins:Jenkins-配置-Cppcheck-Sonar-及自动化打包

配置Cppcheck设置中找到插件治理搜寻找到cppcheck,装置并重启Jenkinswindows下 则配置批处理 "C:\Program Files\Cppcheck\cppcheck.exe" --xml --xml-version=2 --enable=all reports\Modules 2> test_cppcheck_report.xmlexit 0命令行参数可自行查问注:肯定要加 exit 0 ,否则会执行失败 配置Cppcheck

July 21, 2022 · 1 min · jiezi

关于jenkins:自动跳转的下载地址用-curl-下载怎样保留原文件名

主动跳转的下载地址,用 curl 下载怎么保留原文件名?最近在写 Jenkinsfile 的时候遇到了一个场景,须要从一条链接地址下载 jar 包,jar 包名字是带版本号的,我是心愿不扭转原来文件名的状况上来下载到某个目录下。 一开始感觉这个场景需要不难哦,首先想到的是用我比拟熟的 curl 命令间接下载就应该就能够了,马上动工! 第一次失败咱们这次要下载的链接长这样(用 log4j-api 的仓库地址举例): https://repository.sonatype.org/service/local/artifact/maven/redirect?r=central-proxy&g=org.apache.logging.log4j&a=log4j-api&v=LATEST先用浏览器关上一下链接,看看能不能失常下载: 没有问题,而且主动下载了最新版本的 jar 包,名字叫 log4j-api-2.14.1.jar ,完满的很,当初马上转战 curl 命令。 $ curl -O https://repository.sonatype.org/service/local/artifact/maven/redirect?r=central-proxy&g=org.apache.logging.log4j&a=log4j-api&v=LATEST这个大写的 -O 参数示意不须要指定文件名,用链接的文件名字来作为文件名。 一个回车上来,问题来了: 呈现了很多奇奇怪怪的货色,而且下载下来的文件名变成了 'redirect?r=central-proxy'。 咱们来 cat 一下这个文件看看外面有什么线索: 原来是返回了一个 400 - Bad Request 的页面,看来是咱们的地址有点问题,咱们一起来认真看看这条地址,其实能够看到地址前面有好几个参数: r=central-proxy&g=org.apache.logging.log4j&a=log4j-api&v=LATEST 能够看到外面带了个 & 符号,这个符号在 Linux 里是指后盾运行,所以咱们的地址还不能间接用。 知识点一: 这里能够有两种办法解决问题: 本义 url,将 & 前减少反斜杠 \& 。用 curl -d 参数来传参,并且强制应用 GET 办法 -G。# 办法一:本义 url$ curl -O https://repository.sonatype.org/service/local/artifact/maven/redirect?r=central-proxy\&g=org.apache.logging.log4j\&a=log4j-api\&v=LATEST# 办法二:用 curl -d 参数$ curl -O -G \ https://repository.sonatype.org/service/local/artifact/maven/redirect \ -d "r=central-proxy&g=org.apache.logging.log4j&a=log4j-api&v=LATEST"小插播:欢送关注我的 VX 号:叨叨技术 (daodao_tech) 前沿技术,深度评测 原创文章,首发公众 ...

June 21, 2022 · 2 min · jiezi

关于jenkins:Docker安装Jenkins

## 搜寻并下载jenkins镜像docker search jenkinsdocker pull jenkins/jenkins:lts# 创立容器mkdir -p /data/jenkins_homechmod 777 /data/jenkins_homedocker run -d -p 10240:8080 -p 10241:50000 -v /data/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime --name jenkins jenkins/jenkins:lts# -p 10240:8080 映射8080端口到宿主机的10240上# -p 10241:50000 映射50000端口到宿主机的10241上# -v /data/jenkins_home:/var/jenkins_home## /var/jenkins_home目录为容器jenkins工作目录,咱们将硬盘上的一个目录挂载到这个地位,不便后续更新镜像后持续应用原来的工作目录。## 这里咱们设置的就是下面咱们创立的 /data/jenkins_home目录# -v /etc/localtime:/etc/localtime## 让容器应用和服务器同样的工夫设置。

May 16, 2022 · 1 min · jiezi

关于jenkins:你的第一个-Jenkins-项目从这里开始

你的反对对我意义重大! Hi,我是小彭。本文已收录到 GitHub · Android-NoteBook 中。这里有 Android 进阶成长路线笔记 & 博客,有气味相投的敌人,欢送跟着我一起成长。(联系方式在 GitHub) 前言Jenkins 是一个基于 Java 开发的继续集成工具,可能很简略地作为一个可扩大的自动化服务器,为我的项目提供继续集成(Continuous Integration)的能力;这篇文章里,我将手把手带你搭建 Jenkins 局域网服务,并实现一个简略的 Jenkins 我的项目。心愿让你对 Jenkins 有一个根本的印象,晓得搭建一个 Jenkins 我的项目大略的模型是怎么样的,就够了。如果能帮上忙,请务必点赞加关注,这真的对我十分重要。1. 部署 Jenkins 局域网服务咱们先过一遍部署 Jenkins 服务的步骤,因为网上讲这块内容的材料很多,所以我只说一些重点步骤和须要出错的点。我的需要是实现一个局域网内可用的 Jenkins 服务,部署步骤会绝对简略,首先须要一台长时间开机的服务主机,这里以 Window 为例。 1、下载 Jenkins 安装程序,并执行程序:官方网站2、装置过程-抉择登录权限调配类型: 这里抉择 “Run server as LocalSystem” 选项(不举荐,但够满用): 3、装置过程-抉择端口号: 抉择一个闲置的端口即可,如果未来须要批改端口号,能够参考这篇文章批改:Jenkins教程:批改Jenkins端口号 —— .NET开发菜鸟 著 4、解锁 Jenkins: 在浏览器输出 localhost:7777,首次启动 Jenkins 须要解锁,依据提醒操作即可: 5、创立管理员账户: 额定创立一个管理员账户,能够共享给小组的同学来登录 Jenkins 服务: 6、在其余主机拜访 Jenkins 服务: 本机拜访 Jenkins 服务能够拜访 localhost:7777。须要在其余局域网主机拜访时,先应用 ipconfig 查看本机 ip,再应用 ip:7777 拜访,而后用 第 5 步 的管理员账号登录。即可进入 Jenkins Web 界面: ...

April 9, 2022 · 3 min · jiezi

关于jenkins:Jenkins基于Windows系统安装Jenkins

【Jenkins】基于Windows零碎装置Jenkins一、参考链接阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 jenkins镜像-jenkins下载地址-jenkins装置教程-阿里巴巴开源镜像站 Jenkins 二、Jenkins简介Jenkins是一款开源 CI&CD 软件,用于自动化各种工作,包含构建、测试和部署软件。 Jenkins 反对各种运行形式,可通过零碎包、Docker 或者通过一个独立的 Java 程序。 三、装置筹备1、装置JDK参考链接:【JDK】jdk1.8下载与装置教程_xyb的博客-CSDN博客 C:\Users\xyb>java -versionjava version "1.8.0_181"Java(TM) SE Runtime Environment (build 1.8.0_181-b13)Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)2、下载Jenkins下载链接:https://mirrors.aliyun.com/jenkins/windows-stable/2.319.3/jenkins.msi 四、Jenkins装置双击关上 jenkins.msi ,单击 Next 抉择装置目录 抉择登录类型 抉择服务的端口。默认8080 单击“Test Port”,测试端口是否未启用。 关联JDK装置门路 自定义设置。默认。 单击"install"。 期待装置实现。 装置实现。 解锁Jenkins 自定义Jenkins,装置举荐的插件。 创立第一个管理员用户 装置实现。 至此,Jenkins装置实现。

February 23, 2022 · 1 min · jiezi

关于jenkins:对接相关-使用Jenkins按照SoapUI-Tests的反馈信息执行

写着文档,听着歌,走遍咫尺是他乡筹备工作成心制作些谬误,查看SoapUI Test执行失败的反馈信息(我这里是成心把WebService关了): ERROR [WsdlSubmit] Exception in request: org.apache.http.conn.HttpHostConnectException: Connect to localhost:80 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect(前面要做的就是让Jenkins看到这样反馈后,期待5秒,再尝试一次) 在Jenkins中创立一个Pipeline工作:接下来,配置该工作,批改流水线栏下的脚本:编写脚本(未完待续)

January 29, 2022 · 1 min · jiezi

关于jenkins:对接相关-Jenkins执行SoapUI-Tests简单模式

你的SoapUI有Freestyle吗? Jenkins叫上,一起来段Freestyle吧!Windows装置Jenkins下载Java Runtime(https://www.java.com)和Jenkins Windows零碎安装包(https://www.jenkins.io/downlo...)。先装置Java Runtime,再装置Jenkins。http://localhost:8080启动Jenkins,第一次装置要按步骤激活Jenkins。目前阶段不须要任何插件,只装置默认的即可。如果是第一次装置,首先要做的就是设置管理员明码。Jenkins执行SoapUI Tests应用SoapUI创立一个TestCase1,并将SoapUI project保留成xml文件。Jenkens界面点击New Item,创立一个Freestyle project。在Freestyle project设置界面的Build栏点击Add build step创立一个Execute Windows batch command步骤,并输出Command如下: "{SoapUI根目录}\bin\testrunner.bat" -s"TestSuite名" -c"TestCase名" "{SoapUI我的项目xml门路}"保留project,点击Build Now测试。(未完待续) 可参考我的另一个文章(https://segmentfault.com/a/11...) ↩

January 18, 2022 · 1 min · jiezi

关于jenkins:jenkins常用插件

Remote Jenkinsfile ProviderEnables to define external Jenkinsfile from another repository for Multibranch Pipeline Projects. Localization: Chinese (Simplified)Jenkins Core 及其插件的简体中文语言包,由 Jenkins 中文社区保护。 Generic Webhook TriggerCan receive any HTTP request, extract any values from JSON or XML and trigger a job with those values available as variables. Works with GitHub, GitLab, Bitbucket, Jira and many more.

January 13, 2022 · 1 min · jiezi

关于jenkins:自动化集成Pipeline流水语法详解

前言:该系列文章,围绕继续集成:Jenkins+Docker+K8S相干组件,实现自动化治理源码编译、打包、镜像构建、部署等操作;本篇文章次要形容Pipeline流水线用法。 一、Webhook原理Pipeline流水线工作通常状况下都是主动触发的,在Git仓库中配置源码改变后告诉的地址即可。 例如在Gitee仓库中,基于WebHook的配置,能够在向仓库push代码后,主动回调事后设定的申请地址,从而触发代码更新后的打包动作,根本流程如下: 这里波及到两个外围配置: Gitee回调:即仓库接管到push申请后的告诉地址;在仓库治理的WebHooks选项中;Jenkins流程:编写流水线工作,解决代码提交后的自动化流程;这里须要Jenkins地址能够在外网拜访,网上的组件很多,自行抉择搭建即可;留神:能够先随便设置回调地址,在申请日志中间接拷贝申请参数,在postman中去触发Jenkins工作,这样在测试时会不便很多。 这里联合Gitee的帮忙文档,去剖析不同push动作的参数标识,能够判断分支的创立、推送、删除等操作,例如: "after": "1c50471k92owjuh37dsadfs76ae06b79b6b66c57","before": "0000000000000000000000000000000000000000",创立分支:before字符都是0;删除分支:after字符都是0; 二、流水线配置1、插件装置在Jenkins插件治理中,装置Generic-Webhook-Trigger插件,流水线pipeline相干组件在Jenkins初始化的时候曾经装置了。 2、创立流水线新建Item,输出工作名称,抉择pipeline选项即可: 抉择Webhook选项,页面提醒了触发的形式。 3、触发流水线http://用户名:明码@JENKINS_URL/generic-webhook-trigger/invoke基于如上形式通过认证,触发流水线执行,会生成工作日志,即流程是通顺的。 三、Pipeline语法1、构造语法triggers:基于hook模式触发流水线工作;environment:申明全局通用的环境变量;stages:定义工作步骤,即流程分段解决;post.always:最终执行的动作;惯例流程中的整体构造如下: pipeline { agent any triggers {} environment {} stages {} post { always {}}}把各个节点下的脚本配置进去,就会生成一个自动化的流水线工作。留神这里不勾选应用Groovy沙盒选项。 2、参数解析这里说的参数解析是指,Gitee通过hook机制申请Jenkins服务携带的参数,这里次要解析post参数即可,解析形式看阐明: 这里从hook回调的参数当选了几个流程中应用的参数,上面看具体解析形式,在上图中点击新增: { "ref":"refs/heads/master", "repository":{ "name":"butte-auto-parent", "git_http_url":"仓库地址-URL" }, "head_commit":{ "committer":{ "user_name":"提交人名称", } }, "before":"277bf91ba85996da6c", "after":"178d56ae06b79b6b66c"} 把上述参数顺次做好配置即可,这样在工作流中就能够应用这些参数。 3、触发器节点这里即triggers模块配置,核心作用是加载触发流程的一些参数,后续在脚本中应用,其余相干配置按需抉择即可,留神这里的参数须要在上个步骤中配置: triggers { GenericTrigger( genericVariables: [ [key: 'ref', value: '$.ref'], [key: 'repository_name', value: '$.repository.name'], [key: 'repository_git_url', value: '$.repository.git_http_url'], [key: 'committer_name', value: '$.head_commit.committer.user_name'], [key: 'before', value: '$.before'], [key: 'after', value: '$.after'] ], // causeString: ' Triggered on $ref' , // printContributedVariables: true, // 打印申请参数 // printPostContent: true )}4、环境变量申明一些全局的环境变量,也能够间接定义,在流程中用${变量}的形式援用: ...

December 21, 2021 · 2 min · jiezi

关于jenkins:Flow-vs-Jenkins-实操对比如何将Java应用快速发布至ECS

随着计算机技术和业务一直倒退,企业软件规模越来越宏大,交付越来越简单。继续交付 DevOps 解决方案逐步深入人心,成为企业开发者研发模式首选。 市面上存在多种多样的 CICD 工具,不同的工具有不同特点。从开源的本地工具 Jenkins、TeamCity,到云端收费工具 Travis CI、Github Action,到现在云原生时代专一于 Kubernetes 的 ArgoCD、Tekton Pipeline。 Jenkins 因为其开源个性以及丰盛插件能力,长久以来都是中小企业搭建 CICD 流程的首选。不过 Jenkins 存在保护老本高、配置简单等毛病,云效 Flow 较好地解决了这些问题。 本文从一个 Java 利用部署到云服务器(ECS)的场景切入,比照应用阿里云云效流水线 Flow 和 Jenkins 两种构建部署形式,供大家选型参考。 需要剖析以后咱们有一个寄存 Java 代码的仓库,须要对源代码进行构建,取得构建产物并将构建产物部署到云服务器(ECS)组。该过程简略形象如下: 以 Git 仓库 https://code.aliyun.com/flow-... Spring Boot 工程为例,须要有一个提供java、maven构建指令的运行环境进行 mvn build,将生成的 jar 包同步到服务器组上,执行利用启动命令(如 /home/admin/app/deploy.sh restart),将利用启动。流程拆分 环境筹备FlowFlow 作为一个 SaaS 服务,开箱即用。用户只须要一个阿里云账号即可开启继续交付之旅。 在Flow平台登陆阿里云账号后即可新建流水线 JenkinsJenkins 是一个开源的 CI 工具,用户须要提供机器资源来部署 Jenkins Master 节点。如果须要在公网环境下拜访Jenkins页面,通过公网IP或弹性IP等裸露拜访地址。以一台阿里云 ECS(Centos 8)为例,装置Jenkins的过程包含: # 装置 git、java 根底工具yum install git java # 批改 Jenkins 配置,如监听端口等vim /etc/sysconfig/jenkinsJENKINS_PORT="8081"# 装置 Jenkinssudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.reposudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.keysudo dnf install jenkinssudo systemctl start jenkinssudo systemctl enable jenkinssystemctl status jenkins当Jenkins过程启动后,能够通过机器ip+端口的形式拜访,登录到Jenkins页面。 ...

December 20, 2021 · 2 min · jiezi

关于jenkins:jenkins的自动构建参数使用windowlinux及Python调用

1、如果是jenkins初始时应用,也就是未装置对应的参数化插件,能够设置公共变量 2、装置好插件Active Choices当前,此插件就是用来配置job内变量用的 如果是在window上来援用变量则用%%,在linux上就用${} %merchant% liniux: ${merchant} 在执行Python脚本或其余脚本中援用即可在执行Python脚本援用前,首先要在代码中引入argparse import argparse 用来传参数用的parser = argparse.ArgumentParser(description='manual to this script')parser.add_argument("--merchant", type=str, default="0")args = parser.parse_args()--merchant就是 python Data.py --merchant 10,31来援用参数,我此处是默认如果没有传参数应用一个列表,传参数的时候,更换列表的值,因为我这边要传一个列表,参数只会认为其是一个字符串,所以我在此处进行字符串宰割,在传入列表中,进行应用:

December 10, 2021 · 1 min · jiezi

关于Jenkins:Jenkins系列备份机制

Jenkins是主从模式,从节点能够做集群、负载,从而实现从节点的高可用,然而主节点是单节点,一旦主节点宕机,会导致Jenkins服务不可用。Jenkins主节点自身是不反对集群的,须要通过其余变通形式来实现。以后咱们也未实现主节点高可用,有打算的是会做主备模式,如果主节点宕机,可疾速切换到备用节点,复原服务 Jenkins 目录构造#Executable-war: /usr/lib/jenkins/jenkins.warJENKINS_HOME: /var/lib/jenkins即为Jenkins的装置目录,能够在Jenkins页面中失去,Jenkins->系统管理-> 零碎设置 +- config.xml (jenkins root configuration) +- *.xml (other site-wide configuration files) +- userContent (files in this directory will be served under your http://server/userContent/) +- fingerprints (stores fingerprint records) +- plugins (stores plugins) +- jobs +- [JOBNAME] (sub directory for each job) +- config.xml (job configuration file) +- workspace (working directory for the version control system) +- latest (symbolic link to the last successful build) +- builds +- [BUILD_ID] (for each build) +- build.xml (build result summary) +- log (log file) +- changelog.xml (change log)如果有权限治理,则在HOME目录下还会有users目录。 ...

December 9, 2021 · 1 min · jiezi

关于jenkins:Jenkins笔记之新建任务

@TOC Jenkins笔记 Jenkins笔记之新建工作:https://blog.csdn.net/weixin_... Jenkins笔记之配置近程服务器:https://blog.csdn.net/weixin_... Jenkins:参数化构建:多分支|多模块|回滚|打印日志:https://blog.csdn.net/weixin_... 1` 必要条件:装置环境Docker或者JDK+Maven+Git/Svn 2` 增加形式:从零配置、复制配置 从零配置点击左侧性能列表----新建工作 填写工作名称,点击构建一个maven我的项目,点击确定 进入配置列表 配置构建历史设置源码治理这里抉择git多种认证形式任选其一 构建触发器:依据本人的需要设置,简略的工作不须要配置。 构建环境:这里能够配置近程服务器的命令行,然而最好放在Build实现之后(Post Steps)再执行脚本,再Post Steps执行近程服务脚本,能够打印出日志。 Pre Steps 先Clean再install Post Steps 多种公布步骤任你抉择 间接在Jenkis服务器通过脚本执行[外链图片转存失败,源站可能有防盗链机制,倡议将图片保留下来间接上传(img-imZrHBWG-1629689671588)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210823104307405.png)] 执行脚本的命令须要应用用根门路 scp -P 2021 /data/jenkins/workdir/jobs/xxx/workspace/xxx/target/xxx.jar devops@内网IP:/home/devops/xxx/ssh -p 2021 devops@内网IP "/data/initsh/xxx.sh"在指标服务器执行脚本,配置运行流程:Jenkins构建实现之后,连贯到指标服务器将Sources file文件的Jar复制到近程服务门路中,而后运行Exec Command脚本。 跳转到---》配置近程服务器配置如下: Source files **/* 示意sskzmz这个job的工作目录下所有的文件和目录。Remove prefix 该操作是针对下面的source files目录,会移除匹配的目录。通常留空。Remote directory 该操作是基于设定的服务器目录进行。这里我的服务器配置是的/www. 因而这里应该写sites/sskzmz即可。Exec command 近程服务器执行的命令。例如能够输入 service nginx restart 或者/www/xx. sh 均可。高级:Exclude files:排除的文件(在你传输目录的时候很有用,应用通配符,例如:/*.log,/*.tmp,.Git/)Pattern separator:分隔符(配置Transfer Set Source files的分隔符。如果你这儿更改了,下面的内容也须要更改)No default excludes:禁止默认的排除规定(具体的本人看帮忙)Make empty dirs:此选项会更改插件的默认行为。默认行为是匹配该文件是否存在,如果存在则创立目录寄存。选中此选项会间接创立一个目录寄存文件,即便是空目录。(集体了解)Remote directory is a date format:近程目录建设带日期的文件夹(须要在Remote directory中配置日期格局)Flatten files:只上传文件,不创立目录(除了近程目录)Exec timeout (ms):运行脚步的超时工夫(毫秒)Exec in pty:模仿一个终端执行脚步Add Transfer Set:减少一个配置sh 脚本(两种形式脚本统一) ...

December 8, 2021 · 2 min · jiezi

关于jenkins:Jenkins快速上手安装

[TOC] Jenkins 是一个独立的开源自动化服务器,能够用来自动化与构建、测试、交付或部署软件相干的所有工作。 Jenkins的前身是Hudson, Hudson是SUN公司期间就有的CI工具,起初因为ORACLE收买SUN之后的商标之争,创始人KK搞了新的分支叫Jenkins 。明天的Hudson还在由ORACLE继续保护,但风头曾经远不如社区以及CloudBees驱动的Jenkins. 对于Hudson 和Jenkins的恩怨,有趣味可查阅 https://www.oschina.net/news/... https://jenkins.io/doc/ -> https://jenkins.io/doc/book/i...环境筹备 - JDK 装置留神: 如果将Jenkins作为Docker 容器运行,这不是必须的 Jenkins依赖java环境, 请先确保java环境已装置好, java装置流程如下: 下载jdk8 tar.gz包从jdk download page解压tar.gz包配置环境变量JAVA_HOME, JRE_HOME,CLASSPATH, PATH查看是否装置胜利: java & javac sudo wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/jdk-8u191-linux-x64.tar.gztar -zxvf ${your_download_path}/jdk-8u191-linux-x64.tar.gzmv ${your_download_path}/jdk1.8.0_191 /usr/local/vim /etc/profile# 在文件开端加上上面内容:export JAVA_HOME="/usr/local/jdk1.8.0_191"export PATH=$PATH:$JAVA_HOME/bin使环境变量失效: source /etc/profile1. APT 装置https://pkg.jenkins.io/debian/装置步骤 wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'sudo apt-get updatesudo apt-get install jenkins#可选:设置指定版本sudo apt-get install jenkins=2.138.1# 批改jenkins配置`/etc/default/jenkins`vim /etc/default/jenkins#配置jenkins运行用户以及用户组:JENKINS_USER=rootJENKINS_GROUP=root# 重启 jenkinssystemctl restart jenkins2. WAR包形式运行1.装置前筹备 Java 8 (either a JRE or Java Development Kit (JDK) is fine) ...

November 28, 2021 · 1 min · jiezi

关于jenkins:jenkins配置maven项目打包发布流程

环境相干配置在jenkins主页面左侧抉择Manage Jenkins,之后在上面抉择系统配置,配置maven环境:之后配置Publish over SSH,也就是将程序公布到的服务器:点击高级能够设置连贯的用户名明码等信息。 建设设置在主页面左侧抉择新建视图能够新增一个我的项目标签,之后点击左侧新建Item能够新建我的项目: 打包设置选中新建的我的项目,点击左侧的配置,其中git局部配置如下:其中账号局部是须要有我的项目权限的git账号。preStep这里能够设置maven打包命令,比方图中的跳过测试打包。接下来要配置公布的命令,这里须要设置打包后包的门路,公布的指标服务器相干门路与须要在服务器上执行的Linux命令:图中source files是打包当前须要上传的文件的门路,这里是上传一个zip包;remove prefix填target;remote directory即指标服务器根公布门路下的该我的项目公布的门路,根门路在之前系统配置外面配置Publish over ssh外面设置;执行指令这里倡议应用cd进入到以后公布门路执行解包启动我的项目等命令。 构建公布之后回到我的项目页面点击左侧立刻构建,即会将git分支上最新的代码打包公布。

November 3, 2021 · 1 min · jiezi

关于jenkins:搭建Jenkins并构建项目

Jenkins是个自动化构建部署工具。不须要咱们在应用原始的部署伎俩,极大的缩短了保护老本。 上面简要说一下本人应用的过程构建的maven我的项目和react我的项目 一.筹备环境Jenkins既然是做为构建部署工具,首先就须要拿到咱们的源码,其次再做编译打包,最初放到咱们的服务器目录下,启动。那么就须要咱们开发时用到的各种工具,比方jdk,maven,git,nodejs等,有的我的项目可能还会波及到Python,所以咱们还须要装置这些工具及环境。 jdk装置在线下载: wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm 手动下载及装置:官网下载一个jdk8(当然别的版本也能够),而后将jdk-8u131-linux-x64.tar.gz放到咱们须要的目录下,比方/usr/local/java/,应用命令tar -zxvf jdk-8u131-linux-x64.tar.gz将其解压。而后须要配置java的环境变量,执行 vim /etc/profile 命令并在文件最初加上如下配置: # Java 8u131 environmentexport JAVA_HOME=/usr/local/java/jdk1.8.0_131export JRE_HOME=/usr/local/java/jdk1.8.0_131/jreexport CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/libexport PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin保留退出,最初确保批改的/etc/profile文件失效,并用命令验证装置胜利 source /etc/profilejava -versionmaven 装置在线下载: wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz手动下载及装置:在官网上下载了tar.gz包,这里不倡议应用最新的3.8.1版本,而是抉择了3.6.3(点此下载)这个版本(3.8.1对https敏感,如果是http,则会呈现 downloading from maven-default-http-blocker: http://0.0.0.0/xxx这种问题)。将咱们下载的apache-maven-3.6.3.tar.gz放到目录下,比方 /usr/local/maven。 cd /usr/local/maven/tar -zxvf apache-maven-3.6.3.tar.gz这里须要配置maven的本地仓库地址以及镜像地址,这个都是在apache-maven-3.6.3/config/setting.xml中设置。不设置则应用默认的配置。 <localRepository>/data/maven/maven-repository</localRepository>......<mirrors> <mirror> <id>public</id> <mirrorOf>central</mirrorOf> <name>public</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> </mirror> </mirrors>当设置结束后,咱们还须要配置maven的环境变量,在/etc/profile 文件开端加上 # Mavenexport MAVEN_HOME=/usr/local/maven/apache-maven-3.6.3export PATH=${PATH}:${MAVEN_HOME}/bin保留退出,最初确保批改的/etc/profile文件失效,并用命令验证装置胜利 source /etc/profilemvn -vgit装置在线下载: wget https://www.kernel.org/pub/software/scm/git/git-2.32.0.tar.gz 手动下载及装置:官网找到linux版本的git,将其下载并放到linux须要的目录下,比方/usr/local/git,执行命令tar -zxvf git-2.32.0.tar.gz 将其解压。而后配置git的环境变量,这一步与配置jdk一样,须要在 vim /etc/profile文件的开端加上如下内容: # Git 2.32.0export GIT_PATH=/usr/local/git/binexport PATH=${PATH}:${GIT_PATH}保留退出,最初确保批改的/etc/profile文件失效,并用命令验证装置胜利 ...

October 25, 2021 · 2 min · jiezi

关于jenkins:Windowlinuxdocker-单台宿主机部署多个Jenkins节点

Window/linux(docker) 单台宿主机部署多个Jenkins节点在应用Jenkins过程中,减少了手动输出的步骤,会阻塞节点运行工作;因为资源无限,须要在一台机器挂载了很多Jenkins节点;Jenkins节点抉择java形式运行;环境: Windows10DockerApline LinuxOpenJdk11前置条件创立Jenkins节点时抉择“通过Java Web启动代理”实现后启动形式为命令,命令如下(Windows和linux只有门路区别):Windows启动命令如下:java -jar agent.jar -jnlpUrl http://192.168.0.1:8080/compu... -secret 1234567890abcdefg -workDir "F:\Jenkins_nodes\XuXiaoCong-Windows"Linux启动命令如下:java -jar agent.jar -jnlpUrl http://192.168.0.1:8080/compu... -secret 1234567890abcdefg -workDir "/var/jenkins"Window部署多个节点因为须要挂载很多节点,应用.bat批处理文件须要启动多个界面下载agent.jar,在Jenkins节点界面agent.jar是个下载链接,点击下载为每个节点创立一个批处理命令,命名为'<节点名称>.bat'将节点启动命令写入"java -jar agent.jar -jnlpUrl "将批处理命令与agent.jar放在同一文件夹双击启动,会关上一个CMD窗口(请勿敞开,否则节点下线)例子:XuXiaoCong-Windows.bat java -jar agent.jar -jnlpUrl http://192.168.0.1:8080/computer/XuXiaoCong-Windows/jenkins-agent.jnlp -secret 1234567890abcdefg -workDir "F:\Jenkins_nodes\XuXiaoCong-Windows"linux(docker)部署多个节点制作docker镜像镜像生成容器FROM alpineWORKDIR /jenkins# apk镜像RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories# 增加curl,git,openjdk11RUN apk add --no-cache curlRUN apk add --no-cache gitRUN apk add --no-cache openjdk11# 增加其余运行环境(这里以Python为例)RUN apk add --no-cache build-baseRUN apk add --no-cache python3RUN apk add --no-cache python3-devRUN apk add --no-cache py3-pip# Jenkins页面上的agen.jar门路(右键复制链接)RUN curl -o agent.jar http://192.168.0.1:8080/jnlpJars/agent.jar# 执行该节点(语句从Jenkins节点界面上复制)(只执行一条CMD,其余正文)# XuXiaoCong-Linux节点CMD java -jar agent.jar -jnlpUrl http://192.168.0.1:8080/computer/XuXiaoCong-Linux/jenkins-agent.jnlp -secret 1234567890abcdefg -workDir "/var/jenkins"# docker build -t jenkins-node-xuxiaocong-linux .# docker run -d --restart=always --name=jenkins-node-xuxiaocong-linux jenkins-node-xuxiaocong-linux# XuXiaoCong-Linux-1节点# CMD java -jar agent.jar -jnlpUrl http://192.168.0.1:8080/computer/XuXiaoCong-Linux-1/jenkins-agent.jnlp -secret 1234567890abcdefg -workDir "/var/jenkins"# docker build -t jenkins-node-xuxiaocong-linux-1 .# docker run -d --restart=always --name=jenkins-node-xuxiaocong-linux-1 jenkins-node-xuxiaocong-linux-1Windows中制作镜像cd <文件所在门路>docker build -t jenkins-node-<节点名称> .生成容器 ...

October 18, 2021 · 1 min · jiezi

关于jenkins:Jenkins多节点python环境隔离Windows

Jenkins多节点python环境隔离(Windows)应用Jenkins构建过程中,须要应用多个Jenkins节点并发构建因为条件限度,只有一台Windows宿主机,所以在这台宿主机上部署多个Jenkins节点shell命令中应用pip装置依赖,当多个构建并发时,有可能导致依赖被更改的状况所以须要有环境隔离这里仅针对非凡场景,构建的是GUI程序,必须应用Windows环境,如果其余状况,应用docker构建更佳,这里不做探讨参考文档: https://docs.python.org/zh-cn...应用python的venv虚拟环境pipeline { agent { label "Windows" } stages { stage('Build') { steps { //在当前目录下创立venv目录,用来搁置虚拟环境) sh 'python -m venv ./venv' //python的利用须要应用虚拟环境执行,即加上"./venv/Scripts/" //Linux中是"./venv/bin" sh './venv/Scripts/pip install pytest' } } stage('Test') { steps { sh './venv/Scripts/pytest' } } }}当python曾经设置环境变量时,能够间接应用"python -m venv ./venv"创立当存在不同版本python时,应用对应版本的绝对路径"C:\Users\Administrator\AppData\Local\Programs\Python\Python39\python -m venv ./venv"创立执行命令会笼罩旧环境(pip装置的依赖没有删除,须要自行测试是否有影响)

October 18, 2021 · 1 min · jiezi

关于jenkins:Jenkins如何跳过sonar执行CI

背景咱们公司采纳jenkins+sonar 继续集成检测代码品质,最近架构组新增了很多代码扫描规定,导致很多后端服务或者前后端未分离我的项目CI不通过,要将所有sonar检测进去的问题批改完会花一些工夫,影响到测试进度,为了长期解决这一问题,咱们能够长期正文掉品质校验的stage脚本,跳过sonar检测。 跳过sonar检测一、中断CI首先抉择你想要CI的我的项目,当启动CI之后点击“X”中断掉该CI流程 二、正文掉品质校验的stage脚本 进入“回放”,正文掉“品质门禁”stage脚本,而后点击底部“运行”从新CI

September 27, 2021 · 1 min · jiezi

关于Jenkins:云效Flow流水线源中Jenkins源该如何配置

Flow 反对将Jenkins 服务配置为流水线源,流水线源,作为 Flow 流水线的输出源头,能够从 文件托管服务 或者 其余第三方服务 中获取原料,并将这些原料放入到工作区。那么咱们该如何通过云效Flow来配置Jenkins 源呢,这篇文章通知你答案。 流水线会对输出获取并放入工作区的原料进行解决,解决的目标可能是执行的内容可能是编译打包、执行自动化工作、版本制作。 流水线解决输入的后果可能包含软件的测试报告、压缩文件、目录、文档等等。 配置 Jenkins 源 云效Flow 反对将您的 Jenkins 服务配置为流水线源,当流水线触发运行时,Flow 会依据您的配置下载 Jenkins 工作的构建产物并执行后续工作。你的构建产物须要在 Jenkins 的工作中先进行归档操作。 在流水线编排页,点击“增加源”,在新建流水线弹框中抉择”Jenkins”,输入您的 Jenkins 公网地址、用户、明码,实现账号绑定。 抉择 Jenkins 工作 Job 名称和对应默认版本,实现配置。 请确保您的 Jenkins 服务配置了公网进口。 云效流水线Flow 反对Jenkins 服务配置为流水线源,在理论利用过程中,存在构建环节和部署环节拆散的场景。因而,Flow 提供了流水线之间触发的能力,您能够将流水线 A 设置为流水线 B 的触发源,当流水线 B 被触发运行时,Flow 会依据您的配置下载源流水线 A 中的构建产物并执行后续工作。

September 27, 2021 · 1 min · jiezi

关于jenkins:记录Jenkins新版本API请求出现403的Crumb问题

问题形容近期将jenkins从低版本升级到最新的2.312版本之后,对jenkins发动的API调用,均呈现 403 谬误。 curl -s -XPOST http://127.0.0.1:8080/credentials/store/system/domain/_/createCredentials \> --user admin:pass@word1 --data-urlencode 'json={quote> "": "0",quote> "credentials": {quote> "scope": "GLOBAL",quote> "id": "credential_id_here",quote> "username": "username_here",quote> "password": "password_here",quote> "description": "My new credentials",quote> "$class": "com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl"quote> }quote> }'<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"/><title>Error 403 No valid crumb was included in the request</title></head><body><h2>HTTP ERROR 403 No valid crumb was included in the request</h2><table><tr><th>URI:</th><td>/credentials/store/system/domain/_/createCredentials</td></tr><tr><th>STATUS:</th><td>403</td></tr><tr><th>MESSAGE:</th><td>No valid crumb was included in the request</td></tr><tr><th>SERVLET:</th><td>Stapler</td></tr></table><hr><a href="https://eclipse.org/jetty">Powered by Jetty:// 9.4.43.v20210629</a><hr/></body></html>依据网上查找的材料显示,是因为jenkins开启了 CSRF Protection , 其实低版本也有这个性能,只是可能不欠缺,或者没有限度的这么死,如下图所示: 上图中左侧为降级前的旧版本 2.183,右侧为新版本 2.312,能够看到旧版本容许敞开跨域爱护,新版本不容许。通过一轮测试和钻研,发现的确无奈敞开。 ...

September 18, 2021 · 2 min · jiezi

关于jenkins:Jenkins进阶后端CICD

什么是后端自动化后端自动化不是指主动生成代码,而是自动化构建我的项目。 如果没有自动化, 咱们的后端从开发到提测工作流程可能如下:1.本地机器上写代码2.提交代码,push 到 git 近程仓库3.执行mvn clean package单元测试并且打包jar包4.ssh/ftp发包至测试服务器等各种形式5.重启java服务这个流程中,每一个步骤都要反复人工操作,很大减少了工夫老本。对于单元测试或者打包的后果,没有一个主动的反馈机制,须要人工校验运行后果,最初部署也是人工登录服务器执行脚本,十分繁琐。 引入自动化当前,整个流程变成:1.本地机器上写代码2.提交代码,push 到 git 近程仓库3.git hook 触发 jenkins 的构建 job4.jenkins job 中拉取我的项目代码,运行mvn clean package或者mvn clean package -Dmaven.test.skip=true5.jenkins job 中执行测试服务器的部署脚本 在 自动化流程中,只有步骤1和步骤2须要人工操作,其余步骤都是主动运行,是一个十分标准化的流程,缩小了人工操作的危险,省去了重复性工作。 实现流程图 开发人员提交代码至代码库触发jenki构建工作构建胜利,jar包发至服务器,执行重启脚本,服务更新结束构建失败,通过钉钉告诉/企业微信/邮箱等等形式揭示开发人员代码构建失败1.筹备工作:筹备git我的项目:https://github.com/wzc570738205/backendproject.git筹备钉钉群(用来接管CI/CD后果告诉):35669766筹备装置了jenkins的云服务器:这里自行购买,装置参考在linux服务器上安装Jenkins 2.接入代码提交告诉当你在往代码库推送了代码,通过git的webhook主动给钉钉发送音讯 2.1增加钉钉群机器人(智能群助手)复制webhook,接下来会用到 2.2将钉钉webhook增加至github对应相应的webhook里 2.3 测试代码提交告诉配置实现,咱们提交下代码进行测试 至此,代码提交告诉配置实现 3.接入我的项目CI当咱们提交完代码后,咱们须要校验下此次代码合并有没有致命性谬误,这里咱们采取简略的办法即容许mvn clean package,如果运行没有报错,那么阐明此次提交是通过的。失败则阐明代码有致命谬误,须要进行批改 3.1 jenkins新建我的项目装置插件Maven Integration plugin 创立一个构建一个maven我的项目的job源码管理器抉择git,并填入地址以及凭证(没有就新建一个)构建触发器抉择:GitHub hook trigger for GITScm polling构建环境: clean package -Dmaven.repo.local=/var/jenkins_home/.m2/repository -Dmaven.test.skip=true构建后操作(可选):咱们通过jenkinsjob的执行胜利与失败来确定CI是否胜利 3.1.1 测试再次提交代码,胜利触发jenkins的job 构建胜利 3.2 接入构建状态钉钉告诉(这里和前端接入一样,这里不再论述)配置钉钉自定义机器人,并抉择平安设置自定义关键词,这里设置#即可下载jenkins插件DingTalk,用来进行钉钉告诉 配置插件=>系统管理抉择钉钉,填入方才的自定义机器人webhook地址我的项目里开启机器人告诉点击开始构建,进行测试 期待CI完结失败揭示 至此,CI配置完结,咱们实现了代码提交钉钉揭示,以及CI告诉揭示 4.接入CD在下面的步骤里咱们实现了CI的操作,也就是用是否能打包生成环境的包来进行倡议测试代码有没有致命性谬误。这一步通过后咱们须要把部署包发至nginx服务器 4.1 发包至服务器装置jenkins插件Publish Over SSH设置里配置插件,填入服务器ip,高级里应用明码,设置近程服务器文件夹/点击测试连通性增加构建后操作Send build artifacts over SSH,发包后并执行重启服务shell ...

September 13, 2021 · 1 min · jiezi

关于jenkins:jenkins-docker-nodejs-webhooks-配置自动化CICD流程

有时咱们不心愿应用风行的travsci或者circleci来配置自动化CI/CD,或者内网我的项目应用jenkins来作为自动化CI/CD的工具 如果要应用jenkins的jenkinsfile,您须要创立pipline,在配置选项中,您将看到jenkinsfile 您能够指定好您的代码仓库后,在脚本门路中配置您的脚本绝对于仓库的门路 <!-- more -->无关jenkins的自动化配置看这里无关jenkins的tty问题看这里无关jenkins的反向代理配置看这里无关jenkins的java11问题看这里无关jenkins的私钥格局谬误问题看这里无关jenkins的webhooks配置看这里 配置好后您只须要点击保留,再点击立刻构建或build now即可查看后果 附上运行胜利的截图 这里有docker和nodejs的JenkinsFile配置文件供您参考,无关jenkins的webhooks配置看这里

September 6, 2021 · 1 min · jiezi

关于jenkins:jenkins提示使用java11版本

个别状况下咱们应用java8来运行咱们的我的项目,但有时候会遇到我的项目须要应用其余版本的java来运行,jenkins就是其中之一。 <!-- more --> 问题解决去oracle官网下载一个jdk11的tar包,地位随你挑一个你喜爱的即可,而后间接调用外面的/bin/java文件来运行Jenkins的war包即可 tar -xzvf jdk-11.0.12_linux-x64_bin.tar.gz./jdk-11.0.12/bin/java -jar jenkins.war再次运行时便没有了该提醒,当然你也能够疏忽掉该谬误,只是可能呈现影响应用的小BUG 无关jenkins的自动化配置看这里无关jenkins的tty问题看这里无关jenkins的反向代理配置看这里无关jenkins的java11问题看这里无关jenkins的私钥格局谬误问题看这里无关jenkins的webhooks配置看这里

September 6, 2021 · 1 min · jiezi

关于jenkins:jenkins-自动构建项目SVN

创立一个maven格调的工程抉择版本控制工具 3.源码治理默认git 如果是svn 须要在插件治理外面下载插件,本次maven构建须要下载的插件有: Maven Integration SSH Deploy to container Subversion 抉择凭证信息 须要配置maven的信息点击 the tool configuration java 的配置也给安顿上 maven环境变量设置一下 而后利用保留 点击构建我的项目即可

August 27, 2021 · 1 min · jiezi

关于jenkins:Jenkins进阶前端CICD

什么是前端自动化前端自动化不是指主动生成代码,而是自动化构建我的项目。 如果没有自动化, 咱们的前端从开发到提测工作流程可能如下:1.本地机器上写代码2.在命令行输出 npm run unit/lint,查看单元测试/eslint校验后果3.提交代码,push 到 git 近程仓库4.执行 npm run build,构建我的项目5.ssh/ftp发包至测试服务器等各种形式这个流程中,每一个步骤都要反复人工操作,很大减少了工夫老本,不能保障操作的准确性。对于 unit 或者 build 的后果,没有一个主动的反馈机制,须要人工 check 运行后果,最初部署也是人工登录服务器执行脚本,十分繁琐。 引入自动化当前,整个流程变成:1.本地机器上写代码2.提交代码,push 到 git 近程仓库3.git hook 触发 jenkins 的构建 job4.jenkins job 中拉取我的项目代码,运行 npm run unit/lint 和 npm run build。5.jenkins job 中执行测试服务器的部署脚本 在 自动化流程中,只有步骤1和步骤2须要人工操作,其余步骤都是主动运行,是一个十分标准化的流程,缩小了人工操作的危险,省去了重复性工作,加强了我的项目的可见性。 实现流程图 开发人员提交代码至代码库触发jenki构建工作构建胜利,发包至nginx服务器,更新结束构建失败,通过钉钉告诉/企业微信/邮箱等等形式揭示开发人员代码构建失败1.筹备工作:筹备git我的项目:https://github.com/wzc570738205/frontproject.git筹备钉钉群(用来接管CI/CD后果告诉):35669766筹备装置了jenkins的云服务器:这里自行购买,装置参考在linux服务器上安装Jenkins 2.接入代码提交告诉当你在往代码库推送了代码,通过git的webhook主动给钉钉发送音讯 2.1增加钉钉群机器人(智能群助手)复制webhook,接下来会用到 2.2将钉钉webhook增加至github对应相应的webhook里 2.3 测试代码提交告诉配置实现,咱们提交下代码进行测试至此,代码提交告诉配置实现 3.接入我的项目CI当咱们提交完代码后,咱们须要校验下此次代码合并有没有致命性谬误,这里咱们采取简略的办法即容许npm run build,如果运行没有报错,那么阐明此次提交是通过的。失败则阐明代码有致命谬误,须要进行批改 3.1 jenkins新建我的项目这里为简要步骤,详情请参考应用jenkins主动构建github我的项目 创立一个构建一个自在格调的软件我的项目的job源码管理器抉择git,并填入地址以及凭证(没有就新建一个)构建触发器抉择:GitHub hook trigger for GITScm polling增加node环境:系统管理/全局工具配置-新增nodejs,版本抉择适合的即可构建环境抉择node,勾选方才下载的node构建抉择执行shell: npm install -g cnpm --registry=https://registry.npm.taobao.org&&cnpm install&&npm run build 构建后操作(可选):咱们通过jenkinsjob的执行胜利与失败来确定CI是否胜利 3.1.1 测试再次提交代码,胜利触发jenkins的job构建胜利 ...

August 18, 2021 · 1 min · jiezi

关于jenkins:JENKINS-构建失败后请求HTTP接口的一些问题

1. 如果须要在JENKIS我的项目构建后,做SHELL或批处理BAT操作,须要应用插件 post build task 或 post build scripts.2. 依据我的应用教训,前者 在执行时候不能带参数,而后者能够带参数,前者做执行工夫长的脚本的时候容易内存溢出,因为须要匹配字符串。而后者 间接抉择JENKINS JOB的默认状态。 3. 说到这个post build scripts.带参数肯定,要留神,只能带环境变量的参数。上面做个邮件发送插件的参数和这个参数的辨别: a. 邮件的配置变量${GIT_BRANCH} - build 的 Git 分支${FILE,path="xxx"} - xxx 为指定的文件,文件内容能够在邮件中显示。留神:xxx 是工作区目录的相对路径,不是绝对路径。${JOB_DESCRIPTION} - 显示我的项目形容。${BUILD_NUMBER} - 显示以后构建的编号。${SVN_REVISION} - 显示 svn 版本号。还反对 Subversion 插件进口的 SVN_REVISION_n 版本。${CAUSE} - 显示谁、通过什么渠道触发这次构建。${CHANGES } - 显示上一次构建之后的变动。 ${BUILD_ID} - 显示以后构建生成的ID。${PROJECT_NAME} - 显示我的项目的全名。${PROJECT_DISPLAY_NAME} - 显示我的项目的显示名称。$ {SCRIPT} - 从一个脚本生成自定义音讯内容。自定义脚本应该放在 "$JENKINS_HOME/email-templates"。当应用自定义脚本时会默认搜寻 $JENKINS_HOME/email-templatesdirectory 目录。其余的目录将不会被搜寻。 ${JENKINS_URL} - 显示 Jenkins 服务器的 url 地址(能够在系统配置页更改)。${BUILD_LOG_MULTILINE_REGEX} - 按正则表达式匹配并显示构建日志。${BUILD_LOG} - 显示最终构建日志。${PROJECT_URL} - 显示我的项目的URL地址。${BUILD_STATUS} - 显示以后构建的状态(失败、胜利等等)。${BUILD_URL} - 显示以后构建的URL地址。${CHANGES_SINCE_LAST_SUCCESS} - 显示上一次胜利构建之后的变动。${CHANGES_SINCE_LAST_UNSTABLE} - 显示显示上一次不稳固或者胜利的构建之后的变动。${ENV} - 显示一个环境变量。${FAILED_TESTS} - 如果有失败的测试,显示这些失败的单元测试信息。${PROJECT_URL} - 显示我的项目的 URL。$ {JELLY_SCRIPT} - 从一个Jelly脚本模板中自定义音讯内容。有两种模板可供配置:HTML和TEXT。你能够在 $JENKINS_HOME/email-templates 下自定义替换它。当应用主动义模板时,”template”参数的名称不蕴含“.jelly”。${TEST_COUNTS} - 显示测试的数量。 ...

August 4, 2021 · 2 min · jiezi

关于jenkins:Jenkins-pipeline-拉取gitlab项目大文件失败

背景:pipeline都根本是一个模板,参照:Jenkins Pipeline演进。最近新上了一个我的项目。springcloud的聚合工程,8个子我的项目。原本是要求程序间接提交代码到gitlab,我间接本人maven打包,并且docker build构建镜像并公布到线上环境。然而程序喜爱集体提交jar包(每个jar包100m左右)。gitlab比拟老只开明了http形式,并没有开明ssh形式。开始还好jenkins还能公布,昨天晚上间接不能公布了....报错如下: RPC failed; HTTP 504 curl 22 The requested URL returned error: 504 Gateway Time-out解决问题思路:嗯git文件过大!。解决形式无非两种: 1.减少ssh形式clone形式批改为ssh。老的不想动了,并且容器外面clone构建的。整ssh的形式就不采纳了。 2.获取最新的版本--depth=1的形式如下: stage("GetCode"){ agent { label "build01" } steps{ script{ println("下载代码 --> 分支: ${env.branchName}") checkout([$class: 'GitSCM', branches: [[name: "${env.branchName}"]], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'CloneOption', depth: 1, noTags: false, reference: '', shallow: true]], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'laya-open-php', url: "${env.gitHttpURL}"]]]) } } }extensions参数中减少depth等参数!嗯总算能够拉动代码了 思考:1. git的正确应用形式。应不应该去放大文件?git应该怎么去应用?3. 灵魂拷问:打包与制品的治理?3. 如果推动程序去布局化打包公布流程?

July 30, 2021 · 1 min · jiezi

关于jenkins:Jenkins-插件之-Configuration-as-Code-自动化配置你的-Jenkins-IDCF

在上一篇介绍的 [如何利用 Helm 在 Kubernetes 上疾速部署 Jenkins](https://segmentfault.com/a/11...) 文章中,咱们解说了如何利用 Helm 官网提供的 Jenkins Chart,来疾速部署一个满足咱们需要的 Jenkins 实例。 尽管新部署的 Jenkins 实例主动为咱们装置了所有所需的插件,并配置好了初始化 Job 等工作,但在开始应用它之前,咱们仍须要实现一系列手动工作,如配置 Jenkins 的 “Configure System” 页面: 如果你是一名 Jenkins 管理员,那么你肯定不会对这个页面感到生疏,每次部署完一个新的 Jenkins 实例,在能够应用之前,咱们往往都须要在该页面作出一些相应的配置。该页面除了蕴含 Jenkins 本身的一些根本配置信息外,同时还包含了以后零碎中所装置的插件的配置信息。也就是说,当你的 Jenkins 装置的插件越多,该页面的配置项就有可能会越多。 而除此之外,你可能还须要对它进行一些其它的诸如配置 Jenkins 平安相干的配置项、创立 Jenkins Credentials、配置 Jenkins Job 的工作节点(包含物理节点和 Cloud 节点)等手动工作。 而 Jenkins Configuration as Code ,正是这样一款可能帮忙咱们从这些大量手动配置的工作中解放出来的 Jenkins 插件。本文将简略介绍什么是 Jenkins Configuration as Code 以及如何在 Helm Chart 中应用它来主动配置咱们所部署的 Jenkins 实例。 Jenkins Configuration as Code 简介Jenkins Configuration as Code,又名 JCasC,它容许咱们将所有对于 Jenkins 的配置以 YAML 的格局写入到配置文件中去,并通过对装有该插件的 Jenkins 实例利用这些配置文件,来实现一键式自动化配置 Jenkins 的目标。 ...

July 19, 2021 · 5 min · jiezi

关于Jenkins:Centos6安装配置Jenkins

1.装置java yum install -y java2.装置git yum install -y git3.引入jenkins源到yum并装置 sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.reposudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.keyyum install jenkins4.批改配置并启动 vim /etc/sysconfig/jenkins批改项 JENKINS_USER="root"JENKINS_PORT="8888"启动 service jenkins start拜访 http://www.xxx.com:8888/5.常见问题如果界面提醒Jenkins正在启动,请稍后…或者提醒Please wait while Jenkins is getting ready to work… vim /var/lib/jenkins/hudson.model.UpdateCenter.xml替换url变成 <?xml version='1.1' encoding='UTF-8'?><sites><site> <id>default</id> <url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url></site></sites>重启jenkins服务

June 29, 2021 · 1 min · jiezi

关于jenkins:Jenkins-控制台输出中的奇怪字符

有时候,在对一些文件进行编译的时候,会看到上面的奇怪输入字符。 e[1;33m 如上图显示的貌似一些乱码的货色。 问题和解决 其实这个不是问题,这是因为在你的程序中可能应用了 ANSI escape code 这种输入。 其目标是为了在中断中显示黑白的输入内容。 这种显示方式如果你的终端不反对的话就会显示出下面的相似乱码。 针对 Jenkins ,你则须要通过装置 AnsiColor 这个插件来解决了。 插件的名称为 AnsiColor ,无关插件我的项目的地址,请参考链接:https://plugins.jenkins.io/ansicolor/ 中的内容。 具体装置的办法咱们就不在这里说了,你能够通过拜访 Jenkins 的插件界面,通过搜寻插件名称来进行装置。 上图显示曾经装置胜利的插件。 Jenkins 中的配置 在 Jenkins 中拜访你须要进行配置的我的项目。 而后在我的项目的构建环境变量(Build Environment) 中抉择 Color ANSI Console Output 这个选项。 而后保留退出后再对你的我的项目在 Jenkins 上进行从新编译。 这个时候就能够在管制台上看到黑白输入了。 如上图显示的黑白输入。 https://www.ossez.com/t/jenkins/13520

June 26, 2021 · 1 min · jiezi

关于jenkins:Unittest接口自动化测试二UnittestGithubJenkins持续化集成

代码写完了,就差自动化集成了 一、Jenkins服务搭建1、linux搭建jenkinswar部署:1.下载安装包jenkins.war;2.在安装包根门路下,运行命令 java -jar jenkins.war --httpPort=80803.关上浏览器进入链接 http://ip地址:80804.填写初始密码,激活零碎#默认明码:cat /var/lib/jenkins/secrets/initialAdminPassworddocker部署:下载镜像:docker pull jenkins/jenkins查看本地镜像:docker images 镜像实例化:mkdir -p /var/jenkins_nodechmod -R 777 /var/jenkins_nodedocker run -d -uroot -p 80:8080 --name jenkins -v /var/jenkins_node:/var/jenkins_home jenkins/jenkins查看容器是否运行:docker ps进入容器:docker exec -it -uroot jenkins /bin/bash2、linux搭建Git环境yum install git #装置gitgit version #验证是否装置mkdir /xx/xx #创立目录cd /xx/xxgit init #初始化仓库git remote add origin +地址 #连贯到gitgit pull origin +分支 #拉取代码二、构建我的项目1、配置Git代码拉取源码治理:抉择我的项目源码地址,抉择git,输出仓库地址,而后增加Credentials用户校验2、设置定时工作构建触发器抉择:定时结构(上面是15分钟运行一次)每行蕴含5个字段,顺次为分钟、小时、日、月、星期几 H/15 * * * *3、构建cd /home/paynewinn/ApiTest_Chinamobilegit pull --rebase origin mainpython3 /home/paynewinn/ApiTest_Chinamobile/run_all_case.py实现后点击利用即可

June 21, 2021 · 1 min · jiezi

关于jenkins:JenkinsK8S自动化集成和部署SpringCloud微服务和Nextjs项目

前言最近在学习如何应用jenkins联合阿里云k8s自动化集成和部署springcloud微服务和前端next.js我的项目,当初记录下来分享给大家,文章有什么不妥的中央,心愿大佬们批评指正。 DevOps CI/CD架构 面向对象纯熟应用vue或者react纯熟应用SpringCloud微服务纯熟应用docker容器纯熟应用jenkins自动化运维工具纯熟应用k8s(deployment、service、ingress)筹备工作1、购买阿里云ACK集群(或者自行搭建) 我购买的是阿里云ACK托管版,创立集群地址 留神:创立ACK集群不免费,免费的是外面的NAT网关、SLB负载平衡、ECS服务器等 2、装置gitlab 这里我之前写了一篇阿里云ECS搭建gitlab,装置gitlab地址 3、装置jenkins 这里我之前写了一篇阿里云ECS搭建jenkins,装置jenkins地址 4、装置docker 应用官网举荐yum 装置比拟不便,装置如下: sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.reposudo yum install docker-ce docker-ce-cli containerd.io零碎架构 Next.js 前端开发Next.js我的项目: 服务:react+next.js服务端口:3000,K8S:Deployment+Server+IngressPod名:demo-webappDockerfile FROM node:12# 设置工作门路。所有的门路都会关联WORKDIRWORKDIR /usr/src/app# 装置依赖COPY package*.json ./RUN npm install# 拷贝源文件COPY . .# 构建利用RUN npm run build# 运行利用CMD [ "npm", "start" ] SpringCloud微服务开发1、服务发现: 微服务:SpringCloud Eureka,微服务名:demo-eureka-server微服务端口:8761,K8S:Deployment+Service+Ingress(因为要通过网址查看服务注册状况,所以要增加ingress)Pod名:demo-eureka-server2、服务配置: 微服务:SpringCloud Config微服务名:demo-config-server微服务端口:8888,K8S:Deployment+ServicePod名:demo-config-server3、服务认证和受权: 微服务:SpringSecurity + Oauth2微服务名:demo-auth-service微服务端口:8901,K8S:Deployment+ServicePod名:demo-auth-service4、网关服务: 微服务:SpringCloud Zuul微服务名:demo-auth-service微服务端口:5555,K8S:Deployment+Service+Ingress(服务网关是所有服务对外惟一入口,所以要配置ingress)Pod名:demo-auth-service5、编写Dockerfile、K8S yaml 为了不便起见,下面的微服务名和Pod名都设置雷同名称,具体的服务开发过程这里就临时疏忽,前面有工夫再写篇搭建企业级微服务的文章吧,相干微服务的目录构造如下所示: ...

June 4, 2021 · 6 min · jiezi

关于jenkins:Jenkins-构建Golang项目记录

jenkins.sh: #!/bin/bashJAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-1.el7_9.x86_64pid=`ps -ef | grep jenkins.war | grep -v 'grep'| awk '{print $2}'| wc -l` if [ "$1" = "start" ];then if [ $pid -gt 0 ];then echo 'jenkins is running...'else nohup java -jar jenkins.war > jenkins.log --httpPort=8080 2>&1 & fi elif [ "$1" = "stop" ];then exec ps -ef | grep jenkins | grep -v grep | awk '{print $2}'| xargs kill -9 echo 'jenkins is stop..'else echo "Please input like this:"./jenkins.sh start" or "./jenkins stop"" fi开启 ./jenkins.sh start 进行 ./jenkins.sh stop ...

June 2, 2021 · 1 min · jiezi

关于jenkins:Jenkins使用教程

1.进入系统管理进行配置 1.1插件治理查看是否装置了 Publish over SSH 和 Deploy to container (Plugin) 以及Gitee插件。先点已装置,在搜寻栏搜寻一下,我这里装置好了就能够在已装置这里搜进去若没有搜到则须要装置,那就点一下可选插件,搜寻下载,下载好之后重启一下Jenkins 1.2零碎设置输出JenkinsURL,即 ip:端口号,和管理员邮件地址(选填)输出gitee链接名(随便编写)和gitee的链接,抉择证书令牌,第一次没有须要增加增加证书,类型抉择API令牌,而后输出令牌,如果没有在这里获取 https://gitee.com/profile/per... ,填写实现后点增加并且选中,点击右下角的test能够测试链接输出近程服务器的明码,服务器名称(可任意取),服务器ip,登录服务器的用户名,上传代码的根目录等,点保留返回主页设置ssh server 输出name,ip等信息,其中ip是服务器的公网ip,用户名为登录实例时用的账号名,寄存源码的地址为寄存门路,可在Linux找到上传的源码的门路,可本人设置门路(有则用,无则主动新建) 1.3全局平安配置如果有启动平安选项必须勾上,平安域容许用户注册,受权策略勾选任何人可用,点保留返回主页 1.4全局工具配置配置maven,jdk,git,等门路,点保留返回首页 2.进行部署2.1新建工作点击右边的新建工作,新建一个我的项目的工作输出名称,抉择第一项自在格调的我的项目 根底配置默认即可 源码治理抉择git,填入URl,选中Jenkins令牌,跟1.2相似若填入后呈现无奈连贯,请点击下一行的增加-Jenkins,第一次设置须要增加类型抉择username with password ,填写gitee的用户名和明码,id能够不填,填完之后下拉点增加就能够了 构建触发器(可不抉择)勾选触发近程构建,随便输出身份令牌例如,下面的回调地址 http:// ip : 端口号/job/test/build?token=token_tv只有执行这个地址(在浏览器上拜访改地址),该我的项目就会发动一次构建我的项目,即拉取代码打包部署操作 构建环境环境临时无需构建 构建增加,抉择调用maven指标(invoke top-level Maven targets),抉择maven版本,指标填写clean install 构建后操作抉择该项填写实现后,点击保留返回 构建我的项目点击立刻构建,上面会有工作以及进度条,能够点击工作,进入详情,点击控制台输入能够看有没有胜利或者报错 点击控制台输入,能够看到运行过程,呈现success就是胜利了

May 29, 2021 · 1 min · jiezi

关于jenkins:Jenkins安装教程

Jenkins装置教程装置Jenkins,须要装置docker和jdk,还没装置docker或者jdk的,请先看另外的文档——docker的装置配置、jdk的装置配置 1.把Jenkins 库增加到yum repos:wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo 2.拉取资源rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key3.装置Jenkinsyum install -y jenkins4.配置Jenkins关上Jenkins文本进入编辑模式 vi /etc/sysconfig/jenkins 把USER中双引号的内容改成root,把port改成不抵触的端口即可比方我的是8085,就把port前面的8080换成8085 5.启动Jenkins输出以下命令启动Jenkins service jenkins restart 5.1启动胜利 5.2启动失败这里是Jenkins配置的jdk问题,应用以下命令打开文档进行编辑 vi /etc/init.d/jenkins在/usr/bin/java后面减少本人的JDK门路 ,具体写到java!!!增加实现之后重启Jenkins,就会呈现5.1的胜利启动 service jenkins restart 6.凋谢端口登录咱们的服务器,进入平安组-点击配置规定在配置规定外面,手动增加咱们的刚刚第4步设置的端口,端口范畴填写刚刚设置的端口,比方我的就是8085/8085 ,源抉择默认的0.0.0.0/0,能够本人决定是否增加形容,而后保留即可 7.解锁Jenkins7.1首次启动须要解锁,在windows或者mac本机关上浏览器,输出“ip:端口” ,进入解锁(假如服务器的公网ip为192.168.1.1,刚刚凋谢的端口为8085),那就在浏览器输出192.168.1.1:8085,进入Jenkins解锁界面(若输出有误,能够检查一下服务器是否关上,平安组中开发的端口号与第4步中的端口号是否统一,若无发现问题,能够进入7.2宝塔解决无奈登录Jenkins问题)若胜利登录解锁界面,进入以下界面依据红色的门路找到相干文件,将文件内的明码输出到文本框中(近程连贯后点左上角的文件关上文件数,也能够用宝塔的“文件”),找到这个文件,双击关上,复制内容到文本框中如果找不到该文件,能够间接用以下命令行关上该文档,来复制管理员明码如果文件放的地位不一样,那就是vi (红色的门路) vi /var/lib/jenkins/secrets/initialAdminPassword输出结束之后,进入以下界面,举荐应用装置举荐的插件,期待装置实现装置实现之后,创立第一个管理员用户,输出用户名和明码等信息进入下一步点击保留并实现后,进入以下界面,实例URL配置,这个个别跟解锁Jenkins时输出的内容是一样的,也是服务器ip:端口号,所以默认保留即可保留实现后,呈现以下界面,Jenkins就装置实现了这是主界面7.2宝塔解决无奈登录Jenkins问题后面查看了各项设置,都没有问题,可能是防火墙的这个端口没有胜利凋谢,咱们能够进入宝塔来进行设置,(若对宝塔不理解的,或者是没有装置应用过宝塔的,能够参考另外一个文档——宝塔的装置应用)7.3局部用户可能不是中文的,能够抉择汉化,点击右边那个齿轮图标,再点左边的绿色图标抉择第二项可选插件,搜寻Locale,下载,勾选重启,下载实现之后重启Jenkins局部版本的Jenkins可能还须要装另外一个插件Localization: Chinese如果还没有变成中文,那可能还须要装置这个插件,如果以及变成中文,可能就是短少这个插件(留神,装置完之后必须重启Jenkins,插件才会失效,切记!切记!切记!)

May 28, 2021 · 1 min · jiezi

关于jenkins:记录Jenkins在m1上使用的坑

最近在搞iOS的混同工具链,一个xcode上的插件,遇到一个客户用的是m1电脑,好家伙,用xcode编译是胜利的,用shell脚本xcodebuild也是胜利的.唯独jenkins里调用本地shell脚本就是失败的,报 not supported -fembed-bitcode,这就感觉像是xcode混同工具链变成了原生工具链,很是奇怪.起初发现jenkins有可能是通过java调的本地shell脚本,jenkins装置的jdk是x86_64版本的,而xcodebuild是arm64和x86_64双架构的,可能在编译间接jdk的x86_64切换成xcodebuild的arm64切出问题了.如何解决这个问题在xcodebuild后面加arch -arm64,强制应用arm64架构arch -arm64 xcodebuild -toolchain

May 7, 2021 · 1 min · jiezi

关于jenkins:Jenkins-Operator-Jenkins-在-Kubernetes-上正确的打开方式-IDCF

前言本月中旬,Jenkins Operator 正式成为 Jenkins 的子项目[1],这将在很大水平上弥合 Jenkins 和 Kubernetes 之间的鸿沟。 Operator 是 Kubernetes 的一种扩大机制,用户能够利用这种扩大机制来让本人的利用以 Kubernetes native(k8s 原生)的形式在 kubernetes 平台上运行起来。对于 Operator 更多具体的内容,能够在 Kubernetes 官网文档[2]上查看。 Jenkins 是一款社区弱小、API & 插件丰盛、用户泛滥且开源的继续交付工具。为了让 Jenkins 能在 Kubernetes 上更好的运行,Jenkins 社区提供了 Jenkins Operator。Jenkins Operator 是基于不可变性和申明式的配置即代码来构建的。对于 Operator 的其余信息能够在Jenkins Operator GitHub 和 Jenkins Operator 官网文档[3]进行查看。 以下演示过程中所波及的代码均在 https://github.com/majinghe/jenkins-operator.git 库中,须将上述库的代码下载到本地,再执行后续操作。入门篇:jenkins-operator 的介绍及装置装置装置的前提条件: 一个版本为 1.11+ 的 Kubernetes 集群kubectl 的版本为 1.11+第一步:Jenkins CRD 创立执行以下命令来创立 Jenkins CRD $ kubectl apply -f jenkins_crd.yamlcustomresourcedefinition.apiextensions.k8s.io/jenkins.jenkins.io createdcustomresourcedefinition.apiextensions.k8s.io/jenkinsimages.jenkins.io created第二步:Jenkins Operator 的装置此 Operator 是 jenkins-operator 的外围,次要的目标是用来对 jenkins 这种资源的治理,包含创立、删除等,后续会演示。此 Operator 的装置有两种形式: ...

May 7, 2021 · 5 min · jiezi

关于jenkins:JenkinsAllure美化单元测试报告

装置插件搜寻装置 Allure Jenkins Plugin 插件Manage Jenkins -> Global Tool Configuration 的设置如下:当Jenkins检测没有装置allure时,主动装置 POM配置build -> plugins 编辑如下插件 <!-- JUnit单元测试 --><plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <!-- 默认报告目录为 target/surefire-reports/ --><!--reportsDirectory>target/test-reports/</reportsDirectory>--> <argLine> -javaagent:${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar </argLine> <properties> <property> <name>listener</name> <value>io.qameta.allure.junit4.AllureJunit4</value> </property> </properties> <systemProperties> <property> <name>allure.result.directory</name> <value>${project.build.directory}/allure-results/</value> </property> <property> <name>allure.link.issue.pattern</name> <value>http://example.org/issue/{}</value> </property> </systemProperties> </configuration> <dependencies> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>${aspectj.version}</version> </dependency> </dependencies></plugin>dependencies 增加如下依赖 <!-- Allure丑化测试报告 --><dependency> <groupId>io.qameta.allure</groupId> <artifactId>allure-junit4</artifactId> <version>2.9.0</version> <scope>test</scope></dependency>Notes: maven-surefire-plugin和allure-junit4须要增加对应的版本 JenkinsfileDashboard -> {我的项目名} -> {分支名} -> Pipeline Syntax,获取allure命令批改 Jenkinsfile 如下 ...

April 22, 2021 · 1 min · jiezi

关于jenkins:python3-调用Jenkins模块实例

jenkins 配置 如果不想应用明码明码(以上操作很重要)pip3 install python-jenkins#!/usr/bin/python# -*- coding:utf-8 -*-import jenkinsimport os, sys, json, datetime, time#近程Jenkins的地址jenkins_server_url = 'http://172.16.117.180:8080/jenkins/'#定义用户的User Id 和 API Token,获取形式同上文user_id = 'admin'#passwd = '119deb4xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'passwd = 'admin'#server = jenkins.Jenkins(jenkins_server_url, username=user_id, password=passwd)#应用 API_Token 进行Jenkins登录操作server = jenkins.Jenkins(jenkins_server_url, username=user_id, password=passwd)#应用get.version()办法获取版本号version = server.get_version()print(version)#job_name = 'test_jmeter'job_name = 'pipline_test-litx'# #构建job名为job_name的job(不带构建参数)# server.build_job(job_name)arg_dic = { 'envv': 'dev' }#String参数化构建job名为job_name的job, 参数param_dict为字典模式,如:param_dict= {"param1":“value1”, “param2”:“value2”}server.build_job(job_name, parameters=arg_dic)#获取job名为job_name的job的相干信息jenkins_info = server.get_job_info(job_name)print(jenkins_info,"######job_name的job的相干信息")##获取job名为job_name的job的最初次构建号jenkins_buildID = server.get_job_info(job_name)['lastBuild']['number']print(jenkins_buildID,"##########job_name的job的最初次构建号")#获取job名为job_name的job的下一次构建号next_build_number = server.get_job_info(job_name)['nextBuildNumber']print(next_build_number)time.sleep(10)#获取job名为job_name的job的某次构建的执行后果状态jenkins_status = server.get_build_info(job_name,next_build_number)['result']print(jenkins_status,'####ob_name的job的某次构建的执行后果状态')#判断job名为job_name的job的某次构建是否还在构建中jenkins_running = server.get_build_info(job_name,next_build_number)['building']print(jenkins,'###########job的某次构建是否还在构建中')time.sleep(3)build_info = server.get_build_info(job_name, next_build_number)print(json.dumps(build_info, sort_keys=True,indent=4, separators=(',', ':'))) ...

March 24, 2021 · 1 min · jiezi

关于jenkins:原创笔记CICD系列之二jenkins安装

CICD系列之二:jenkins装置 1. 确保装置了JDK2. 敞开防火墙和SELINUXsystemctl stop firewalld systemctl disable firewalld sed -i 's/enforcing/disabled/' /etc/selinux/config setenforce 0 3. 装置:形式一: wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/red...rpm --import https://jenkins-ci.org/redhat...yum install -y jenkins 或者形式二: wget http://pkg.jenkins-ci.org/red...rpm -ivh jenkins-2.190.3-1.1.noarch.rpm 主动装置实现之后: /usr/lib/jenkins/jenkins.war WAR包 /etc/sysconfig/jenkins 配置文件/var/lib/jenkins/ 默认的JENKINS_HOME目录/var/log/jenkins/jenkins.log Jenkins日志文件 4. 配置jenkins的端口vi /etc/sysconfig/jenkins JENKINS_PORT="8080" 此端口不抵触能够不批改(netstat -anp|grep 8080) 5. 启动jenkinsservice jenkins start vi /var/lib/jenkins/updates/default.json (要做启动后更改不然会被笼罩)connectionCheckUrl "http://www.baidu.com" vi /var/lib/jenkins/hudson.model.UpdateCenter.xmlhttps://mirrors.tuna.tsinghua... service jenkins restart 查看装置状态装置胜利后Jenkins将作为一个守护过程随系统启动零碎会创立一个“jenkins”用户来容许这个服务,如果扭转服务所有者,同时须要批改/var/log/jenkins, /var/lib/jenkins, 和/var/cache/jenkins的所有者启动的时候将从/etc/sysconfig/jenkins获取配置参数默认状况下,Jenkins运行在8080端口,在浏览器中间接拜访该端进行服务配置Jenkins的RPM仓库配置被加到/etc/yum.repos.d/jenkins.repo 卸载service jenkins stopyum clean allyum -y remove jenkinsrm -rf /var/cache/jenkinsrm -rf /var/lib/jenkins/ ...

March 12, 2021 · 1 min · jiezi

关于jenkins:Jenkins详细安装教程

一、前言本文次要介绍两种快捷搭建jenkins的办法 二、、Jenkins简介Jenkins是一个开源软件我的项目,是基于Java开发的一种继续集成工具,用于监控继续反复的工作,旨在提供一个凋谢易用的软件平台,使软件的继续集成变成可能。 三、依照前筹备工作1、曾经装置好docker2、或者装置好宝塔面板 四、装置办法办法一:docker形式装置下载jenkins镜像docker pull jenkins/jenkins2、创立jenkins挂载目录并赋权限 mkdir -p /var/jenkins_mountchmod 777 /var/jenkins_mount3、创立并启动Jenkins容器 docker run -d -p 10240:8080 -p 10241:50000 -v /var/jenkins_mount:/var/jenkins_home -v /etc/localtime:/etc/localtime --name myjenkins jenkins/jenkins-d 标识是让 docker 容器在后盾运行-p 10240:8080 将镜像的8080端口映射到服务器的10240端口-p 10241:50000 将镜像的50000端口映射到服务器的10241端口-v /var/jenkins_mount:/var/jenkins_mount /var/jenkins_home目录为容器jenkins工作目录,咱们将硬盘上的一个目录挂载到这个地位,不便后续更新镜像后持续应用原来的工作目录。这里咱们设置的就是下面咱们创立的 /var/jenkins_mount目录--name定义一个容器的名字,如果没有指定,那么会主动生成一个随机数字符串当做UUID 4、配置镜像减速,进入/var/jenkins_mount/下的hudson.model.UpdateCenter.xml文件,批改为一下内容 <?xml version='1.1' encoding='UTF-8'?><sites> <site> <id>default</id> <url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url> </site></sites>5、首次拜访jenins(ip:10240)须要解锁输出cat /var/jenkins_mount/secrets/initialAdminPassword获取解锁明码 6、装置插件(抉择装置举荐的插件) 7、装置实现后主动跳转到创立用户界面8、创立完后进入首页 办法二:宝塔面板装置1、在宝塔面板中依照java我的项目管理器2、关上java我的项目管理器抉择装置tomcat83、进入/www/server/tomcat8/webapps目录,而后抉择近程下载依照jenkins war包(下载地址:http://mirrors.jenkins.io/war...)4、浏览器输出地址:ip:8082/jenkins即可5、反复办法一的6,7即可实现配置 五、总结本文也是整顿了网上装置jenkins的办法,后续还会更新jenkins的应用办法

March 1, 2021 · 1 min · jiezi

关于jenkins:让你工作效率提升975倍的秘籍竟然是

作者|个推高级安卓研发工程师 萨其拉 引言在个推SDK 开发过程中,通常而言一个残缺的开发上线流程是这样的:提出需要-> 需要开发 -> 打包测试 -> 问题修复 -> 打包交付测试验证 -> 测试通过 -> 产品上线。 在这个流程中,不难发现打包是一项重复性劳动,而且咱们经常会反复经验问题修复阶段,也就意味着咱们在一个开发上线周期内须要进行多个重复性的打包过程。如果能优化这个环节,那么开发效率就能失去显著晋升。 除此之外,手动打包往往还容易引入一些危险,比如说打包环境不统一、签名文件透露、效率低、包的溯源治理艰难等等,所以咱们须要一套继续集成的计划来缩小这种重复性劳动以及标准打包流程。Jenkins作为继续集成的计划,领有丰盛的插件反对,以下咱们将为大家介绍个推基于Jenkins的构建实践经验。 Jenkins 简介Jenkins 是一款开源的 CI&CD 软件,用于自动化各种开发工作,包含构建、测试和部署软件等。Jenkins 反对多种运行形式,比方通过零碎包、Docker 或者独立的 Java 程序的运行。对于 Jenkins 构建 Android 实际,能够参考小编写的这篇教程 《应用 Jenkins 构建 Android 利用》: https://jenkins-zh.cn/tutoria... 开发者能够通过抉择流水线的形式来创立一个 PipeLine 构建工作,如下: 通过创立 Jenkinsfile 进行版本控制,如下: Jenkins Pipeline 容许你像写代码一样治理你的构建脚本。咱们通常能够通过创立 Jenkinsfile 管制版本从而更好地进行性能的更新迭代。一个申明式流水线语法的根本构造如下: pipeline { agent any stages { stage('Build') { steps { // } } stage('Test') { steps { // } } stage('Deploy') { steps { // } } }}pipeline 和agent别离是申明式流水线的两种特定语法,后者为流水线指定了一个特定的工作区。stages 由多个不同的stage组成,stage能够展现在 stage view 中,用来示意构建环节中的不同阶段。steps咱们能够了解成每个构建阶段中蕴含的不同步骤。通常咱们的构建指令能够在这里编写。 ...

January 5, 2021 · 2 min · jiezi

关于jenkins:Jenkins基于jobs为不同用户授权

Jenkins中的平安矩阵受权类型只能基于全局为用户或用户组赋权,若要满足多个技术团队同时应用,针对不同的用户为其凋谢相应jobs的所需权限,能够装置插件 "Role-based Authorization Strategy" 来实现 插件装置实现后在平安配置里抉择受权形式为Role-based Strategy 进入到“系统管理” → “Manage and Assign Roles” → “Manage Roles” 按需增加全局角色(最小权限为全副的read,否则登录后看不到任何jobs)增加我的项目角色,“Role to add”处填写项目名称,Pattern处可正则匹配jobs名称(如dev.*可匹配所有dev结尾的jobs),若Jenkins中有目录分层,则此处需匹配最外层  再到 “Assign Roles”页面可看到刚刚创立的各个角色,按需增加用户或组即可至此已实现针对局部jobs为用户受权的配置,上图“item roles”中勾选iot-beta和iot-local的用户登录Jenkins,仅显示名称为iot-beta和iot-local结尾的jobs

December 30, 2020 · 1 min · jiezi

关于jenkins:Jenkins-node项目自动构建配置

一 Jenkins 新建工作 输出工作名称,抉择创立一个自在格调的我的项目。 二 工作构建配置 作者用的是git,这里用git做例子。输出我的项目的git地址,和用于登录git账号密码。指定分支抉择你想构建的git分支。 勾选构建触发器,用于git更新代码后会主动推送到jenkins主动构建。 减少构建步骤抉择:Execute shell 输出shell命令 npm install rm -rf ./dist/*npm run buildrm -rf /usr/local/tomcat/webapps/website/*cp -rf ./dist/* /usr/local/tomcat/webapps/website 点击保留利用。而后回到主面板。点击我的项目进入到我的项目面板。点击Build Now立刻构建。 构建实现,然而左下角构建历史爆红阐明构建失败。点击工作空间右侧曾经呈现了我的项目,阐明从git地址和用户名账号没问题。 点击左下角报错列表后的下拉框抉择控制台输入看下谬误日志 找到谬误,website不是目录,阐明咱们服务器上tomcat webapps下没有这个文件。登录服务器查看下。 果然没有,咱们新建website文件夹。 mkdir website回到Jenkins再次构建下。 构建胜利,看下控制台输入。 从控制台能够看出文件曾经被打包胜利,并且曾经放到tomcat下,进入tomcat下看看。 哈哈,这就是咱们想想要的成果。启动tomcat拜访试试吧!三 配置Git更新后主动构建 登录github上并抉择到我的项目仓库,点击设置。 抉择webhooks 并点击add webhook payload URL:Jenkins服务器地址+端口号+/github-webhook。减少webhook后,当代码提交会通过webhook通知Jenkins过去拉取代码主动构建。配置结束。

December 8, 2020 · 1 min · jiezi

关于jenkins:Jenkins-凭证管理-看这一篇就够了

[TOC] 许多三方网站和利用能够与Jenkins交互,如Artifact仓库,基于云的存储系统和服务等. 在Jenkins中增加/配置credentials,Pipeline我的项目就能够应用 credentials 与三方利用交互 Credential 类型参考: https://jenkins.io/zh/doc/boo... Jenkins能够存储以下类型的credentials: Secret text - API token之类的token (如GitHub集体拜访token)Username and password - 能够为独立的字段,也能够为冒号分隔的字符串:username:password(更多信息请参照 解决 credentials)Secret file - 保留在文件中的加密内容SSH Username with private key - SSH 公钥/私钥对Certificate - a PKCS#12 证书文件 和可选明码Docker Host Certificate Authentication credentials.Credential 平安为了最大限度地进步安全性,在Jenins中配置的 credentials 以加密模式存储在Jenkins 主节点上(用Jenkins ID加密),并且 只能通过 credentials ID 在Pipeline我的项目中获取 这最大限度地缩小了向Jenkins用户公开credentials实在内容的可能性,并且阻止了将credentials复制到另一台Jenkins实例 Credential 创立抉择适宜的凭证类型 创立 “Username and password” 凭证 创立 “SSH Username with private key” 凭证 Credential ID 定义在 ID 字段中,必须指定一个有意义的Credential ID- 例如 jenkins-user-for-xyz-artifact-repository。留神: 该字段是可选的。 如果您没有指定值, Jenkins 则Jenkins会调配一个全局惟一ID(GUID)值。请记住: 一旦设置了credential ID,就不能再进行更改。Credential 应用参考: https://www.jenkins.io/doc/bo... ...

December 3, 2020 · 2 min · jiezi

关于jenkins:持续集成对IT团队和企业分别有哪些好处

对于各行各业的公司而言,软件是要害的竞争劣势。公司越快地将新的加强性能和个性推向市场,所取得的竞争劣势就越大。为了取得这种当先劣势,企业开发团队须要优化其工作流程以提高效率、品质和可靠性。 因而,开发团队采纳继续集成(CI)来减速和自动化软件交付生命周期。CI是继续交付(CD)不可或缺的DevOps流程,它将代码提交到源代码治理中,并主动“继续”执行构建。继续集成代码以使IT团队及其业务同行都受害的形式改良了流程。 继续集成对IT团队的益处CI继续解决、测试并上传对代码库所做的更改或增加。该代码保留在源代码治理管理系统中,所有开发人员都能够应用该零碎进行测试和参考。任何应用该应用程序的开发人员都能够拜访最新代码。继续集成为IT团队带来了很多益处,以下是对IT团队及其集体成员影响最大的 1.缩小谬误和手动工作CI要求团队标准化流程并利用最佳实际,以便能够轻松地反复执行。而后,团队就能够使可反复过程自动化,从而缩小了人工工作,并缩小了人为谬误的概率。因为团队缩小了对手动工作的关注,他们能够将更多的工夫用于策略打算和其余高价值我的项目。 2.及早发现并解决集成挑战继续集成会定期测试代码,以及早发现并解决问题。传统上,开发人员期待更长的工夫(通常是几周或几个月)来集成代码和测试代码,直到最初才发现问题。应用CI,开发人员能够定期构建和测试代码,一次集成较小的代码块。这样能够更轻松地疾速发现问题并查明问题出在哪里。开发人员能够立刻解决问题,而不是在未发现的问题之上构建代码。当团队施行残缺的继续交付办法时,问题解决和测试将失去进一步改善,因为CD要求团队在整个环境之间建设一致性。后果,团队解决了断开测试和生产环境所带来的常见问题。代码在每种环境中的性能雷同,因而在将代码公布到生产环境后,团队遇到新问题的可能性较小。 3.更短的交付周期CI是较大的继续交付过程的一部分,该过程专一于将较小批次的代码从开发减速到生产。在继续集成过程中,代码会更频繁地提交到源代码管理系统,这使团队能够更快地构建、测试、部署和公布代码。后果是缩短了交付周期,可帮忙IT团队在更短的工夫内实现更多的小型我的项目。 继续集成对企业的益处继续集成不仅会影响每天应用它的IT团队。它还对IT业务对手(包含市场和销售部门的软件终端、业务分析师)产生重大影响。对于企业用户,CI可改善对可推动企业倒退的最新加强性能和技术的拜访。以下是企业继续集成的三个次要劣势: 1.牢靠的高性能版本CI中的继续更新和测试自动化有助于确保牢靠、高质量的公布版本,而这些公布版本中蕴含较少的谬误和缺点。对于终端用户而言,这意味着能够更快地应用加强性能来推动业务增长。 2.缩小停机所产生的老本CI缩小了手动工作和谬误,也升高了公布后停机的危险。对于终端用户,这将提供更高的服务水平并进步生产率,尤其是当CI扩大到CD时,CD会主动在测试环境和生产环境中进行部署。但更重要的是,因为企业无需破费工夫和资源来解决停机问题,它能够大大降低老本。 3.软件更快地投放市场更快的构建工夫、更牢靠的代码和测试以及缩小的停机次数,都能够为公司及其用户更快地向市场交付新的加强性能——通常是在较大的间断交付过程中进行的。公司能够应用其加强的性能来为其客户改善产品和服务,并在市场上取得竞争劣势。 继续集成可实现继续交付继续集成只是继续方法论的一个因素 。通过在较大的间断交付框架内施行继续集成,创立残缺的CI / CD流水线以推动业务和IT性能的进步,大多数公司看到了最大的收益。 然而,CI和CD的最重要方面是确保不仅从IT团队角度,而且从业务角度掂量收益。IT团队与业务联系越严密越好。

November 20, 2020 · 1 min · jiezi

关于jenkins:jenkins-前端项目自动化部署

[仅做记录,不含原理] jenkins 配置前端我的项目 新建工作->设置工作名称->抉择[构建一个自在格调的软件我的项目] 配置源码通过git拉取(须要实现配置git账号) 配置构建环境 减少构建步骤,比方 装置npm库,执行各种脚本 接着推到对应的服务器目录 须要当时在[系统管理->零碎设置]配置通过ssh连贯的服务器 抉择推送的服务器,以及推送过来后的一些操作。(个别操作,须要在服务器开操作权限) The end.

November 12, 2020 · 1 min · jiezi

关于jenkins:Jenkins-自动构建node-vue项目配置

* Jenkins 新建工作 输出工作名称,抉择创立一个自在格调的我的项目。* 工作构建配置 作者用的是git,这里用git做例子。 输出我的项目的git地址,和用于登录git账号密码。指定分支抉择你想构建的git分支。 勾选构建触发器,用于git更新代码后会主动推送到jenkins主动构建。减少构建步骤抉择:Execute shell输出shell命令npm install rm -rf ./dist/*npm run buildrm -rf /usr/local/tomcat/webapps/website/*cp -rf ./dist/* /usr/local/tomcat/webapps/website 点击保留利用。而后回到主面板。点击我的项目进入到我的项目面板。点击Build Now立刻构建。 构建实现,然而左下角构建历史爆红阐明构建失败。点击工作空间右侧曾经呈现了我的项目,阐明从git地址和用户名账号没问题。 点击左下角报错列表后的下拉框抉择控制台输入看下谬误日志 找到谬误,website不是目录,阐明咱们服务器上tomcat webapps下没有这个文件。登录服务器查看下。 果然没有,咱们新建website文件夹。mkdir website回到Jenkins再次构建下。 构建胜利,看下控制台输入。 从控制台能够看出文件曾经被打包胜利,并且曾经放到tomcat下,进入tomcat下看看。 哈哈,这就是咱们想想要的成果。启动tomcat拜访试试吧!http://localhost:8080/website。* 配置Git更新后主动构建 作者这里用的是Github,gitlab同理。登录github上并抉择到我的项目仓库。点击设置。 抉择webhooks 并点击add webhook payload URL填写:Jenkins服务器地址+端口号+/github-webhook。点击减少。配置结束。当代码提交后后会通过webhook通知Jenkins过去拉取代码主动构建。

October 20, 2020 · 1 min · jiezi

关于jenkins:CICD实战服务自动构建与部署

导语 随着微服务、容器、云计算的倒退,近些年 DevOps、CI/CD 等概念越来越多地映入大家的眼帘。许多开发团队都心愿利用这些理念来进步软件品质和开发效率,工欲善其事必先利其器,什么样的工具才可能满足开发者的需要?TARS 作为一套优良的开源微服务开发经营一体化平台,领有多语言、高性能、麻利研发、高可用等特点。那么 TARS 是否可能完满反对 DevOps 理念呢?本文通过将开源 CI 工具 Jenkins 与 TARS 集成,进行一次残缺的实际来展现如何实现 TARS 服务的自动化构建与部署的流程。 目录什么是 DevOps 和 CI/CD后期筹备环境部署 TARS 开发环境装置 Jenkins配置 Jenkins拜访 Jenkins插件装置创立 admin 用户关联代码仓库生成 secret text设置 GitHub Webhooks配置 GitHub Plugin自动化构建创立工作新建 TarsCpp 我的项目push 到 GitHub主动构建触发自动化部署批改我的项目 Webhook 配置获取 TarsWeb 接口 Token创立工作部署服务主动部署触发 什么是 DevOps 和 CI/CD 随着微服务、容器、云计算的倒退,近些年 DevOps、CI/CD 等概念越来越多地映入大家的眼帘。DevOps 是当初风行的一种软件开发办法,将继续开发、继续测试、继续集成、继续部署、继续监控等贯通到软件开发的生命周期中,用于进步软件的开发品质,被以后简直所有顶级公司采纳。 CI/CD 是实现 DevOps 理念的重要一环,咱们先来理解一下概念:CI 指继续集成(Continuous Integration),CD 指继续交付(Continuous Delivery)和继续部署(Continuous Deployment),意思是通过一系列自动化的脚本执行,实现开发过程中的代码的交付和部署,实现疾速交付,进步团队开发的效率。 越来越多的开发团队都心愿通过 DevOps 来进步软件品质和开发效率,工欲善其事必先利其器,TARS 作为一套优良的开源微服务开发经营一体化平台,领有多语言、高性能、麻利研发、高可用等特点。通过将开源 CI 工具 Jenkins 与 TARS 集成即可实现针对TARS服务开发的 CI/CD 流程。 ...

September 28, 2020 · 4 min · jiezi

关于jenkins:Jenkins设置登录超时

Jenkins 默认的登录超时是 30分钟,这对频繁操作的人有点麻烦。所以须要手动设置一下,最简略的方法是批改启动参数: vim /etc/default/jenkins在最初一行批改 JENKINS_ARGS ...JENKINS_ARGS="--webroot=/var/cache/$NAME/war --httpPort=$HTTP_PORT --sessionTimeout=1440 --sessionEviction=1440"其中 1440 = 60 * 24,也就是 24小时。

September 23, 2020 · 1 min · jiezi

关于jenkins:持续集成有什么好处快来看鸭

目录一、继续集成流程二、继续集成的益处三、需了解几个 Jenkins 的概念 1.Jenkins 的工作空间目录怎么改2.怕历史数据占用内存太多如何配置四、Master/Slave 模式五、其它好玩的配置一、继续集成流程 正式接管开发转过来的包之前,先从 svn 上下载代码,给它做次动态代码查看,而后编译打包。能够在开发的服务器或者本人的服务器运行单元测试文件。单元测试后,没用什么大的 bug,再部署到测试环境中。测试环境部署实现后先做冒烟测试,尽快看看主流程有没有问题。如果冒烟测试没问题就做回归测试。当然 Jenkins 也能够做其它事件。 以上 6 个流程,能不能都做失去,都是看公司状况来决定的。 代码查看有 2 种形式,开发本人查看代码叫做代码走查,动态代码查看是 Jenkins 主动执行的。 二、继续集成的益处 本地环境什么都有,所以开发打包齐全没问题。然而把它丢到另外一个环境中就容易呈现短少依赖包的状况,因为别的环境没有,本机是有的。 如果用机器,会在代码中表明哪些包必须有,哪些包必须引进来。因为有编译脚本,编译脚本中必须依赖第三方的包,打包的时候就要留神。打包的代码也是测试写的,打包的时候应该把哪些文件上面的包全部打进来,写代码的时候一次就写好。当前机器就能打包了。 三、需了解几个 Jenkins 的概念 「插件只是将性能集成进 Jenkins 外面」 ,具体的性能还是得自身有。执行工作的时候,主机得有 git 下载代码的客户端等。除了插件,一样要匹配它的运行环境。 1.Jenkins 的工作空间目录怎么改?如果是用 Windows 的同学,有个 xml 文件,全局配置都在这里,然而这个文件你不会改,就千万别瞎改,不然 Jenkins 就报废了: 倡议第一次装置的时候本人抉择 Jenkins 的工作目录。 2.历史数据占用内存太多如何配置? 四、Master/Slave 模式 「Master 和 Slave 放在一台机器下来做,为什么第一次能够,第二次不能够?」 这种模式并不稳固。没条件的话就间接用主机好了。 五、其它好玩的配置在这里配置定制化的测试报告。 附件肯定是在 workspace 上面,而后把附件的门路以及文件名称放到这里: 公众号 「清菡软件测试」 首发,更多原创文章:清菡软件测试 80+原创文章,欢送关注、交换,禁止第三方擅自转载。 心愿我的文章能够帮忙你成长,感激点击在看和转发! ...

September 5, 2020 · 1 min · jiezi

关于jenkins:避免栽坑之掌握Jenkins工作原理

1.allure 装置好后,pytest 命令用不了之前装的插件是 pytest-allure-adaptor,然而新的 pytest 以及 allure 当中,插件的名字改名了,当初叫做allure pytest。 如果 pytest4.0 以上的,那就把 pytest-allure-adaptor 卸载掉,装置 allure pytest 查看曾经装置的版本: pytest --version,前面的配置步骤都是一样的。 卸载 allure-adaptor 插件:pip uninstall pytest-allure-adaptor 装置 allure pytest:pip install allure-pytest 如果呈现装置时出现异常,确认本人的抓包工具有没有关掉。 2.都配置好了,然而 allure 报告内容为空 测试报告的门路配置在这里,这个门路是针对以后工程的工作空间。什么是工作空间?只能是相对路径,不能是工作空间以外的门路。 如果不是主从模式: 如果装的主机,有个 jobs,确保以后这个工作空间下有 Outputs、allure_reports,如果没有就读不进去,测试报告为空喽。这个就是它的工作空间,所有的测试报告只能在这个目录以下,不能出这个目录,也不要想着配置里面的绝对路径。 这个不是工作空间的门路。是这个门路下的: 如果想你的工作空间下有 Outputs、alluredir,也是每次执行之后都能把报告生成到正确的门路。必须在当前工作空间下执行 pytest 命令,能力失去想要的成果。或者把 alluredir 指明生成在咱们当前工作空间下: 就是这里。 3.Jenkins 的工作原理先从 git/svn 上下载源码,间接存在当前工作空间目录(workspace)下,运行 pytest 的命令执行用例生成报告。生成报告的门路看你怎么写(如果写别的盘里,例如 F 盘,就是存在本地。如果间接写在 workspace 下某个文件夹,那么就自身存在 workspace 上面)。插件把报告转换到 Jenkins 界面上,这样比拟不便。 公众号 「清菡软件测试」 首发,更多原创文章:清菡软件测试 80+原创文章,欢送关注、交换,禁止第三方擅自转载。 ...

August 29, 2020 · 1 min · jiezi

关于jenkins:Jenkins术语的变化

作者:Alex Earl 早在2016年,Jenkins我的项目就意识到须要做出一些扭转。即便在那时,“master”和“slave”这两个词依然与Jenkins想要成为的我的项目不统一。为了纠正“slave”一词的用法,咱们做了很大的致力,这是推动这个术语向前倒退的第一步。 在过来的四年中,Jenkins社区的一些成员始终致力于将“slave”一词从用户界面、文档、博客文章和其余畛域中移除。依然有工作要做,但咱们曾经在这方面获得了很大停顿。因为代码在GitHub上很容易取得,所以咱们正在寻找扭转代码的办法,同时咱们也想解脱一些与咱们的指标不统一的术语。“master”、“blacklist”和“whitelist”等术语是咱们接下来要解决的。 对于“whitelist”和“blacklist”这两个术语,咱们遵循了软件行业中其他人正在做的事件,采纳了“allowlist(容许名单)”和“denylist(回绝名单)”。这不是间接搜寻和替换,因为在某些状况下上下文很重要。在某些状况下,咱们能够用一个更长的理论文本形容来代替“allowlist”或“denylist”,从而为用户提供更多的信息。咱们打算在Jira中创立一个epic来跟踪这些变动,并在咱们做出更新时向社区报告。 “master”这个词自身能够有很多用法。一个纯熟的木匠是那些花了很长时间来工作的人,他们能够做很多事件,了解问题,并付诸行动打算来制作他们想要制作的货色。如果“master”的用法呈现在这样的语境中,可能就不会有扭转这个词的激动了。然而,在Jenkins中,“master”一词是和“slave”一起应用的,因而其外延是不同的,因而我的项目也心愿做出扭转。这也给了咱们一个机会来廓清Jenkins的各个方面,因为咱们做了这些扭转,以缩小对Jenkins性能的混同。同样,相似于“whitelist/blacklist”的更改,咱们打算在Jira中创立一个epic来跟踪必要的更改。 咱们曾经征求了来自社区的反馈意见,心愿用什么来代替“master”这个词,因为咱们心愿它在不同的语言中都是有意义的,并且咱们试图用什么来形容它。咱们在Condorcet进行了一个在线投票,以取得社区对被认为可行的替换条款的意见。在最近的一次Jenkins治理董事会会议上,该投票被用作对最终应用的术语进行投票的根底。在投票和治理委员会会议投票中,获胜者是术语“controller(控制器)”。工作曾经开始在Jira中产生问题来跟踪术语的批改。事实上,Jenkins平安团队在做出决定后的几天内批改了他们的大部分倡议,应用了这个新术语。在博客文章上做更多的工作,失常的jenkins.io内容等将很快到来! 我被问过很屡次的一件事是,“这真的会让事件变得更好吗?”扭转一个开源我的项目中的几个词,实际上会产生影响吗?我认为这会有所不同,但最重要的是人们要站起来,致力捣毁世界上的种族主义。这些术语的不同之处在于,作为Jenkins社区的一员,开发者会感到如许舒服。我过着特权的生存。我是一个白人、cis、男性。我不能齐全了解不同种族、性别、宗教信仰的人的感触。我晓得,如果这些小的扭转能让人们感到更难受,或者更能融入Jenkins社区,那么这些致力是值得的。让我换一种形式说,即便只有一个人感到更难受或更被咱们的社区所承受,咱们所做的任何致力都是值得的。 在今后的致力中还会遇到挑战。咱们在Jenkins的代码中有一些类,它的插件也蕴含了这些术语。这将破费咱们大量的精力来放弃向后兼容性,并且不会毁坏用户应用,但这是咱们将要做的事件。 咱们始终在寻找帮忙这些致力的人。社区成员能够通过在Jira中创立对于这些术语在哪里呈现的问题,提交拉申请来修复它们,并参加对于如何使Jenkins成为一个更具备包容性的社区的对话来提供帮忙。Jenkins受到社区的推动,失去了世界各地许多人的奉献。咱们有一个有奉献精神的社区,咱们欢送任何违心奉献的人。 点击浏览网站原文。 为下一代继续交付合作提供一个中立的家。 CDF(Continuous Delivery Foundation,继续交付基金会)是许多快速增长的继续交付我的项目,包含Jenkins、Jenkins X、Spinnaker和Tekton,的供应商中立家园。CDF通过凋谢模型、培训、行业指南和可移植性重点来反对DevOps从业者。 Linux基金会是非营利性组织,是技术生态系统的重要组成部分。Linux基金会通过提供财务和智力资源、基础设施、服务、流动以及培训来反对创立永续开源生态系统。在共享技术的创立中,Linux基金会及其我的项目通过共同努力造成了不凡胜利的投资。扫描二维码关注LFAPAC微信公众号。

August 27, 2020 · 1 min · jiezi

关于jenkins:你的Helm安全吗

一、背景Kubernetes是目前最为风行、成为事实标准的容器集群治理平台,为容器化利用提供了部署运行、资源调度、服务发现和动静伸缩等一系列残缺性能。在Kubernetes当中,用户通过应用API对象,如Pod、Service、Deployment等,来形容利用的程序规定,而这些资源对象的定义个别须要写入一系列的YAML文件中,而后通过 Kubernetes 命令行工具Kubectl进行部署。因为通常应用程序都波及到多个Kubernetes API对象,而要形容这些API对象就可能要同时保护多个YAML文件,从而在进行 Kubernetes 软件部署时,通常会面临下述几个问题: · 如何治理、编辑和更新这些这些扩散的 Kubernetes 利用配置文件 · 如何把一套相干的配置文件作为一个利用进行治理 · 如何散发和重用 Kubernetes 的利用配置 Helm (https://helm.sh)的呈现就是为了很好地解决下面这些问题,是Kubernetes官网提供的包管理工具,次要是是通过治理被称作Helm Chart的包来形容和治理云服务的。应用 Helm后就不须要再编写简单的利用部署文件,能够以简略的形式在 Kubernetes 上查找、装置、降级、回滚、卸载应用程序。 在当初罕用的Helm V2架构中,有一个称为“Tiller”的服务端组件。Tiller是一个集群内服务器,可与Helm客户端进行交互,并与Kubernetes API服务器连贯。但因为Tiller具备root用户拜访权限,使得有人能够未经受权拜访Kubernetes服务器你,从而形成了很大的危险。 JFrog的专家,也是Helm的联结创始人,Rimas Mocevicius,提供了一种翻新的、优雅的办法——Tillerless Helm,来解决这种状况,从而爱护用户的Kubernetes集群。 二、Helm V2的利用架构从Helm v2开始,Helm的架构中有一个名为The Tiller Server的服务器局部,该服务器局部是一个与helm客户端交互并与Kubernetes API服务器连贯的集群内服务器。服务器负责以下各项工作: · 监听来自Helm客户端的传入申请 · 联合Chart和配置以创立公布版本 · 将Chart装置到Kubernetes中,而后跟踪后续版本 · 通过与Kubernetes交互来降级和卸载Chart 简而言之,客户端负责管理Chart,Tiller负责管理公布版本,其架构如下图所示:默认状况下,执行如下命令将Tiller部署装置到Kubernetes集群: helm init 同时还须要为Tiller创立并部署RBAC受权,使其领有执行工作的权限。Tiller罕用的RBAC受权如下所示: 目前这样的架构工作得很好,为用户提供了灵便和不便,但同时也存在一些平安问题。从下面的RBAC文件中能够看出,Tiller被授予了cluster-admin的角色,也就是说,Tiller在用户的Kubernetes集群中具备齐全的管理权限,这就具备了有人未经受权而拜访和管制集群的危险。 三、Helm V2 中的Tillerless计划其实,在Helm V2中创立Tillerless的架构也并不艰难,可能为Helm的利用提供更高的平安保障。JFrog的专家Rimas给出了优化的解决方案,而本节将通过细节的形容来解释该计划如何运行。 首先,能够将Helm客户端和Tiller都部署在工作站上,或者运行在CI/CD流水线中,而不须要将Tiller装置到Kubernetes集群之中。示例的装置形式如下: $ export TILLER_NAMESPACE=my-team-namespace $ export HELM_HOST=localhost:44134 $ tiller --storage=secret [main] 2018/07/23 15:52:29 Starting Tiller v2.10.0 (tls=false) ...

August 27, 2020 · 2 min · jiezi

关于jenkins:JFrog-Xray如何实现组件安全精准管理

背景在平安治理的工作中经常遇到互联网上新公布了一个包的破绽,此时部门须要立即晓得这个包的援用状况。遇到这种状况,平安治理部门往往是采纳发邮件让开发人员进行自查,并要求进行援用。 要求每个研发自查,并不是一个无效的管控形式,首先是开发人员要有足够的自觉性,其次工夫上也不可控,并没有一个无效的伎俩来束缚。还会造成没有援用的项目组,自行排查而浪费时间。 Xray工具介绍Xray能够依据包的状况来检测到依赖的我的项目。当呈现上述问题的时候,能够针对某一个包来反向排查,实现依赖我的项目的精准定位,从而精确告诉到使用者。能够大大晋升排查问题的效率,升高企业平安管控的老本。同时,能够设置包平安品质门限,阻断高危破绽的包进行援用。 Xray应用的教训分享应用了Xray尽管可能帮咱们节俭很多工作,然而工具还是要配合良好的管理手段以及正确的应用办法。不然也会带来一些问题。 比方一个包到发现破绽,破绽数据公布到公网源,同时破绽数据源再去爬取数据,再同步到咱们本地破绽库,这个过程也是须要肯定的工夫的,所以这个期间可能有一个空档期。如果这个破绽非常紧急,须要立即封闭,那么这个空档期的工夫须要由咱们平安团队来进行严格管控。如果齐全依赖破绽数据库源,这个工夫上做不到一个严格的可控性。 再就是咱们如果设置了一个绝对宽泛的品质门限,比方安全级别为高的依赖包不容许下载,那么随着破绽库的更新,每天可能都会有一些新的高危破绽被引入,有可能呈现昨天开发的时候这个包还没有问题,明天就不能引用了,这样对于开发团队的也是十分不敌对的。咱们在平安治理上要对破绽的危险进行分级: l 危险极高,要求开发人员立即整改并且24小时后阻断下载。 l 危险较高,给开发团队预留一周的工夫进行整改。 l 危险较低,阻断失效能够由平安管控的团队每个月或者每个季度进行定期自动更新。 那么此时咱们就须要对破绽组件进行一个精准的管理策略,将咱们须要屏蔽的破绽组件进行定期更新,并不是单纯的利用破绽库的规定进行组件的屏蔽。 Xray精准规定配置办法那么利用Xray精准的配置屏蔽规定配置呢? 首先,定义一条规定(Policies),比方高危破绽不许下载。其次,在创立watches的时候指定filter,通过filter来限度组件的监测范畴。 最初,如果这个范畴内的组件自身就有高危破绽,则这个组件则会被屏蔽下载,如果这个在以后没有破绽,咱们还能够通过自定义一条高危的破绽数据。 具体操作如下: 创立一个Policies在Xray首页Policies菜单页面中进行新建如下图: (注:policies在Xray中起到设定规定的作用) 填写名字,抉择类型Security,减少规定,填写规定信息,名字,抉择级别High,向下滚动页面抉择阻断下载 “block download”。向下滚动页面抉择阻断下载“block download”。如果要在CI构建中也要监控,那么勾选“ail Build”。 而后,创立Watches在Xray首页Policy菜单页面中进行新建如下图: (注:Watches在Xray中起到规定与Artifactory中资源关联的作用,也就是设定下面Policies的作用域)填写名字,勾选Enabled启动,减少须要监管资源(构建或者仓库)抉择须要阻断的组件包存在的仓库在增加资源界面抉择仓库之后应用,Filters指定破绽组件的全门路,或者组件包名,增加实现资源的同时抉择方才的新增的policies。以上配置实现之后,那么这个仓库的只会针对这个包进行规定的监控,当这个包存在破绽时,会被阻断下载。 创立自定义破绽依据下面设置的规定,如果咱们监控的这个组件包存在破绽,则会被阻断下载。那么如果这个组件没有破绽须要怎么做呢? 此时须要应用Xray自定义破绽的性能,针对这个包咱们自行添加一个破绽。 在Xray的Components菜单中搜寻咱们组要阻断的组件名,进入组件列表,找到咱们须要阻断的组件版本,在右上角Action ,抉择Assign Custom issue弹出如下窗口,填写名称与形容后,将安全级别设置为High,通过这个级别来适配咱们下面创立的Policies,触发咱们Policies的阻断规定。填写完之后,点击保留,之后就能够看到咱们自定义的破绽了。 欢送观看JFrog杰蛙每周二在线课堂,点击报名: https://www.bagevent.com/even...

August 24, 2020 · 1 min · jiezi

关于jenkins:微服务监测的五大原则

一、背景==== 容器和微服务的呈现并失去大量利用,从根本上扭转了利用零碎的组成和运行形式。而随着开发人员开始利用编排零碎来治理和部署容器,规定进一步产生了变动。以往主机上的一个简略利用,当初已成为一个简单的、动静编排的、多容器的体系架构,这同时也对利用的监测提出了全新的挑战。 Sysdig,是专一于系统故障排查和监控工具的公司,其产品Sysdig Cloud是定位于容器系统故障排查和监控的平台。在往年召开的JFrog SwampUp用户大会上,Sysdig公司提出监测容器及构建在其上的微服务的五大要害准则。这些准则充分考虑了容器和微服务与传统架构在运维形式上的差别。 本文即是依据Sysdig公司在本次大会上的演讲视频整顿而成的。 二、微服务是什么========= 要正确地监测微服务,首先要正确地了解什么是微服务。 演讲首先援用了Martin Fowler对于微服务的定义(Martin Fowler是国内驰名的面向对象分析设计、UML、模式等方面的专家,麻利开发的创始人之一,现为ThoughtWorks公司的首席科学家。很多人理解微服务架构都是从Martin Fowler的这篇文章开始的),即“微服务架构”形容了一种将软件应用程序设计为一组可独立部署的服务的特定形式。其中,“围绕业务能力的个性”,也就是说,微服务的划分不是根据程序的大小,而是以业务能力的拆分为基准的。这种业务细分后的服务,以及自动化部署、端点智能、去中心化管制这四大概念,是设计如何监测微服务时须要时刻思考的。 传统架构下,利用的所有性能都实现在同一过程下,利用的扩大就是在多个服务器上复制整体的过程。而在微服务架构下,利用性能被拆分成了粒度更小、互相独立的服务,而这些服务都可能被独立地治理和部署。这样,利用的扩大和批改都能够按需只针对局部服务进行,而不会影响其余正在运行的服务。 微服务并不是SOA(Service-Oriented Architecture,面向服务架构), 微服务相比SOA里的服务而言具备更小的关注点。这种全新的架构理念也带动了基础架构等多个畛域的翻新,其中就包含了针对利用的监测。 三、容器是什么======= 以后很多微服务都是运行在容器的根底之上的,那么设计针对微服务的监测同样要思考容器的个性。 首先须要强调的是,容器(Container)并不是轻量级的虚机,它不像虚机一样领有独立的虚拟化的操作系统,而是间接构建和运行在主机的操作系统之上。 容器除了镜像(image),也就是咱们分层构建进去的指标利用之外,还包含了主机操作系统提供的过程沙盒(sandbox)。过程沙盒保障了容器之间的隔离,使得每个容器都像是运行在一台独立的虚机之上。 过程沙盒包含以下几个局部: · 控制组(Cgroups):规定了能够应用的资源的数量,如CPU、内存、网络等; · 命名空间(namespaces):规定了能够应用哪些控制组提供的资源; · 平安模块(Seurity Modules)实现了容器之间的隔离。 在理论利用的过程中,容器的开发者和使用者都关注在镜像上,感觉不到过程沙盒的存在。过程沙盒的这些局部是由容器的运行态程序主动和镜像加载在一起的。 四、微服务与容器从以上针对微服务和容器概念的回顾和剖析来看,二者的个性是十分匹配的。利用容器的各种特点可能便捷地实现微服务架构的各种设计须要。 因而,尽管微服务架构刚刚呈现时也是运行在虚机之上的,但目前大多数的微服务都是基于容器来实现的。那么设计针对微服务的监测也同样要思考到容器的个性。 在咱们的设计和印象当中,微服务应该是依照上图这样清晰的架构运行的。然而理论状况并非如此。随着微服务和容器规模的扩充,咱们真正面对的是如下图一样的场景。显然,在这样的场景下,要全面、精确、无效地实现对微服务的监测,是一个微小的挑战。 五、监测微服务的五大要害准则微服务和容器的呈现和大量利用,带动了架构、开发、部署、运维等多个畛域的翻新,也对利用的监测提出了新的要求。在传统架构中,监测关注的是虚机或主机上运行的单体利用。而在微服务+容器的架构下,利用曾经合成为更细粒度、互相隔离、独立运行的过程。那么针对微服务的监测也就须要转向针对这些过程的关注。 Sysdig在此次大会上介绍了监测微服务利用须要遵循的五大要害准则: 1、监测容器,同时也要监测容器内运行的利用针对于容器内运行的过程,监测要分外关注针对其应用资源的限度,以避免单个容器占用和耗费主机的所有资源,从而影响到主机上其余容器的运行。同样,针对编排器同样要监测和限度对主机资源的占用,尤其是在利用规模主动调整的时候,要保障正当地应用主机资源。 同时,咱们不能把容器当成黑盒,必须监测到容器内运行的各种利用,如各种服务过程、数据库等。监测要收集这些利用运行的各种度量指标,如JVM的各种参数等。当然,监测也应该收集那些开发者本人定义的,针对容器内利用运行的各种度量指标。 2、监测业务本身的性能,而不是容器的性能 在理论运行当中,每一个容器的生命周期通常都不会特地的长。容器的编排零碎会随时关注容器的运行状态,当产生异样时,编排零碎会主动的进行调整,如删除有问题的容器,重新部署一个同样的容器加以代替;或者依据容器运行的状态主动地进行规模上的调整等 。而开发者和运维者应该集中关注容器内业务利用的运行状态。 3、监测具备弹性,以及多地部署的服务 微服务的部署个性驱使咱们在设计的阶段就要思考到规模性的问题。当服务的规模从10扩大成20,扩大成50,甚至于扩大成100的时候,针对服务的监测要如何主动调整去笼罩和适应这些主动扩大的规模。同样,针对多地部署的服务,咱们又该如何依据不同的组织和分类,如站点、地位、区域等,来汇聚和统计服务的整体性能。这些都是在设计监测计划之初就要重点思考的。 4、监测API 在微服务的架构当中,原有的单体利用被拆解成为多个层面、更小粒度、独立运行的服务。而API是这些服务裸露给其余服务的惟一组件。同时,API也是拜访微服务的首要通信形式。 对API的运行、响应状态的无效监测,对微服务的整体监测是非常重要的: · 可能捕捉特定办法、性能或端点的运行瓶颈; · 可能监测各个办法、性能或端点的调用频率; · 可能跟踪用户业务在多个零碎之间的交互行为。 ...

August 21, 2020 · 1 min · jiezi

关于jenkins:Jenkins实现自动化邮件发送踩坑记录

文章简介本文分享Jenkins实现邮件发送,装置Jenkins可参考jenkins装置。写这篇文章,是在理论应用Jenkins过程中遇到这样一个问题,当每次Jenkins构建胜利或者失败后,须要集体登录Jenkins查看构建后果,同时在构建前做了数据备份,也须要手动的拷贝一份备份文件到本地。为了解决这个问题,便想到了Jenkins的邮件性能。在集体实际中,在每次master分支主动构建前,须要将数据库和代码打包、备份,在Jenkins构建完结之后,将备份的文件发送给对应的负责人。 文章局部细节的中央可能省略待过,因而须要对Jenkins有肯定应用的用户比拟适合,如果不相熟的,能够参考下面提交的文章。文章波及到不精确的信息还望反馈。大抵逻辑 接下来整个流程,也都依照该流程进行演示如何配置。 装置插件首先点击治理,而后点击插件治理,跳转到插件核心。如果没有装置过email对应的插件,点击可选插件按钮,而后输出email关键词,进行搜寻即可。这里我曾经装置过了,为了演示抉择已装置菜单。 在装置插件的过程中,须要留神一个版本号。2.73版本的插件有一个bug,就是配置正确却不能发送邮件。倡议避开这个版本号。系统配置装置好插件之后,接下来就须要进入系统配置。进入系统配置,次要配置两个中央,一个是管理员的邮箱地址,一个是插件的配置信息。 记住插件发送邮件的账号肯定的和管理员的邮箱账号统一,否者会呈现上面错误信息。错误信息: com.sun.mail.smtp.SMTPSenderFailedException: 553 Mail from must equal authorized userat com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1587)Caused: com.sun.mail.smtp.SMTPSendFailedException: 553 Mail from must equal authorized user; nested exception is: com.sun.mail.smtp.SMTPSenderFailedException: 553 Mail from must equal authorized user at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2057) at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1580) at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1097) at javax.mail.Transport.send0(Transport.java:195) at javax.mail.Transport.send(Transport.java:124) at hudson.tasks.Mailer$DescriptorImpl.doSendTestMail(Mailer.java:581) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)错误信息的大抵意思就是说,邮箱的受权用户(插件配置的账号)和from(邮件发送者)账号不统一。 这里其实有点小困惑,邮件配置受权账户,为什么管理员的邮件账号还必须保持一致。按理来说,既然配置了受权用户,就采纳配置的受权邮箱进行发送呗。可能是零碎应用的管理员邮件发送。这里的配置受权仅仅是为了受权第三方邮箱账户吧。我的项目配置接下来,咱们创立一个工作测试发送邮件。至于具体的配置这里省略待过,间接记录配置邮件的中央。这外面就是针对该项目标具体配置信息,下面咱们提交到系统配置,属于全局配置。如果这里没有配置,则默认走全局配置。大抵的配置信息和全局配置都是雷同的作用,能够依据不同的工作,自行配置即可。 邮件测试最初配置结束,当提交代码待仓库后,应用webhooks主动触发构建,登录邮箱就能够查看到上面的一些构建根底信息了。如果邮件须要更多的配置信息,间接到工作中去配置即可。

August 15, 2020 · 1 min · jiezi

关于jenkins:小程序Jenkins部署实践

背景和阐明:代码是同一份,依据不同业务场景,打包出不同渠道的小程序,小程序之间的区别是性能的删减、底部菜单首页、业务接口传参带上不同的渠道号该我的项目应用的是uniapp本文章只波及打包微信小程序遇到的问题:提测之后和每次批改bug,都须要打包给测试共事新包,而且不同渠道就要打不同的包,均匀打一次包就要破费2min~3min,很浪费时间;打包过程占用本地机器的资源,导致电脑卡顿;打完包之后还要手动发包给测试,每个包还要重命名标识渠道。每次提审小程序,都须要一次性打包多个渠道小程序,而后手动一个个小程序去上传,而后填写截然不同的提审信息,还要手动增加一些本渠道的标识信息,很容易出错。问题剖析:问题1 其实能够通过写一个shell脚本,或者node脚本,实现打包、把指标文件夹变成zip包、重命名。毛病是:①占用本地机器的资源,导致工作效率低下;②用脚本打包,须要填写参数,不不便且不直观。更好的计划:应用Jenkins,且能够让测试自行打包和下载包。问题2 其实能够用微信小程序cli来上传包,而后再用脚本来解决批量上传的问题。毛病,除了问题1提到的毛病,还有:①cli的门路,在每个开发者的电脑上是不统一的,而且还要思考是windows还是mac机器;②应用cli打包,第一次须要扫码,且还要思考过期的问题,还要思考个别开发者没有权限更好的计划:应用miniprogram-ci + Jenkins,免登录且自动化布局&成果展现问题1,只呈现在测试环境下;问题2,只呈现在生产环境下。所以要部署两套Jenkins,而且对应的Jenkinsfile也辨别开 针对问题搭建的Jenkins:test 针对问题搭建的Jenkins:prod 配置和代码针对问题1,配置的Jenkins针对问题1,测试环境应用的Jenkinsfile //Jenkinsfiledef isInChannels(String channel) { Boolean result = false; String channels = "${params.CHANNELS}"; String[] arr = channels.split(','); for (String item in arr) { if (item == channel) { result = true } } return result;}pipeline { agent any parameters { gitParameter branchFilter: 'origin/(.*)', defaultValue: 'master', name: 'BRANCH', type: 'PT_BRANCH' } stages { stage('Checkout') { steps { echo ">>>>>>>> Checkout branch ${params.BRANCH}" git branch: "${params.BRANCH}", url: 'http://1*************.git', credentialsId: '***************' } } stage('Install') { when { expression { return params.INSTALL return isInChannels('malllive') } } steps { echo ">>>>>>>> Install ${params.INSTALL}..." sh "cd ${WORKSPACE}" sh "rm -rf node_modules/" sh 'npm install' } } stage('单店') { when { expression { return isInChannels('mall') } } steps { echo ">>>>>>>>>> Cleaning...." sh "cd ${WORKSPACE}" sh "rm -rf dist/build/mall" echo ">>>>>>>> build" sh "npm run test:wx:mall:build" // 打包 sh "mv dist/build/mp-weixin dist/build/mall" script { currentBuild.description = currentBuild.description + "<a href='http://**********/job/*************/${BUILD_NUMBER}/execution/node/3/ws/dist/build/mall/*zip*/单店.zip'>下载单店包</a><br/>" // 提供下载包的链接,这个包曾经重命名好了,而且是jenkins自带能够打包成zip包 } } } stage('单店带直播') { when { expression { return isInChannels('malllive') } } steps { echo ">>>>>>>>>> Cleaning...." sh "cd ${WORKSPACE}" sh "rm -rf dist/build/malllive" echo ">>>>>>>> build" sh "npm run test:wx:malllive:build" sh "mv dist/build/mp-weixin dist/build/malllive" script { currentBuild.description = currentBuild.description + "<a href='http://**********/job/*************/${BUILD_NUMBER}/execution/node/3/ws/dist/build/malllive/*zip*/单店带直播.zip'>下载单店带直播包</a><br/>" } } } stage('品牌') { when { expression { return isInChannels('brand') } } steps { echo ">>>>>>>>>> Cleaning...." sh "cd ${WORKSPACE}" sh "rm -rf dist/build/brand" echo ">>>>>>>> build" sh "npm run test:wx:brand:build" sh "mv dist/build/mp-weixin dist/build/brand" script { currentBuild.description = currentBuild.description + "<a href='http://**********/job/*************/${BUILD_NUMBER}/execution/node/3/ws/dist/build/brand/*zip*/品牌.zip'>下载品牌包</a><br/>" } } } stage('品牌不带预订') { when { expression { return isInChannels('brandnobook') } } steps { echo ">>>>>>>>>> Cleaning...." sh "cd ${WORKSPACE}" sh "rm -rf dist/build/brandnobook" echo ">>>>>>>> build" sh "npm run test:wx:brandnobook:build" sh "mv dist/build/mp-weixin dist/build/brandnobook" script { currentBuild.description = currentBuild.description + "<a href='http://**********/job/*************/${BUILD_NUMBER}/execution/node/3/ws/dist/build/brandnobook/*zip*/品牌不带预订.zip'>下载品牌不带预订包</a><br/>" } } } stage('尊享会') { when { expression { return isInChannels('group') } } steps { echo ">>>>>>>>>> Cleaning...." sh "cd ${WORKSPACE}" sh "rm -rf dist/build/group" echo ">>>>>>>> build" sh "npm run test:wx:group:build" sh "mv dist/build/mp-weixin dist/build/group" script { currentBuild.description = currentBuild.description + "<a href='http://**********/job/*************/${BUILD_NUMBER}/execution/node/3/ws/dist/build/group/*zip*/尊享会.zip'>下载尊享会包</a><br/>" } } } stage('预订') { when { expression { return isInChannels('bookmall') } } steps { echo ">>>>>>>>>> Cleaning...." sh "cd ${WORKSPACE}" sh "rm -rf dist/build/bookmall" echo ">>>>>>>> build" sh "npm run test:wx:bookmall:build" sh "mv dist/build/mp-weixin dist/build/bookmall" script { currentBuild.description = currentBuild.description + "<a href='http://**********/job/*************/${BUILD_NUMBER}/execution/node/3/ws/dist/build/bookmall/*zip*/预订.zip'>下载预订包</a><br/>" } } } stage('预订铂涛') { when { expression { return isInChannels('bookmallbtzh') } } steps { echo ">>>>>>>>>> Cleaning...." sh "cd ${WORKSPACE}" sh "rm -rf dist/build/bookmallbtzh" echo ">>>>>>>> build" sh "npm run test:wx:bookmall:build:bt" sh "mv dist/build/mp-weixin dist/build/bookmallbtzh" script { currentBuild.description = currentBuild.description + "<a href='http://**********/job/*************/${BUILD_NUMBER}/execution/node/3/ws/dist/build/bookmallbtzh/*zip*/预订铂涛.zip'>下载预订铂涛包</a><br/>" } } } }}针对问题2,配置的Jenkins ...

August 6, 2020 · 5 min · jiezi

关于jenkins:小白基于Jenkins和Github的前端自动部署二

Jenkins配置Jenkins胜利装置后就要进行一些配置。以下配置都是基于Ubuntu零碎,Jenkins和Github实现前端我的项目主动部署来进行的。 Jenkins增加Github服务器 系统管理 -> 系统配置 -> 增加Github服务器 -> 增加凭据 ->Secret Text -> 输出Github tokenGithub token 获取 github -> Settings -> Developer settings -> Personal Access TokenGithub服务器增加Webhook Jenkins配置Jdk和Node环境 系统管理 -> 全局工具配置 这一步的前置条件是服务器曾经装好JDK,NodeJs,Jenkins装好nodejs插件 Jenkins装置nodejs插件服务器包管理工具装置NodejsJAVA_HOME 和 NodeJS装置目录填写Java和NodeJS装置的根目录,默认的是/usr/

July 22, 2020 · 1 min · jiezi

使用jenkins自动构建github项目

欢迎加入前端交流群:749539640 jenkins介绍构建伟大,无所不能 Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。 作为一个可扩展的自动化服务器,Jenkins 可以用作简单的 CI 服务器,或者变成任何项目的持续交付中心。Jenkins 是一个基于 Java 的独立程序,可以立即运行,包含 Windows、Mac OS X 和其他类 Unix 操作系统。Jenkins 可以通过其网页界面轻松设置和配置,其中包括即时错误检查和内置帮助。通过更新中心中的 1000 多个插件,Jenkins 集成了持续集成和持续交付工具链中几乎所有的工具。Jenkins 可以通过其插件架构进行扩展,从而为 Jenkins 可以做的事提供几乎无限的可能性。Jenkins 可以轻松地在多台机器上分配工作,帮助更快速地跨多个平台推动构建、测试和部署。安装jenkinsjenkins的安装请移步在linux服务器上安装Jenkins 新建github项目我们新建一个名为jenkins的git仓库,代码我这里选择了用vue-cli简易生成了一个示例demo github配置sercret text注:此处需要一个对项目有写权限的账户 进入github --> setting --> Personal Access Token --> Generate new token或者点击进入 自己先保存此token,如果丢失,之后再也无法找到这个token。 GitHub webhooks 设置进入刚才新建的jenkins仓库 --> setting --> WebHooks&Services --> add webhook --> 输入刚刚部署jenkins的服务器的IPjenkins地址后加上/github-webhook/ jenkins的github配置安装GitHub Plugin系统管理-->插件管理-->可选插件直接安装Github Plugin, jenkins会自动帮你解决其他插件的依赖,直接安装该插件Jenkins会自动帮你安装plain-credentials 、Git 、 credentials 、 github-api 配置GitHub Plugin系统管理 --> 系统设置 --> GitHub --> Add GitHub Sever如下图所示 ...

July 2, 2020 · 1 min · jiezi

Jenkins环境搭建和部署项目的过程

安装部署docker jenkins 环境创建一个文件夹 用于存放jenkins相关配置mkdir /Users/mengfanxiao/docker/jenkins 下载docker jenkins镜像`docker pull jenkins/jenkins当前版本:Jenkins 2.243` 启动镜像docker run -d -p 8080:8080 -p 50000:50000 --name jenkins --privileged=true -v /Users/mengfanxiao/docker/jenkins:/var/jenkins_home jenkins/jenkins 访问jenkinshttp://localhost:8080/ PS : 如果一直在Please wait while Jenkins is getting ready to work...页面,资源访问过慢加载不出来解决方法`找到/Users/mengfanxiao/docker/jenkins目录下的hudson.model.UpdateCenter.xml文件,将https://updates.jenkins.io/up...替换为http://mirror.xmission.com/je...然后重启启动docker jenkins` 登陆账号 输入密码 `启动命令中有一个文件映射 将docker中的配置文件映射到本地电脑即 -v /Users/mengfanxiao/docker/jenkins:/var/jenkins_home jenkins/jenkins既然 docker jenkins已经启动 那么配置文件也从docker映射到本地一份了` `由上面[输入密码]截图可以看要去/var/jenkins_home/secrets/initialAdminPassword文件中找初始密码(发现截图上的目录少了一个jenkins)那么只需要从 本地文件 /Users/mengfanxiao/docker/jenkins/secrets/initialAdminPassword 即可` 安装插件 这里选择安装推荐的插件 PS : 这里等待时间太久 如何解决?解决办法 :修改更新配置源找到/Users/mengfanxiao/docker/jenkins/updates/default.json把 "www.google.com” 改成 "http://www.baidu.com/"把 "updates.jenkins-ci.org/download" 替换成 "mirrors.tuna.tsinghua.edu.cn/jenkins"快速更新的办法使用vim的命令 ...

July 1, 2020 · 1 min · jiezi

一文教你使用-Jenkins-设计多环境多项目持续集成环境

作者:滴答的雨 https://www.cnblogs.com/heyuq...自动化部署主要是为了解决项目多、环境多、持续集成慢、部署操作麻烦、手动操作易出错、自动化运维等问题。 Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。 目标: 支持多分支、多环境、多项目、多套配置文件、多编程语言支持一键构建、集群发布支持一键回滚历史版本快捷配置添加新的部署项目支持多个项目使用同一个job发布或回滚另外:也可以根据需要加入gitlab自动触发构建、自动化测试、钉钉通知、邮箱通知等需求 最终效果图一键发布 一键回滚 Jenkins相关目录设计----jenkins-ex      jenkins构建时使用到的目录------software      Jenkins安装目录--------master--------slave------backup        jenkins备份目录--------master------module        功能模块,每一类功能相关的文件放在对应的子文件夹中--------common----------script        各模块公用的脚本------publish       发布功能--------settings----------config    构建时配置文件。Eg:jenkins_profile.pubxml、项目配置文件等------------test-publish-template-app-config.json   项目映射配置表----------script    Jenkins job构件时调用的脚本(方法封装)------source-code   拉取的源代码存放目录--------test----------系统标识 ------------应用名------build-result      构建产物(编译后的结果)--------test----------系统标识 ----------应用名------temp-file 临时文件,job执行过程中产生的文件--------builder-history 构建历史记录文件--------job-params      构建过程中传递参数的文件------app-config  应用对应的环境配置文件--------test----------系统标识------------应用名------other-sub-module……约定及规范jenkins job命名 job名全小写,多单词用”-”分割。(eg:publish-template-onekey-deploy)job命名约定:模块名-环境-功能名。(eg:publish模块,publish-test-onekey-deploy)模块中组件job命名约定:模块-c-组件名。(eg:publish-c-pull-code)job输入参数以”p_”为前缀Jenkins job中的脚本命名(eg:powershell) 变量全小写,多单词用”_”分割规范约定 代表路径的变量值,以”\”结尾备份名字中用“#”做分隔符,还原时好取参数(eg:p_app_key#2019-1219-1503)架构设计CICD架构图CICD过程主要在两个局域网中执行:构建服务器(开发内网)和部署服务器(生产内网) 项目映射配置文件设计想要实现使用一个job,通过下拉来” 发布|回滚”不同的项目,我们需要一个灵活的项目配置映射文件,类似如下: 配置文件选项含义从命名上可以识别,主要包括:环境、代码分支、部署路径、拷贝排除文件列表、项目信息(项目唯一标识、目录文件夹名、源代码路径、开发语言、集群节点信息…)等等 app_config节点下的配置,可以覆盖父节点配置,适配项目特定的部署要求。app_config是数组节点,可以轻松添加新的部署项目,实现新项目的快速CICD。一键发布job设计“一键发布”主要经历的阶段有:组合项目相关参数>>获取最新代码>>编译打包>>推送应用文件到服务器>>应用备份>>拷贝到Temp文件夹>>发布到部署目录 为了更好的实现和控制”一键发布”这些阶段,设计了如下输入参数: 一键回滚job设计实现思路:在”一键发布”时,将发布记录存到文件中,存储key为:p_app_key#2019-1219-1503。执行回滚时,选择要回滚的历史项目,先解析出p_app_key再获取项目配置信息,再回滚此项目的特定历史版本。 设计的输入参数如图: 简易多环境CICD流程一般软件公司对于软件的开发、测试、发布都有好几个环境,所以针对各个环境都会有对应的CICD流程,这边设计了一个简易的多环境CICD流程图,如下: 自动触发CICD还是手动触发CICD???,我认为: 开发环境采用手动触发:因为对于开发环境,提交代码比较频繁,而且有时候提交到git也并不想触发CICD。可以采取每晚定时自动触发CICD,便于异常代码及时抛出测试环境采用自动触发:因为测试代码的 git 分支合并是有条件限制的,合并频率比较少生产环境采用手动触发:因为生产环境的发布,有严控发布时间的,手动触发控制力强如有错误或其它问题,欢迎小伙伴留言评论、指正。如有帮助,欢迎点赞+转发分享。 欢迎大家关注民工哥的公众号:民工哥技术之路

June 27, 2020 · 1 min · jiezi

使用jenkins和gitlabrunner-DevOps-CICD-制作docker镜像并推送到阿里云镜像仓库

前言DevOps( Development和Operations的组合词 )的概念在软件开发行业中逐渐流行起来。越来越多的团队希望实现产品的敏捷开发,DevOps 使一切成为可能。有了 DevOps,团队可以定期发布代码、自动化部署、并将持续集成( CI ) / 持续交付( CD )作为发布过程的一部分。说到 CICD 比较出名的有 jenkins 和 gitlab-runner 、circle.ci 和travis.ci等等,大家可以自行百度或者找相关文章看看这几个的区别,这里就不详细讲了。 JenkinsGitlab-RunnerCircleciTravis.ci本文将介绍大家如何安装和使用 jenkins 和 gitlab-runner 以及使用 CICD 将前端项目制作成 docker 镜像并推送到阿里云镜像仓库。 准备首先我们要准备两台机器,可以是虚拟机或者云服务器,我选用的是阿里云 ECS Centos 7 分别来要安装 gitlab 和 jenkins + gitlab-runner,也就是说机器A安装 gitlab,机器B安装 jenkins 和 gitlab-runner。 机器 A 安装 gitlab机器 B 安装 jenkins 和 gitlab-runner机器 A 和 B 都安装 jdk、maven 和 docker在机器A gitlab 上面创建项目注意:我这里是把jenkins 和 gitlab-runner 安装在同一台机器上 安装 gitlab之前我已经写过一篇关于如何安装gitlab,这里就不详细说了,大家可以查看这篇文章上面讲的也很详细。注意这篇文章已经教你如何生成你的SSH私钥和公钥了,后面会用到 安装 jenkins同样的我之前也写过一篇文章关于如何安装jenkins,这里也不详细说了,大家可以查看这篇文章上面讲的也很详细。注意:这篇文章已经教你如何安装 jdk、maven 和 docker 后面就不做介绍了 ...

June 10, 2020 · 3 min · jiezi

一款适合中小企业的轻量自动化运维平台-Spug

Spug 介绍Spug:中文名称:麻雀,寓意:麻雀虽小,五脏俱全。 Spug 是面向中小型企业设计的无 Agent 的自动化运维平台,功能包含主机管理、主机批量执行、主机在线终端、文件在线上传下载、应用发布部署、在线任务计划、配置中心、进程端口站点监控、微信钉钉邮件报警等一系列功能。 Spug 特性批量执行: 命令可以在线批量执行文件管理: 主机文件在线上传下载在线终端: 主机支持浏览器在线终端登录任务计划: 灵活的任务计划,支持间隔执行,一次性执行,Crontab 风格执行发布部署: 支持自动创建应用,支持工单,自定义发布流程配置中心: 支持 KV、文本、Json 等格式的配置监控中心: 支持站点、端口、进程、自定义等监控报警中心: 支持短信、邮件、钉钉、微信等报警方式优雅美观: 基于 Ant Design 的 UI 界面开源免费: 前后端代码完全开源网站官网:https://spug.dev 演示:https://demo.spug.dev 演示账号: admin 演示密码:spug开源地址https://github.com/openspug/spug预览 如果你感觉还不错,欢迎在Github点star

June 4, 2020 · 1 min · jiezi

jenkins

1、 sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.reposudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.keyyum install jenkins2、如果是在window上安装,则需要下载jenkins.war包 3、启动java -jar jenkins.war4、第一次访问需要使用.jenkins/secrets/initialAdminPassword的值进行登录5、安装插件6、安装publish over ssh 、Git hub插件7、配置**其中remote Directory 会在配置拷贝编译后的jar时相关**例如 /home/xxx 那么拷贝的目标地址会是以这个为标准 git 回调token Use the following URL to trigger build remotely:JENKINS_URL/job/faxserver-test2/build?token=TOKEN_NAMEor /buildWithParameters?token=TOKEN_NAMEPayload URL 就是jenkins的回调地址,jenkins必须外网可以访问,否则回调不了,无法触发编译部署等步骤

June 1, 2020 · 1 min · jiezi

jenkins-插件下载慢问题

1.window进入到jenkins的安装目录,默认为C:UsersAdmin.jenkinsupdates使用文本编辑器打开default.json将updates.jenkinsci.org/download 全部替换 mirrors.tuna.tsinghua.edu.cn/jenkins将www.google.com 替换成www.baidu.com2.Linux进入到jenkins的安装目录,默认为 ~.jenkinsupdates使用文本编辑器打开default.json将updates.jenkinsci.org/download 全部替换 mirrors.tuna.tsinghua.edu.cn/jenkins将www.google.com 替换成www.baidu.com

May 31, 2020 · 1 min · jiezi

React-Native-和-Jenkins-不得不说的二三事

app开发和测试过程中我们都会执行npm start命令来启动服务,只是这样还是很繁琐,我们需要人工介入才能发布代码,本篇文章的目的就是介绍如何使用jenkins让我们的项目自动化。 1. 项目准备原理是打包bundle,然后把文件放到服务器上。 react-native打包文件结果包含bundle文件和图片资源文件。 如果app加载本地bundle或者连接本地开发服务,图片资源是可以正常访问的,但是如果访问的是多级目录地址,例如http://www.xxx.com/awe/bundle.js,图片的地址只会从域名http://www.xxx.com查找,最终导致图片无法显示。 这是因为Image组件加载逻辑不支持多级目录,感兴趣可以查看React Native 图片资源那些事了解详情。 解决方案是Image/resolveAssetSource提供的setCustomSourceTransformer,它可以让我们决定图片的处理逻辑。 我们把serverUrl替换为jsbundleUrl,这样图片就会从bundle同级查找到图片。 如果有其他需求,可以参阅react-native/Libraries/Image/resolveAssetSource中相关代码,自行设置setCustomSourceTransformer。 import React from 'react';import { AppRegistry, Platform } from 'react-native';import { setCustomSourceTransformer } from 'react-native/Libraries/Image/resolveAssetSource';import Entry from './src/entry';if (process.env.NODE_ENV_REAL === "test") { // 定制资源的获取方式 // 由域名根目录调整为bundle所在目录 // 安卓使用drawable格式 setCustomSourceTransformer((resolver) => { resolver.serverUrl = resolver.jsbundleUrl; if (Platform.OS === "android") { return resolver.drawableFolderInBundle(); } return resolver.defaultAsset(); });}AppRegistry.registerComponent('awe', () => Entry);2. jenkins配置2.1 创建任务点击"新建任务"开始填写任务信息,输入任务名称并选择"构建一个自由风格的软件项目"。 2.2 源码管理"源码管理"中配置项目代码,以Git为例,需要配置两个参数: Repositories 仓库地址和认证方式Branches to build 分支,我们填入$branch,指定为自定义构建参数 ...

October 4, 2019 · 1 min · jiezi

Jenkins-可视化阶段视图的改进

最近发布了的一些变更给了流水线编辑者新的工具以改善在 Blue Ocean 中的流水线可视化,有一个备受瞩目关注的工单JENKINS-39203,这会导致当流水线的构建结果为不稳定时所有的阶段都被设置为不稳定的。这个缺陷导致无法快速地识别为什么构建是不稳定的,使得用户必须查看完整的日志和 Jenkinsfile 才能弄明白究竟发生了什么。为了修复这个问题,我们引入了一个新的流水线 API 用于为单个流水线步骤添加额外的结果信息。像 Blue Ocean 这样的可视化工具在决定阶段如何显示时会使用到这新的 API。像 junit 这样的步骤只能设置整个构建结果,现在可以通过新的 API 设置步骤级别的结果信息。我们创建了新的步骤 unstable 和 warnError,这样流水线编辑者在更复杂的场景下仍然可以利用这个新的 API。该问题涉及到的重要的修复包含在如下的插件中,它们都需要 Jenkins 2.138.4 以及更新的版本:Pipeline: API 2.34Pipeline: Basic Steps 2.18 (需要同步更新到 Pipeline: Groovy 2.70)Pipeline: Graph Analysis 1.10Pipeline: Declarative 1.3.9Blue Ocean 1.17.0这里是一条使用了 unstable 步骤的流水线在 Blue Ocean 中的截图,只会把失败的阶段标识为不稳定的: 例子这里给出一些如何在你的流水线中使用该特性的示例:使用新的步骤 warnError 用于捕获错误,并把构建和阶段标记为不稳定的。 warnError 只需要一个 字符串 的参数,用于当捕获到错误时以日志的形式输出。当 warnError 捕获到一个错误时,它会记录该消息以及错误,并设置构建和阶段的结果为不稳定的。效果如下:warnError('Script failed!') { sh('false')}使用新的步骤 unstable 设置构建和阶段结果为不稳定的。可以使用该步骤直接替换 currentBuild.result = 'UNSTABLE',在 warnError 不够灵活时这会比较有用。步骤 unstable 只需要一个 字符串 参数,当该步骤运行时会作为消息。使用的方法如下:try { sh('false')} catch (ex) { unstable('Script failed!')}JUnit Plugin: 更新到 1.28 或者更高的版本,使得步骤 junit 可以直接把该阶段设置为不稳定的。Warnings Next Generation Plugin: 更新到 5.2.0 或者更高的版本,使得步骤 publishIssues 和 recordIssues 可以直接把该阶段设置为不稳定的。其他插件: 如果你的流水线被其他插件中的步骤标记为不稳定的,请(在检查没有重复项后)给该组件提交一个新的 issue,清晰地描述哪个步骤是有问题的,以及发生问题的环境,并添加链接到该文章的开发者区域,以便维护者了解如何才能解决该问题。 ...

September 9, 2019 · 1 min · jiezi

Jenkins备份迁移

一、通过插件ThinBackup网上有很多教程,这里不再介绍。 二、手动备份通过插件备份的方式,不是很灵活,可选择备份的粒度低(比如就没有办法只备份各项目配置)如果项目多的话,备份出来的文件会很大。只备份关于项目的配置下面以docker部署jenkins为例,jenkins对于的home目录为/data/jenkins-data 1.将 source 服务器 /data/jenkins-data目录下的jobs文件(jobs目录对应各项目的配置) 压缩 #压缩/data/jenkins-data/jobs文件夹为jobs.tar.gz 并放到/data目录下tar zcf /data/jobs.tar.gz /data/jenkins-data/jobs2.将压缩文件jobs.tar.gz 拷到目标服务器上,解压缩,对应替换jobs目录3.如果上一步导致josb目录权限修改,那么需要修改jobs目录权限 #修改jobs目录所属用户和用户组chown -R 1000:1000 /data/jenkins-data/jobs4.重启jenkins5.修改各项目Jenkins相关配置 经过第4步重启后,从新打开Jenkins应该可以看到各项目。需要修改各项目jenkins相关配置的分支、账号等

August 7, 2019 · 1 min · jiezi

jenkins配置

July 26, 2019 · 0 min · jiezi

Jenkins创建Windows-slave节点

前言.系统环境Jenkins Server v2.176.1 LTSMaster Node in Ubuntu 18.04.1 LTS 64bit ClientClient Node in Windows Server 2016 简体中文 标准版 64位云服务商:青云PART I. 在Jenkins Server上Step 1. Manage Jenkins - Configure Global Security 选择Fixed, 【云服务商】防火墙设置相应下行规则;【云服务商】VPC端口转发设置相应规则;【坑】这里默认设置是Disable,这会导致在创建slave-node时,无法选择:Launch agent by connecting it to the masterStep 2. Manage Jenkins -Manage Nodes - New Node 验证在Jenkins主机上 netstat -ntlp lsof -i tcp:42895 在Mac上 nc -zv 139.xxx.xxx.xxx 42895PART II. 在Jenkins Client(Windows)上Step 1. 安装JRE环境 | Windows 安装并配置环境变量Step 2. 创建Jenkins工作目录 ...

July 16, 2019 · 1 min · jiezi

使用Jenkins构建Docker镜像

准备1.安装Centos7虚拟机2.安装JDK3.安装Git4.安装Maven5.安装Docker (1)使用yum命令进行安装: yum install -y docker -y 表示不询问 使用默认配置进行安装(2)查看是否安装成功 yum list installed | grep docker(3)启动docker systemctl start docker(4)查看是否启动成功 systemctl status docker(5)修改docker国内镜像源 vi /etc/docker/daemon.json修改为下面这样 { "registry-mirrors": ["http://hub-mirror.c.163.com"] }(6)重启docker systemctl restart docker(7)设置docker远程访问 vi /lib/systemd/system/docker.service 添加下面这行 ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock安装/配置Jenkins下载Jenkins Jenkins安装有3种方式,下载jenkins.war放在Tomcat的webapp目录下运行、docker安装Jenkins、yum在线安装。使用jenkins.war安装 (1)下载jenkins.war、Tomcat通过xshell上传到虚拟机definesys目录 (2)把jenkins.war复制到tomcat的webapp目录下 (3)java -jar jenkins.war启动Jenkins (4)cat /var/lib/jenkins/secrets/initialAdminPassword查看初始登录密码 (5)登录进去后会一直卡住不动,在$JENKINS_HOME/hudson.model.UpdateCenter.xml文件 中,默认内容如下 <?xml version='1.0' encoding='UTF-8'?> <sites> <site> <id>default</id> <url>http://updates.jenkins-ci.org/update-center.json</url> </site></sites这个地址在外国的服务器,因为墙的原因,下载初始化界面所需插件不了,就一直处于等待状态 把url改为http://mirror.xmission.com/je... (6)登录进去后创建一个用户 (7)提示安装的插件安一安 配置Jenkins 点击系统管理-》系统设置maven配置Gitee配置Docker配置,其中docker host url就是虚拟机的IP,端口就是安装docker时配置docker远程访问的端口。 点击系统管理-》全局工具配置JDK配置 Git配置Maven配置使用创建一个项目 创建一个springboot项目 在项目根目录下创建dockerfile ...

July 15, 2019 · 1 min · jiezi

一套基础自动化部署搭建过程

问题背景公司初创技术团队,没有任何基础设施的情况下,需要搭建一系列code管理以及自动化部署等工具....所以引发了下面一系列的部署过程,历时两天,中间也是碰到各种问题,但最终把基本工具全部搭建成功,耶~,下面带大家一起看下此次搭建过程。 资源服务器一台,CentOS的,公司就给了一台配置较低的服务器当临时服务器,没办法了,就这么搞吧。 思考:如果我用传统的yum来安装,肯定会被我装乱七八糟,还不方便自己管理维护,左右为难的情况下我选择了Dokcer,可能有些小伙伴问Docker是啥怎么用,不要慌这里有传送门:Linux docker-compose 实战、 [进阶篇]docker编排PHP开发坏境测试环境搭建 为了快速搭建一套PHP测试环境我决定用laradock了,虽然文件很多,但是里面封装的东西也是比较全的,后期开发不知道会用到什么技术,就决定先用这个,随时可以启动用得到的服务。 laradock官方文档给的介绍也很全面,我这里采用的方式是部署多套项目方式目录结构如下: + laradock+ project-1+ project-2开始使用:git clone https://github.com/laradock/l...cp env-example .env env 里面的配置可以修改的,可以根据自己情况进行调整docker-compose up -d nginx php-fpm mysql redis 后面可以加上你要启动的程序,像rabbitmq、mongo等等,需要的时候追加在尾部就可以启动,首次启动时间有点长docker-compose exec --user=laradock workspace bash 像laravel等项目肯定少不了composer,执行这个命令进入工作区,就可以执行composer了docker-compose exec nginx nginx -s reload 肯定有人会问我更改了nginx配置是不是每次都要进入nginx容器去重启,或者把整个容器都重启了呀,不用的,执行这个命令就可以重启nginx了。nginx站点配置文件在哪里呢:./laradock/nginx/sites/先运行下试试吧。 GitLab现在运行环境已经搭建好了,我代码应该怎么存放呢,其实有很多的选择,要根据自己的实际情况出发,如:GitHub、码云、GitLab等等,我选择的是GitLab,刚开始没有发现laradock其实提供了GitLab服务。。只能自己折腾了,其实很简单。 docker \run -d \-p 443:443 \-p 8080:80 \-p 222:22 \--name gitlab \--restart always \-v /home/gitlab/config:/etc/gitlab \-v /home/gitlab/logs:/var/log/gitlab \-v /home/gitlab/data:/var/opt/gitlab \gitlab/gitlab-ce#参数解释:#-d:让容器后台运行#-p:暴露端口,把容器的443端口指向到宿主机443端口,宿主机8080->容器80,宿主机222->容器22#宿主机端口可以根据自己的情况自己定制#-name 给你的容器起个名,只要不和现有的重复就可以#--restart 当容器退出时docker是否重启#-v 这就是挂载磁盘了,把宿主机的目录挂载到容器中,这么做哪怕是容器坏了我的内容也不会丢失。#宿主机/home/gitlab/config目录挂载到容器中/etc/gitlab目录,宿主机目录根据自己情况定#gitlab/gitlab-ce 这个就是要启动的镜像,如果镜像不存在,docker会自动下载最新版容器启动成功之后会有一段时间来启动GitLab,看到启动成功立马访问是访问不到的,稍微等一下就可以了,配置文件都在你指定的宿主机目录下可以修改,需要修改的内容如下: gitlab_rails['gitlab_ssh_host'] = '宿主机IP'#宿主机的IP地址 gitlab_rails['gitlab_shell_ssh_port'] = 222#暴露给宿主机的ssh端口 external_url '域名'#分配给gitlab的域名,可以用nginx做反向代理到8080端口Jenkins实现自动化部署有很多种方式如:webhook、Jenkins、Travis CI等等,我的选择是Jenkins,因为之前部署用过所以这里依旧用了这个,laradock依旧提供了Jenkins服务,又是因为没发现自己搭建了一个。。。看来下次要先多看看在动手了。 ...

July 11, 2019 · 1 min · jiezi

借助URLOS快速安装jenkins持续集成工具

简介Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用;常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。 今天我们介绍一种更快速的安装方法,那就是通过URLOS一键安装jenkins。urlos是什么? URLOS是一个云主机管理软件,基于Docker容器技术打包和运行应用,包含负载均衡和故障转移等高级功能,可自动识别机器和云应用的故障并将云应用转移至可用的机器上,单机故障并不影响业务开展。 你可以使用以下命令安装URLOS: curl -LO www.urlos.com/iu && sh iu在此不讨论URLOS的使用方法,感兴趣的朋友请自行搜索,我们直接来看URLOS如何快速安装jenkins: 安装流程1.登录URLOS系统后台,在应用市场中搜索“jenkins”,找到之后,直接点击安装按钮 2.填写服务名称、选择运行节点、服务端口、选择智能部署 然后点击“提交”按钮,等待部署完成; 3. jenkins初始化向导访问http://IP:8080(其中的IP是你的服务器的IP) 这里需要填写初始密码,创建服务完成后,可在当前服务的文件管理中找到密码文件,路径为jenkins_home/secrets/initialAdminPassword 找到密码,将密码填入后继续步骤: 选择安装社区流行的插件还是自定义安装插件 我们选择自定义安装插件: 可以看到已经默认选择了一些插件,我们可以选择自己需要的来安装。 选择“install”进行下一步: 创建管理员账户: 登录后: jenkins的详细使用方法请查考官方文档:https://jenkins.io/zh/doc/

July 10, 2019 · 1 min · jiezi

介绍-Jenkins-模板引擎

在企业范围内实施 DevSecOps 实践具有挑战性。由于组织内的不同应用程序正在使用多种编程语言、自动化测试框架和安全遵从性安全合规工具,因此每个团队构建和维护流水线变得很难。无论应用程序使用哪个特定的技术栈,大多数流水线都将遵循相同的通用工作流。模板引擎插件(简写为 JTE ,用于 Jenkins 模板引擎)允许您通过创建不依赖于工具的模板化工作流来获取效率,每个团队都可以重用这些工作流。 作为公共部门和私营部门客户的技术顾问,我们在 Booz Allen 发现,每个新项目都要从头开始建造 DevSecOps 流水线。通过开发 Jenkins 模板引擎,我们已经看到流水线开发从几个月减少到几天,现在我们可以重用工具集成,同时为 Jenkins 流水线带来新的治理级别。 流水线模板 组织受益于让应用程序开发人员专注于他们最擅长的工作:构建应用程序。支持这个,意味着建立一个集中式的 DevOps 团队,负责维护平台基础设施,并创建开发团队使用的 CI/CD 流水线。随着基于微服务的体系结构的兴起,一个集中的 DevOps 团队可以同时支持许多不同的开发团队;所有这些团队都可能利用不同的编程语言和自动化测试工具。虽然开发团队之间的工具可能不同,但工作流通常是相同的:单元测试、静态代码分析、构建和发布制品、部署它,然后针对部署的应用程序执行不同类型的测试。模板引擎插件允许您从每个被团队定义可继承通用工作流的存储库中删除 Jenkinsfile 。作为替代每个存储库需定义整个流水线,团队提供一个使用工作流的工具配置文件。 JTE 实战 让我们通过一个简单的示例来演示模板的可重用性: 流水线模板例子: unit_test() build() static_code_analysis() 模板利用库提供的步骤概述工作流团队必须实现的步骤。虽然模板的执行方式与任何其他 Jenkinsfile 都一样(这意味着支持标准的脚本化和声明性语法),但模板的目标应该是以纯英语的方式阅读,并避免任何技术实现。通过这种方式利用模板,您可以将流水线的业务逻辑(应该在什么时候发生)与技术实现(实际将要发生什么)分开。其结果是一个 CI/CD 管道,当同时支持多个团队时,该流水线被证明非常容易管理。此模板( unit_test 、 build 和 static_code_analysis )概述的步骤是专门命名的。通过这种方式,团队可以使用的不同库共享同一流水线。 实现模板 使用模板引擎实现可共享流水线需要几个关键组件:流水线模板:概述要执行的工作流库:提供工作流步骤的技术实现配置文件:指定要使用的库及其配置 步骤1、创建流水线配置存储库 流水线配置存储库用于存储团队继承的常见配置和流水线模板。这个示例流水线配置存储库稍后将被配置为治理层的一部分:JTE 的机制中允许您构建表示组织的层次结构配置。治理层包含三个方面:流水线模板库资源清单层的配置文件( pipeline_config.groovy )治理层的流水线模板和配置文件存储在流水线配置存储库中。在 Jenkins 中配置治理层时,您将为包含上述组件的存储库以及可以找到这些制品的基本目录提供源代码管理位置。 步骤2、创建流水线模板 接下来,我们将为治理层创建一个 Jenkinsfile 。在 JTE 中, Jenkinsfile 是执行将使用的默认流水线模板。 Jenkinsfileunit_test()build()static_code_analysis()步骤3、 创建库 模板引擎插件实现了一个版本的 Jenkins 共享库,以增强库的可重用性。库是源代码存储库中的根目录,并且该存储库已在治理层上配置为库源。在我们的示例中,流水线模板需要执行单元测试、打包制品和运行静态代码分析。假设我们有一些团队使用 Gradle ,一些团队使用 Maven 来构建和测试他们的应用程序,但是他们都将使用 SonarQube 来执行静态代码分析。在这个场景中,我们应该创建 gradle 、 maven 和 sonarqube 库。 ...

July 2, 2019 · 2 min · jiezi

Docker-Jenkins-Gradle-http代理设置

公司为了省钱,除了一台服务器能够上网之外,其余的都是内网服务器,我把jenkins装在内网服务器下,用Dockder来搭建的,所以就出现题目的问题。怎么设置Docker jenkins容器下的gradle http代理,让gradle能下外网的依赖包。一、宿主机创建gradle.properties文件vim ./gradle.properties文件配置http代理信息 systemProp.http.proxyPort=8888systemProp.http.proxyHost=172.111.111.111systemProp.https.proxyPort=8888systemProp.https.proxyHost=172.111.111.111二、将配置文件copy到容器#暂且放到容器的/home/目录下吧docker cp ./gradle.properties jenkins:/home三、进入Jenkins容器#通过docker命令进入容器docker exec -it jenkins bash#进入容器后创建在用户目录创建「.gradle」目录mkdir ~/.gralde#把放在/home/目录的配置文件移动到~/.gralde目录mv /home/gradle.properties ~/.gradle四、完成可以去jenkins网页上试试重新build

June 28, 2019 · 1 min · jiezi

Jenkins-DockerSwarm-实现弹性伸缩持续集成

一、相关概念Jenkins简单介绍[1] Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。使用目的: 持续、自动地构建/测试软件项目。监控一些定时执行的任务。Jenkins拥有的特性包括: 1.易于安装-只要把jenkins.war部署到servlet容器,不需要数据库支持。2.易于配置-所有配置都是通过其提供的web界面实现。有些配置如MAVEN_HOME和Email,只需要配置一次,所有的项目就都能用。当然也可以通过修改XML进行配置。3.集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知。4.生成JUnit/TestNG测试报告。5.分布式构建支持Jenkins能够让多台计算机一起构建/测试。6.文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。7.插件支持:支持扩展插件,你可以开发适合自己团队使用的工具。8.测试报告聚合,所有模块的测试报告都被聚合在一起,结果一目了然,使用其他CI,这几乎是件不可能完成的任务。9.构件指纹(artifact fingerprint),每次build的结果构件都被很好的自动管理,无需任何配置就可以方便的浏览下载。DockerSwarm简单介绍[2] Swarm 在 Docker 1.12 版本之前属于一个独立的项目,在 Docker 1.12 版本发布之后,该项目合并到了 Docker 中,成为 Docker 的一个子命令。目前,Swarm 是 Docker 社区提供的唯一一个原生支持 Docker 集群管理的工具。它可以把多个 Docker 主机组成的系统转换为单一的虚拟 Docker 主机,使得容器可以组成跨主机的子网网络。Docker Swarm 是一个为 IT 运维团队提供集群和调度能力的编排工具。用户可以把集群中所有 Docker Engine 整合进一个「虚拟 Engine」的资源池,通过执行命令与单一的主 Swarm 进行沟通,而不必分别和每个 Docker Engine 沟通。在灵活的调度策略下,IT 团队可以更好地管理可用的主机资源,保证应用容器的高效运行。DockerSwarm拥有的特性包括: 1.任何规模都有高性能表现 对于企业级的 Docker Engine 集群和容器调度而言,可拓展性是关键。任何规模的公司——不论是拥有五个还是上千个服务器——都能在其环境下有效使用 Swarm。 经过测试,Swarm 可拓展性的极限是在 1000 个节点上运行 50000 个部署容器,每个容器的启动时间为亚秒级,同时性能无减损。2.灵活的容器调度 Swarm 帮助 IT 运维团队在有限条件下将性能表现和资源利用最优化。Swarm 的内置调度器(scheduler)支持多种过滤器,包括:节点标签,亲和性和多种容器部策略如 binpack、spread、random 等等。3.服务的持续可用性 Docker Swarm 由 Swarm Manager 提供高可用性,通过创建多个 Swarm master 节点和制定主 master 节点宕机时的备选策略。如果一个 master 节点宕机,那么一个 slave 节点就会被升格为 master 节点,直到原来的 master 节点恢复正常。 此外,如果某个节点无法加入集群,Swarm 会继续尝试加入,并提供错误警报和日志。在节点出错时,Swarm 现在可以尝试把容器重新调度到正常的节点上去。和 Docker API 及整合支持的兼容性Swarm 对 Docker API 完全支持,这意味着它能为使用不同 Docker 工具(如 Docker CLI,Compose,Trusted Registry,Hub 和 UCP)的用户提供无缝衔接的使用体验。Docker Swarm 为 Docker 化应用的核心功能(诸如多主机网络和存储卷管理)提供原生支持。开发的 Compose 文件能(通过 docker stack deploy )轻易地部署到测试服务器或 Swarm 集群上。Docker Swarm 还可以从 Docker Trusted Registry 或 Hub 里 pull 并 run 镜像。综上所述,Docker Swarm 提供了一套高可用 Docker 集群管理的解决方案,完全支持标准的 Docker API,方便管理调度集群 Docker 容器,合理充分利用集群主机资源。并非所有服务都应该部署在Swarm集群内。数据库以及其它有状态服务就不适合部署在Swarm集群内。Jenkins与Swarm相结合,Jenkins主节点保持在线,子节点运行在Swarm集群上,主节点负责对子节点进行调度,使整个Jenkins保持最低要求节点数在线,实现弹性伸缩持续集成。二、准备1.环境简介本次实践的机器为一年多以来积攒的几台云服务器,也可以在本地采用虚拟机或在局域网中实践。 ...

June 28, 2019 · 2 min · jiezi

Docker-Jenkins-Maven代理设置

公司为了省钱,除了一台服务器能够上网之外,其余的都是内网服务器,我把jenkins装在内网服务器下,用Dockder来搭建的,所以就出现题目的问题。怎么设置Docker jenkins容器下的maven http代理,让mvn能下载包。一、进入jenkins容器并查看Maven的安装信息# 进入容器docker exec -it jenkins bash# 查看Maven安装配置cat /var/jenkins_home/hudson.tasks.Maven.xml<?xml version='1.1' encoding='UTF-8'?><hudson.tasks.Maven_-DescriptorImpl> <installations> <hudson.tasks.Maven_-MavenInstallation> <name>maven3.5.2</name> <properties> <hudson.tools.InstallSourceProperty> <installers> <hudson.tasks.Maven_-MavenInstaller> <id>3.5.2</id> </hudson.tasks.Maven_-MavenInstaller> </installers> </hudson.tools.InstallSourceProperty> </properties> </hudson.tasks.Maven_-MavenInstallation> </installations></hudson.tasks.Maven_-DescriptorImpl>可以看到我们这里用的是3.5.2版本那么的Maven所在的目录在 /var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/maven3.5.2二、找到setting.xml并修改# 修改setting文件,如果有挂载,那直接在宿主机上修改即可,免得进来容器里面,还要安装vimvim /var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/maven3.5.2/conf/settings.xml在xml中的settings标签下增加以下内容 <proxies> <proxy> <id>optional</id> <active>true</active> <protocol>http</protocol> <host>代理服务器IP</host> <port>代理服务器端口</port> <!-- <username></username> <password></password> --> </proxy> </proxies>三、重启Jenkins容器docker restart jenkins#重启完,打开jenkins,mvn命令能下载包了

June 25, 2019 · 1 min · jiezi

30分钟搞定-Jenkins-CI

本文转自公众号 jenkins中文社区 作者:Gunter Rotsaert 你想在本地设置中使用 Jenkins CI 进行实验吗?在本文中,我们将设置一个本地 Jenkins CI 服务,为一个简单的 Spring Boot Maven 项目创建一个构建工作,并将创建的 Docker 镜像推送到 DockerHub。这将是一个本地实验的设置,但如果你想尝试一个 Jenkins 插件,它会非常方便。 1.先决条件开始之前,我们需要以下先决条件: 我们使用了 Ubuntu 18.04;必须安装 Docker,有关安装说明,请参见此处;我们需要在 Docker registry 来推送我们的 Docker 镜像。最简单的方法是在DockerHub上创建一个帐户。你可以免费创建帐户。也不会收到垃圾广告邮件;构建工作的 Spring Boot 应用程序。我们将使用前一篇文章中的 Spring Boot MVC 应用程序。源代码可以在GitHub上找到,相应的Docker图像可以在DockerHub上找到。该应用程序包含 http://localhost:8080/hello 上的一个 HTTP 端点,并只返回一条 Hello Kubernetes 欢迎消息。2.运行 Jenkins CI我们将使用 Jenkins CI Docker 官方镜像运行 Jenkins 服务。完整的文档可以在这里找到。用以下命令启动容器: $ docker run -p 8080:8080 --name myjenkins -v jenkins_home:/var/jenkins_home -v jenkins_downloads:/var/jenkins_home/downloads jenkins/jenkins:lts让我们来仔细看看我们正在做什么: -p 8080:8080:我们将内部 Jenkins 端口(冒号后)映射到外部端口,该端口可从我们的 Docker 主机访问;–name myjenkins:我们为容器提供一个名称;否则,Docker将为你生成一个名称。最好给它起个名字;这样,你可以轻松地启动和停止容器;-v jenkins_home:/var/jenkins_home:我们希望将内部 Jenkins 主目录(冒号之后)映射到 Docker 主机上的一个目录。通过这种方式,Jenkins 数据将被保存在我们的主机上,这让我们有机会备份数据;-v jenkins_downloads:/var/jenkins_home/downloads:我们需要在Jenkins中安装额外的工具; 因此,我们创建一个目录来复制 *.tar.gz 文件。在这篇文章的后面,我们将清楚地知道我们将使用目录做什么;jenkins/jenkins:lts:要使用的 Docker 镜像。我们将使用 LTS 版本,但如果你愿意,也可以使用不太稳定的版本。在撰写本文时,v2.150.1 是 LTS 版本。 在此之后,你可以通过其名称停止和启动容器: ...

June 24, 2019 · 3 min · jiezi

基于GitLab-CI搭建Golang自动构建环境

基于GitLab CI搭建Golang自动构建环境Golang发布遇到的问题对于golang的发布,之前一直没有一套规范的发布流程,来看看之前发布流程: 方案一开发者本地环境需要将环境变量文件改为正式环境配置编译成可执行文件发送给运维(运维)将文件覆盖为线上(运维)重启进程(可谓“又臭又长”) 方案二开发者讲代码commit到gitlab上交给运维同学(运维)pull代码(运维)编译成可执行文件(运维)覆盖线上文件(运维)重启进程这种对于运维属于重度依赖,而运维同学又需要去关心代码的编译,增加了运维同学的工作了。 以上两种方案都是之前项目中发生过的,对于发版来说可谓是一种“噩梦”,易出错,流程长,运维要是不在根本无法操作。 解决方案为了解决上面提到的两种发布问题,目前我们做了如下的设计方案: 开发者提交代码到GitLab服务器添加一个Tag触发构建(.gitlab-ci.yml+makefile)将构建后的文件打包添加上版本号(1.0.0+)后推送到版本服务器在Jenkins选择对应的版本号发布到指定Web Server上发布时,开发只需要编写“.gitlab-ci.yml”以及makefile对项目进行构建,而运维只需要配置jenkins,将文件发布到Web Server上即可,完成了开发和运维的解耦。 什么是GitLab-CIGitLab CI 是 GitLab Continuous Integration (Gitlab 持续集成)的简称。从 GitLab 的 8.0 版本开始,GitLab 就全面集成了 Gitlab-CI,并且对所有项目默认开启。只要在项目仓库的根目录添加 .gitlab-ci.yml 文件,并且配置了 Runner(运行器),那么每此添加新的tag都会触发 CI pipeline。 一些概念在介绍 GitLab CI 之前,我们先看看一些持续集成相关的概念。 Pipeline一次 Pipeline 其实相当于一次构建任务,里面可以包含多个流程,如安装依赖、运行测试、编译、部署测试服务器、部署生产服务器等流程。 任何提交或者 Merge Request 的合并都可以触发 Pipeline,如下图所示: +------------------+ +----------------+| | trigger | || Commit / MR +---------->+ Pipeline || | | |+------------------+ +----------------+StagesStages 表示构建阶段,说白了就是上面提到的流程。 我们可以在一次 Pipeline 中定义多个 Stages,这些 Stages 会有以下特点: 所有 Stages 会按照顺序运行,即当一个 Stage 完成后,下一个 Stage 才会开始只有当所有 Stages 完成后,该构建任务 (Pipeline) 才会成功如果任何一个 Stage 失败,那么后面的 Stages 不会执行,该构建任务 (Pipeline) 失败因此,Stages 和 Pipeline 的关系就是: ...

June 19, 2019 · 2 min · jiezi

Jenkins简单的迁移方法

Jenkins简单的迁移方法简单的方法有很多但是找到最合适的确不一定容易,整机迁移,资源回缩与扩容调整配置,更多的人碰到的情况各不相同,想要找到适合自己需求的方法,需要了解内部运行原理。 下面介绍2种最基本的方法来提供思路 1. ESXI中scp拷贝虚拟机文件方式首先你的ESXI主机需要开启ssh服务,通过ssh连接到主机上 [root@xxx-v50:~] df -hFilesystem Size Used Available Use% Mounted onVMFS-5 2.4T 1.6T 820.0G 67% /vmfs/volumes/datastore1 (3)vfat 249.7M 8.0K 249.7M 0% /vmfs/volumes/cd1add72-c036fbf4-a2a7-1ea5b82e2b9dvfat 4.0G 29.6M 4.0G 1% /vmfs/volumes/574d7319-7cd8e47f-98fb-1418775d62c8vfat 249.7M 161.6M 88.2M 65% /vmfs/volumes/68306575-75d8013d-0da6-15adcae7400evfat 285.8M 206.2M 79.6M 72% /vmfs/volumes/574d72df-d3761c90-16ff-1418775d62c8[root@xxx-v50:~] cd /vmfs/volumes/datastore1\ \(3\)/[root@xxx-v50:/vmfs/volumes/574d730f-1cc9828a-d6e2-1418775d62c8] ls168-Linux-node-sit 203-linux-uat-java-farme-A 204-linux-uat-java-farme-B 208-linux-uat-java-app-A 209-linux-uat-java-app-B 63-win2012_sit_node Jenkins-69-new iso[root@xxx-v50:/vmfs/volumes/574d730f-1cc9828a-d6e2-1418775d62c8] scp -r Jenkins-69-new root@192.168.0.60:/vmfs/volumes/datastore1这种方法最省心,缺点是虚拟机比较大拷贝传输的时间长,如果有vcenter直接复制即可。 2.通过拷贝文件来实现迁移 如上图所示:jobs //存放的job信息config.xml //权限,分组,项目,结构等配置信息plugins //插件文件users //用户文件 首先需要下载个同版本的war包或者其他的安装文件然后配置好环境变量: export HISTTIMEFORMAT="%F %T `whoami` "JAVA_HOME=/data/skong-javaCLASSPATH=.:$JAVA_HOME/lib/tools.jarPATH=$JAVA_HOME/bin:$PATHexport JAVA_HOMEexport CLASSPATHexport PATHPATH=/data/skong-node/bin:$PATHexport PATHexport MAVEN_HOME=/usr/local/apache-maven-3.3.9**export JENKINS_HOME=/data/jenkins**安装Jenkins时什么插件都不安装,安装好了之后吧如上目录文件覆盖的相应位置,重启Jenkins。 ...

June 17, 2019 · 1 min · jiezi

DevOps-基于Walle的小型持续集成实战一概述

该文章用于概述一个小型持续集成环境的搭建的方案什么是持续集成?持续集成作为当今软件开发实践,可以简单理解为团队开发相对频繁的集成他们的工作,一般让每个成员每天至少集成一次,而这回造成每天会有多次的版本发布。于是我们需要应用到自动化的构建模式(编译发布到测试监控),从而尽早的发现集成中的错误。 持续集成流程常用生态仓库管理 Git 代码仓库(Gitlab,Gitee)Nexus 包私服库构建工具 Jenkins 热门-构建发布工具Ansible 配置管理工具Walle 构建发布工具运行环境 Linux 系统Docker 容器Nginx 负载均衡域名解析构建环境 mavennodejspythonjava经典流程手工发布 - Java SpringBoot应用到一台服务器特征:一个环境,一台服务,少量应用 1、Maven打包 mvn clean compile package -Dmaven.test.skip=true2、放到服务器 scp -r xxx.jar username@192.168.0.1:/data/app/ or FTP工具3、登录服务器 ssh root@192.168.0.14、停用旧应用 ps -ef | grep java -> kill -9 xxxx4、启用新应用 nohup java -server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -jar /data/app/xxx.jar > /data/app/xxx.log 2>&1 &手工发布 - React-Antdpro 应用到一台服务器特征:一个环境,一台服务,少量应用 1、Npm打包器 npm run build2、放到服务器 本地压缩dist.rar -> scp -r dist.rar username@192.168.0.1:/data/nginx/ or FTP工具 -> 解压内容3、登录服务器 ssh root@192.168.0.14、停用旧应用5、启动新应用 https://segmentfault.com/a/11...延伸问题⚠️ 在低频次小规模更新下,该方案可以在用最少的资源和适度的时间花费上得到平衡。如果出现 多人协作,发布频繁,多台服务,多套环境我们该如何管理这些内容?多人协作,如何代码管理?以及相关依赖引用?以下方案供选择,解决代码管理问题(他们比svn拥有更灵活更开放的管理手段)Gitlab 公网 / 私服Gitee 国内较好的代码仓库管理服务Githubhttps://git-scm.com/ ...

June 14, 2019 · 1 min · jiezi

Jenkins自动部署NodeJs

Jenkins配置1、打开系统设置中的全局工具配置,选择新增NodeJs,选择自己对应的版本后保存即可,我这里别名直接用版本号代替了。 2、打开系统设置中的配置,选择增加SSH-Server,我选择直接用用户名登录的, 勾选Use password authentication, or use a different key,填写对应账号的密码即可 构建任务1、新建任务,选择构建自由风格的项目 2、源码管理中填写git地址并选择自己对应的分支 3、构建环境中勾选Provide Node & npm bin/ folder to PATH,选择自己对应的NodeJs 4、构建,选择执行shell 选择通过命令行发送文件 Source files:需要发送的文件,该路径是本项目在Jenkins工作空间(workspace)下的相对路径 Remove prefix:移除前缀,意思是去除路径中的文件夹,只留下文件 Remote directory:目标文件夹,该路径是目标Tomcat所在服务器的root文件夹下的相对路径 5、保存,构建看看结果,成功的话结果如下: 报错一开始总是下面这样报错 sh: /var/lib/jenkins/workspace/web_erp/node_modules/.bin/cross-env: Permission deniednpm ERR! code ELIFECYCLEnpm ERR! errno 126npm ERR! sdhadmin@1.0.0 build:qa: `cross-env NODE_ENV=qa env_config=qa node build/build.js`npm ERR! Exit status 126npm ERR! npm ERR! Failed at the sdhadmin@1.0.0 build:qa script.npm ERR! This is probably not a problem with npm. There is likely additional logging output above.npm ERR! A complete log of this run can be found in:npm ERR! /var/lib/jenkins/.npm/_logs/2019-06-04T02_24_47_411Z-debug.logBuild step 'Execute shell' marked build as failure网上找了一圈资料没找到什么信息,试着把node_modules文件夹删掉再重新构建后就ok了。 ...

June 11, 2019 · 1 min · jiezi

使用-Jenkins-Ansible-实现-Spring-Boot-自动化部署101

使用 Jenkins + Ansible 实现 Spring Boot 自动化部署101本文要点:设计一条 Spring Boot 最基本的流水线:包括构建、制品上传、部署。使用 Docker 容器运行构建逻辑。自动化整个实验环境:包括 Jenkins 的配置,Jenkins agent 的配置等。 1. 代码仓库安排 本次实验涉及以下多个代码仓库:% tree -L 1├── 1-cd-platform # 实验环境相关代码├── 1-env-conf # 环境配置代码-实现配置独立└── 1-springboot # Spring Boot 应用的代码及其部署代码1-springboot 的目录结构如下:% cd 1-springboot% tree -L 1 ├── Jenkinsfile # 流水线代码├── README.md├── deploy # 部署代码├── pom.xml └── src # 业务代码所有代码,均放在 GitHub:https://github.com/cd-in-prac... 2. 实验环境准备 笔者使用 Docker Compose + Vagrant 进行实验。环境包括以下几个系统:Jenkins * 1 Jenkins master,全自动安装插件、默认用户名密码:admin/admin。Jenkins agent * 2 Jenkins agent 运行在 Docker 容器中,共启动两个。Artifactory * 1 一个商业版的制品库。笔者申请了一个 30 天的商业版。使用 Vagrant 是为了启动虚拟机,用于部署 Spring Boot 应用。如果你的开发机器无法使用 Vagrant,使用 VirtualBox 也可以达到同样的效果。但是有一点需要注意,那就是网络。如果在虚拟机中要访问 Docker 容器内提供的服务,需要在 DNS 上或者 hosts 上做相应的调整。所有的虚拟机的镜像使用 Centos7。另,接下来笔者的所有教程都将使用 Artifactory 作为制品库。在此申明,笔者没有收 JFrog——研发 Artifactory 产品的公司——任何广告费。 笔者只是想试用商业产品,以便了解商业产品是如何应对制品管理问题的。启动 Artifactory 后,需要添加 “Virtual Repository” 及 “Local Repository”。具体请查看 Artifactory 的官方文档。如果你当前使用的是 Nexus,参考本教程,做一些调整,问题也不大。如果想使用已有制品库,可以修改 1-cd-platform 仓库中的 settings-docker.xml 文件,指向自己的制品库。实验环境近期的总体结构图如下: ...

May 22, 2019 · 2 min · jiezi

Jenkins API 使用

Jenkins 是一款流行的开源持续集成工具,可以用来做一些软件开发的自动化工作,如打包,测试,自动部署等。 Jenkins 中有 view 和 job 的概念, view 相当于组, job 则是具体的任务。view 下面可以创建 job ,但 job 可以不在任何 view 下。 这里主要介绍 Jenkins 提供的 HTTP API ,至于如何使用 Jenkins 请参看 Jenkins User Documentation。 API鉴权Jenkins 使用 Baisc Auth 的权限验证方式,需要传入 username 和 api token 。其中 api token 需要在用户的设置界面去创建。 但在 Job 的远程触发中,可以设置用于远程触发的 token (在 Job 的配置页面设置),这样在触发 Job 时就不需要传入 Basic Auth 了。远程触发的 token 使用 urlencode 的方式放在请求的 body 中,其原始数据为: token=<Token Value> 下面给出两种方式触发 Job 的例子: ...

April 21, 2019 · 3 min · jiezi

持续集成和持续交付工具-jenkins

jenkins说明jenkins是一款由Java编写的开源的持续集成工具,它运行在Servlet容器中(例如Apache Tomcat)。它支持软件配置管理(SCM)工具(包括AccuRev SCM、CVS、Subversion、Git、Perforce、Clearcase和RTC),可以执行基于Apache Ant和Apache Maven的项目,以及任意的Shell脚本和Windows批处理命令,可以通过各种手段触发构建,例如提交给版本控制系统时被触发,也可以通过类似Cron的机制调度,也可以在其他的构建已经完成时,还可以通过一个特定的URL进行请求。jenkins安装官方下载:https://jenkins.io/zh/download/有相应系统的安装包和通用包(.war),通过Servlet容器运行1、WAR包安装将最新的稳定Jenkins WAR包 下载到您计算机上的相应目录。在下载的目录内打开一个终端/命令提示符窗口到。运行命令java -jar jenkins.war浏览http://localhost:8080并等到Unlock Jenkins页面出现。2、brew安装Mac下执行brew install jenkins-lts 命令安装MacBook-Pro:~ mleo$ brew install jenkins-ltsUpdating Homebrew…==> Auto-updated Homebrew!Updated 2 taps (homebrew/core and homebrew/cask).==> New Formulaezabbix-cli==> Downloading http://mirrors.jenkins.io/war-stable/2.164.1/jenkins.war==> Downloading from http://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.164.1/jenkins.war######################################################################## 100.0%==> jar xvf jenkins.war==> CaveatsNote: When using launchctl the port will be 8080.To have launchd start jenkins-lts now and restart at login: brew services start jenkins-ltsOr, if you don’t want/need a background service you can just run: jenkins-lts==> Summary???? /usr/local/Cellar/jenkins-lts/2.164.1: 7 files, 77.3MB, built in 26 seconds==> brew cleanup has not been run in 30 days, running now…Removing: /Users/mleo/Library/Caches/Homebrew/java_cache… (275B)Removing: /Users/mleo/Library/Logs/Homebrew/cocoapods… (64B)安装完成后可以执行brew services list查看安装服务MacBook-Pro:~ mleo$ brew services listName Status User Plistjenkins-lts stopped启动jenkins,执行brew services start jenkins-lts关闭jenkins,执行brew services stop jenkins-ltsMacBook-Pro:~ mleo$ brew services start jenkins-lts==> Successfully started jenkins-lts (label: homebrew.mxcl.jenkins-lts)直接访问:http://127.0.0.1:8080第一次进行需解锁通过cat /Users/mleo/.jenkins/secrets/initialAdminPassword 查看密码推荐插件安装中创建第一个管理员实例配置进入系统jenkins使用部署项目一、创建任务左上角点击新建任务 选择自由风格项目进入配置配置任务主要分下面几步:1、项目说明2、源代码管理3、构建触发4、构建准备5、构建操作6、构建完后操作二、执行任务进入任务,点击立即构建三、查看日志进入构建进程,查看控制台输出 可以查看构建日志 ...

April 11, 2019 · 1 min · jiezi