点击上方“方志朋”,选择“设为星标”

回复”666“获取新整理的面试资料

作者:邵磊

juejin.im/post/599fd5d151882524397f9fd3

前言

本文可能是网上最全的一篇全端jenkins部署解决方案介绍的文章,一直以来,领导都想解决代码提交和打包问题,尤其是小公司,打包流程混乱,造成线上版本和代码库git或svn中代码不一致问题。加入jenkins阵营,解决众多发包难题,显得刻不容缓。

研究过程

刚开始,我一直在docker下安装jenkins,按时长租用阿里的主机,用阿里容器服务做实验,反复创建docker容器,建立多个jenkins节点。结果发现,在容器中配置各种变量比较复杂,各种开发环境不易快速部署,当然啦,是刚开始的对jenkins研究过少造成的。

后来我采用了windows主机,配java、maven、Android环境,踩了一路坑,终于搞定了。但是我知道ios开发和编译必须使用mac系统,本来想增加一个jenkins节点来实现ios的编译。

当配置好之后,我突然改变了主意,与其两台电脑开着,不如索性把整个jenkins部署到mac系统下(毕竟我们公司暂时没有c#工程)。于是,所有的操作,所有的环境我又折腾了一遍。

下面我逐一讲解最终mac下实现全端jenkins持续集成,当然不包含c#,一路踩坑下来,我觉得这都不是事,流程都差不多。

效果图

安装jenkins

我个人比较喜欢新事物,所以建议使用较高版本,我使用的2.61,目前最新版是2.75。

mac下使用brew安装,终端执行

brew install jenkins

等安装完成后,终端运行jenkins即可启动。

jenkins

安装 xcode

这个比较简单,直接从appstore下载最新版即可。安装后,将公司项目拉入xcode,先保证项目在本机编译,这里我登录了app开发者帐号,以便下载各种证书及发布。

安装 Android studio

这个到这里下载www.android-studio.org/

同理将本地项目拉入,运行。这一步主要是怕开发环境引起的坑,先把项目跑起来,后面坑会少点。

进入设置,复制出sdk文件路径,后面需要使用。我这里是/Users/Shaolei/Library/Android/sdk

安装git

因为我们公司用的是git,如果贵公司使用svn,则同理,只需保git或者svn命令可以敲出来即可。

我这里的版本比较老,尽量使用新的,我懒得换了。

mac:~ shaolei$ git version
git version 2.11.0

安装source tree

这是一个非常好用的git可视化工具,改天会具体介绍它的强大功能。

这款软件不是必须的,只是为了方便项目拉取,所以,你可以跳过此步骤。

配置jenkins环境

这里才是至关重要的一项,本文的核心

配置插件

1.Android Emulator Plugin

Starts an Android emulator with given properties before a build, then shuts it down after.

2.build timeout plugin

This plugin allows builds to be automatically terminated after the specified amount of time has elapsed.

3.Email Extension Plugin

This plugin is a replacement for Jenkins's email publisher

4.Gradle Plugin

This plugin allows Jenkins to invoke Gradle build scripts directly.

5.Keychains and Provisioning Profiles Management

This plugin integrates management of keychain and provisioning files for iOS and OSX projects.

6.Maven Integration plugin

This plug-in provides, for better and for worse, a deep integration of Jenkins and Maven: Automatic triggers between projects depending on SNAPSHOTs, automated configuration of various Jenkins publishers (Junit, …).

7.Pipeline

A suite of plugins that lets you orchestrate automation, simple or complex. See Pipeline as Code with Jenkins for more details.

8.Pipeline: GitHub Groovy Libraries

Allows Pipeline Grrovy libraries to be loaded on the fly from GitHub.

9.SSH Slaves plugin

Allows to launch agents over SSH, using a Java implementation of the SSH protocol.

10.Subversion Plug-in

11.Timestamper

Adds timestamps to the Console Output

12.Workspace Cleanup Plugin

This plugin deletes the project workspace after a build is finished.

13.Xcode integration

This plugin provides builders to build xcode projects, invoke agvtool and package .ipa files

其中Android Emulator Plugin、Gradle Plugin是安卓必须插件;其中Keychains and Provisioning Profiles Management、Pipeline、Xcode integration是ios编译必须插件;

其中Maven Integration plugin、SSH Slaves plugin是maven项目必须插件,其他的Email Extension Plugin这个是为了编译失败的时候通知具体提交代码开发人员邮件

配置系统设置

Local Maven Repository为maven仓库地址;如果本机没有安装maven,可能需要增加maven仓库;

下面需要加入安卓环境变量,即上文中提到的那个sdk地址;

这里配置github地址,邮件用户名密码,注意发件人的邮箱必须上面jenkins注册是管理员邮箱是一个,否则一直失败,这里是个坑。

增加计划

Android 项目job

创建安卓job

配置项目的git库地址

下面配置触发器,每隔1分钟检查一次git库,也可以使用subscribe订阅,这里暂不做讲解。

设置编译后,将文件拷贝到一个文件目录。这里使用smb协议连接到了一个内网文件服务器上,方便测试部门测试。

至于具体为何执行2次拷贝,是因为项目同时编译测试环境地址和真实环境地址,只有连接的服务器地址不通,其他代码都相同,具体实现可看另外一篇博文:

https://juejin.im/post/59302a0fa22b9d0058b785bc

ios项目job

和安卓相同的源代码管理及触发器不做介绍,请参照安卓,下文同理。

这里需要配置ios项目的tagert,可以通过xcode打开查看,勾选Pack application and build .ipa?,使jenkins生成ipa包

配置证书地址和密码,这里指的是Keychain

Keychain path默认地址为/Users/shaolei/Library/Keychains/login.keychain,其中shaolei为mac登录的用户名,密码就是登录密码。失败时邮件发送至影响代码的配置请参照安卓,下文同理。

同时编译两个ipa包请查看:

https://juejin.im/post/59648bb05188250cf956e3ef

java项目job

因为公司人员少,项目版本如果让开发去控制,比较繁琐,每个开发得不停的增加版本号,这里我使用jenkins去控制版本号,这样也方便查询和回滚代码。

当然啦,实现war的升级和回滚可看另外一篇文章:

https://juejin.im/post/59633a126fb9a06ba024ffdd

cd ${WORKSPACE}
mvn clean
cd ${WORKSPACE}/******/src/main/resources/
echo ${BUILD_NUMBER} >ver.xml

当然了,这里用到了几个关键词变量,是jenkins特有的,更多变量参照下文:

CHANGE_AUTHOR
For a multibranch project corresponding to some kind of change request, this will be set to the username of the author of the proposed change, if supported; else unset.
CHANGE_AUTHOR_DISPLAY_NAME
For a multibranch project corresponding to some kind of change request, this will be set to the human name of the author, if supported; else unset.
CHANGE_AUTHOR_EMAIL
For a multibranch project corresponding to some kind of change request, this will be set to the email address of the author, if supported; else unset.
CHANGE_TARGET
For a multibranch project corresponding to some kind of change request, this will be set to the target or base branch to which the change could be merged, if supported; else unset.
BUILD_NUMBER
The current build number, such as "153"
BUILD_ID
The current build ID, identical to BUILD_NUMBER for builds created in 1.597+, but a YYYY-MM-DD_hh-mm-ss timestamp for older builds
…………………………………………等等

h5项目job

这里我就用了zip打包,部署时使用zip解压到指定目录即可。

cd ${WORKSPACE}
echo ${BUILD_NUMBER} >ver.txt
zip -r h5.zip ./ -x .git\* -x README.md -x .project -x .gitignore
cp ${WORKSPACE}/h5.zip /Volumes/***/H5/h5-${BUILD_NUMBER}.zip

总结

本文全面讲解了jenkins各项目持续继承方案,因为涉及环境过多,坑还是比较多的,希望自行填坑。

热门内容:      SpringBoot+Mybatis+ Druid+PageHelper 实现多数据源并分页
17 个方面,综合对比 Kafka、RabbitMQ、RocketMQ、ActiveMQ 四个分布式消息队列
Mybatis的工作原理,你了解过吗?
图解 Java 垃圾回收机制,写得非常好!
一个员工的离职成本到底有多恐怖!终于有人把 Docker 讲清楚了,万字详解!Tomcat 和 JVM 的性能调优总结Java 性能优化:教你提高代码运行的效率感受lambda之美,推荐收藏,需要时查阅最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。
获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。
明天见(。・ω・。)ノ♡

某小型公司持续集成工具 jenkins 实践相关推荐

  1. android studio 设置自动编译_某小型公司持续集成工具jenkins实践(JAVA WEB、Android、IOS、html)...

    作者:邵磊链接:https://urlify.cn/qIB7fq # 前言 本文可能是网上最全的一篇全端jenkins部署解决方案介绍的文章,一直以来,领导都想解决代码提交和打包问题,尤其是小公司,打 ...

  2. Jenkins 流水线 获取git 分支列表_某小型公司持续集成工具 jenkins 实践

    作者:邵磊http://juejin.im/post/599fd5d151882524397f9fd3 前言 本文可能是网上最全的一篇全端jenkins部署解决方案介绍的文章,一直以来,领导都想解决代 ...

  3. 持续集成工具 jenkins 实践

    作者:邵磊 juejin.im/post/599fd5d151882524397f9fd3 前言 本文可能是网上最全的一篇全端jenkins部署解决方案介绍的文章,一直以来,领导都想解决代码提交和打包 ...

  4. python 持续集成工具_持续集成工具: Jenkins学习

    持续集成工具: Jenkins学习 -- 部分内容收集自网络,如有侵权,请联系作者删除 一. 概念 在过去的开发整体流程中,是所有人写好代码之后统一进行合并(svn,git),然后进行测试,确保准发布 ...

  5. 【云原生 • DevOps】一文掌握持续集成工具 Jenkins

    目录 一.持续集成工具 Jenkins 介绍 1. 什么是持续集成 2. Jenkins 介绍 二.Jenkins 的安装与部署 1. 安装 Jenkins 2. 本地访问 Jenkins 3. 插件 ...

  6. 持续集成工具Jenkins学习4 Idea集成Jenkins插件

    持续集成工具Jenkins学习4 Idea集成Jenkins插件 一.功能简介 二.安装Idea插件 1. 搜索安装 2. 设置 三.Jenkins开启CSRF 四.使用 一.功能简介 Idea可以方 ...

  7. 中小型研发团队架构实践:高效率、低风险,一键发布并测试的持续集成工具Jenkins...

    一.Jenkins 简介 \\ 当每月发布次数变得越来越多时,如超过 200 次,发布工作人员的工作量会翻倍,此时由人工发布操作失误引起的风险会变得越来越大.为了提高项目的发布效率,也为了降低由人工操 ...

  8. 如何做好持续集成和部署?你不容错过的持续集成工具—Jenkins

    持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地 ...

  9. jenkins 忘记密码_持续集成工具Jenkins 在CentOS系统下安装

    一.Jenkins简介 Jenkins是一个开源的持续集成工具,用于持续.自动的构建.测试.发布项目.Jenkins使用Java开发,可与版本管理工具集成使用. Jenkins支持UI操作来部署流水线 ...

最新文章

  1. python读取txt文件写入-Python读写txt文本文件的操作方法全解析
  2. es6学习笔记-字符串的扩展_v1.0_byKL
  3. C++ 标准库类型 stack
  4. 将windows 客户机加入msits.com域环境中
  5. Android-简单拨号器案例
  6. mysql--innodb索引原理详解_MYSQL索引机制(InnoDB索引原理详解)
  7. c语言影碟租借管理系统,影碟出租信息管理系统
  8. Rust: Vec用法及其它
  9. 微信点餐外卖源码小程序开发
  10. linux查找历史记录内容,linux中查看历史记录
  11. bittorrent_如何匿名和加密您的BitTorrent流量
  12. 入门OJ:郭嘉的消息传递
  13. HBuilder打包App教程
  14. 机器视觉中的光源选型及打光方案分析
  15. 删除文件unlink
  16. python 视频播放 拖动_python + opencv鼠标拖动视频区域裁剪
  17. Task 4 用户输入->知识库的查询语句
  18. 沙滩啤酒win7主题【rmzt】
  19. 【TB-02模组专题②】学习如何对接天猫精灵语音控制的过程;
  20. jenkins教程(jenkins教程入门到精通)

热门文章

  1. Windows下安装XAMPP,Wordpress
  2. 20155321 实验四 Android程序设计
  3. python-Django-01基础配置
  4. 【bzoj3150】 cqoi2013—新Nim游戏
  5. YARN集群维护部分问题汇总
  6. 为一月份开设的组队学习课程投票啦
  7. 谢文睿:西瓜书 + 南瓜书 吃瓜系列 2. 多元线性回归
  8. 求两个矩形重叠部分的面积
  9. Azure AI的又一里程碑,Neural TTS新模型呈现真人般情感饱满的AI语音
  10. 腾讯云TDSQL-A发布公有云版本 支持第七次全国人口普查等海量数据场景