从头入手jenkins
前段时间项目处在测试阶段。5个测试妹子围着转,你不知道幸福的啊。
项目一共有开发、测试、生产三个环境,每次打包要切换分支代码,然后使用Xcode打包,然后生成ipa,再上传到蒲公英或者fir给测试妹子们用,实在是两眼昏花,提前更年!
于是我开始了配置jenkins之路!
我不习惯给别人很多个选择,所以我只写我自己的办法:
1 、jenkins 安装
最简单就是使用war包来安装,这真的是一件神奇的事情:https://jenkins.io
下载好war包之后cd到war所在的目录执行下面的命令:
java -jar jenkins.war
jenkinsh默认使用的端口是8080,如果你想更改端口,执行下面的命令
java -jar jenkins.war --httpPort=8888
建议你仔细浏览控制台输出
待Jenkins启动之后,在浏览器页面输入 http://localhost:8080
第一次进入为了安全会让你输入初始密码然后创建账户,如果你忘记了初始密码恭喜你,你没有浏览控制台输出!
这时候你可以有两种找回的方式:如果你没有关闭终端,在终端可以找到,你如果关掉了,不好意思我也忘记在哪个目录里了...
//补充 在这里
为了确保管理员安全地安装jenkins,密码已写入到日志中(不知道在哪里?)该文件在服务器上:
/Users/leeray/.jenkins/secrets/initialAdminPassword
2 、安装插件
安装创建账户完成之后就开始安装插件,建议你按照官方推荐安装插件,缺少的需要用到的插件再继续手动安装
我们项目使用的是git,大致需要下面几个插件:
GIT plugin
Git Changelog Plugin: 获取仓库提交的commit log
build-name-setter:用于修改Build名称
description setter plugin:用于在修改Build描述信息,在描述信息中增加显示
Xcode integration: iOS专用
安装方式也很简单,这里就不多少了!
3、 创建项目
创建一个自由风格的项目:
丢弃旧的构建可以保证你的服务器压力没那么大,你也不需要保留过多的构建
在源码管理里选择Git仓库地址,输入授权信息,选择分支继续:
接下里我们使用脚本来构建流程,添加构建Execute shell:
更新pod
export LANG=zh_CN.UTF-8
export LANGUAGE=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
pod update --verbose --no-repo-update
生成ipa(这一步如果出现什么路径scheme的问题,请自行检查更改)
# 工程名
APP_NAME="XXXX" BUILD_TYPE="Release"
# info.plist路径
project_infoplist_path="./${APP_NAME}/APP/info.plist" #取版本号
bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" "${project_infoplist_path}") #取build值
bundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" "${project_infoplist_path}") xcodebuild -workspace "${APP_NAME}.xcworkspace" -scheme "${APP_NAME}" -configuration "${BUILD_TYPE}" clean xcodebuild -workspace "${APP_NAME}.xcworkspace" -scheme "${APP_NAME}" -sdk iphoneos -configuration "${BUILD_TYPE}" configurationBuildDir="${configurationBuildDir}" SYMROOT='$(PWD)' echo "remove"
rm -rf ./${BUILD_TYPE}-iphoneos/Payload
rm -rf ./${BUILD_TYPE}-iphoneos/${APP_NAME}.ipa echo "building .ipa from .app"
cd "./${BUILD_TYPE}-iphoneos"
mkdir Payload
cp -r ${APP_NAME}.app Payload
zip -qr ${APP_NAME}.ipa Payload
#zip -qr ${TARGET}-dSYM.zip ${TARGET}.xcarchive/dSYMs
cd -
echo `pwd`
上传ipa至蒲公英:
# 工程名
APP_NAME="XXX"
#userKey和apiKey需要在蒲公英的账号设置中查找
userKey=""
apiKey=""
BUILD_TYPE="Release"
#蒲公英打包
curl -F "file=@./${BUILD_TYPE}-iphoneos/${APP_NAME}.ipa" \
-F "uKey=${userKey}" \
-F "_api_key=${apiKey}" \
-F "updateDescription=$DESCRIPTION" \
-F "isPublishToPublic=2" \
http://www.pgyer.com/apiv1/app/upload
这里,就全部实现了基本的自动打包上传分发的过程。更多细节及需求待进一步更新!
从头入手jenkins的更多相关文章
- jenkins与rebotframework搭配
一.下载Jenkins 下载地址:http://mirrors.jenkins-ci.org/ 贫道比较推荐下载war包的,进入上面的地址,页面里有war的链接,各种类型各种版本的release,大家 ...
- Jenkins+Jmeter+Ant接口持续集成
修改时间 修改内容 修改人 2016.5.22 创建 刘永志 2016.6.15 完成 刘永志 前言: 为什么要用Jmeter做接口测试: 当选择这套方案的时候,很多人会问,为什么选择Jmeter做C ...
- 基于Jenkins的环境搭建
基于 Jenkins 快速搭建持续集成环境 持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础.Jenkins 是一个开源软件项目,旨在提供一个开放易用的软件平台,使持续 ...
- Jenkins+Jmeter+Ant 接口持续集成(转)
来源:https://testerhome.com/topics/5186 为什么要用Jmeter做接口测试 当选择这套方案的时候,很多人会问,为什么选择Jmeter做Case管理?为什么不自己写框架 ...
- 用MSBuild和Jenkins搭建持续集成环境(1)
http://www.infoq.com/cn/articles/MSBuild-1 你或其他人刚刚写完了一段代码,提交到项目的版本仓库里面.但等一下,如果新提交的代码把构建搞坏了怎么办?万一出现编 ...
- 基于 Jenkins 快速搭建持续集成环境--转
源地址:http://www.ibm.com/developerworks/cn/java/j-lo-jenkins/ 持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础 ...
- jenkins+ANT+jmeter 接口测试环境搭建
目的 jmeter很早就接触了,最近又在接触项目的时候整了一下.写这篇博客主要有两个目的 1,为了给自己搭建jmeter做一个总结. 2,在部署过程中遇到过一些坑,在这分享出来,也希望能给需要的人一个 ...
- Jenkins 环境搭建
本文为jenkins入手教程,全文分为 jenkins安装.系统管理(配置全局安全.全局工具配置.管理插件).创建项目(同时创建证书),管理视图,jenkins 客户端,执行构建.查看任务历史 一.j ...
- Jenkins部署码云SpringBoot项目到远程服务器
本文是上一篇文章的后续,上一篇只是利用Jenkins部署项目到本地,并启动,本文是将项目部署到远程服务器并执行. 1.环境准备 1.1 安装插件 上一篇文章已经介绍了需要安装的应用及插件,这一篇还需要 ...
随机推荐
- Learning by doing——百日“扇贝打卡” 历程&展望
Java结课了.如果说这学期学习这门课后最明显的成果,那就是写了那么多的博客吧.而如果说本学期最有里程碑的事,那就是背了100多天单词,其中还获得了徽章! 这次想说说从中学以来一直喜欢的一门课--英语 ...
- 11月29日 The Rails philosophy 完成rails on guide 的第一章getting started with rails
the rails philosophy includes two major guiding principles: Don't repeat yourself: DRY is a principl ...
- Artem and Array CodeForces - 442C (贪心)
大意: 给定序列$a$, 每次任选$a_i$删除, 得分$min(a_{i-1},a_{i+1})$(无前驱后继时不得分), 求最大得分. 若一个数$x$的两边都比$x$大直接将$x$删除, 最后剩余 ...
- Docker实现原理之Namespace,CGroup
找了几篇这方面的文章,写的还不错,跟大家共享:DOCKER基础技术:LINUX NAMESPACE(上)DOCKER基础技术:LINUX NAMESPACE(下)DOCKER基础技术:LINUX CG ...
- Python中单线程、多线程和多进程的效率对比实验
GIL机制导致如下结果: Python的多线程程序并不能利用多核CPU的优势 (比如一个使用了多个线程的计算密集型程序只会在一个单CPU上面运行)python多线程适合io操作密集型的任务(如sock ...
- 链接SQL Server服务器
链接SQL Server服务器: 1.使用 ODBC 的 Microsoft OLE DB 提供程序 EXEC sp_addlinkedserver '别名','','MSD ...
- 提高Bash使用效率的方法
环境:centos6.5 1.移动 Ctrl + a :移到命令行首Ctrl + e :移到命令行尾 Ctrl + xx:在命令行首和光标之间移动 左右键移动字符 Ctrl+左右键移动单词(不记快捷键 ...
- MySQL共享表空间概念
1.表空间概念 Innodb存储引擎可将所有数据存放于ibdata*的共享表空间,也可将每张表存放于独立的.ibd文件的独立表空间.共享表空间以及独立表空间都是针对数据的存储方式而言的. 共享表空间 ...
- nginx是什么,如何使用
一:nginx是什么? 二:nginx作为网关,需要具备什么?(nginx可以作为web服务器,但更多的时候,我们把它作为网关,因为它具备网关必备的功能:) 反向代理(反向代理就是服务器找来一个机器代 ...
- Intersecting Lines
Intersecting Lines We all know that a pair of distinct points on a plane defines a line and that a p ...