jenkens其实是代码上传工具
Jenkins 持续集成使用教程
用 jenkins 有什么好处
- 通过规范化来完成,简单,繁琐,浪费时间的重复工作
- 规范化工作,以免出现低级错误
- 实现随时随地任何人一键构建
- ......
安装 jenkins
以 Mac 设备为例(Windows 步骤类似),帮你一步一步搭建好 jenkins。jenkins 属于 java 项目 依赖于 java,需要先安装 java jdk,具体安装方式请自行百度。
安装 jenkins 有常用的三种方式。
使用 pgk 安装包安装
在 官网 下载 pgk 安装包,使用安装器安装,按照流程安装即可。此安装方式会在 Mac 系统里创建一个名为 jenkins 用户,jenkins 服务就部署在这个用户下。
具体步骤如下图所示:
此种方式不推荐。
使用 war 安装
直接去官网下载 war 文件,并 cd 到 jenkins.war 所在目录,执行:
java -jar jenkins.war --httpPort=8080
war 包自带 jetty 服务器,以上命令会自动启服务器,并完成部署。
此种方式安装,会在当前用户的根路径下创建 .jenkins 隐藏文件,并产生多余的配置文件,需手动管理,且不方便卸载。
此种方式也不推荐。
使用 Homebrew 安装
Homebrew 作为 macOS 下的包管理器使用起来异常的简单快捷方便。
安装 Homebrew 之前, 首先安装 Command Line Tools for Xcode,命令如下:
xcode-select --install
Homebrew 依赖 Command Line Tools for Xcode,Xcode 命令行工具包含在 Xcode 中,如果 mac 设备已经安装 Xcode,请忽略此步。
安装完上面的编译依赖之后,通过下面的代码完成 Homebrew 的安装:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
完成 Homebrew 安装。
可通过以下命令查看当前 Homebrew 管理的服务:
brew services list
使用 Hombrew 安装 jenkins,执行以下命令:
brew install jenkins
此步,Homebrew 会下载并安装自动完成所有依赖,包括 java。并会创建 ‘jenkins’ 命令。
同时,卸载 jenkins 的方式为:
brew uninstall jenkins
启动 jenkins 服务的方式为:
brew services start jenkins
使用此种方式启用 jenkins 服务支持后台运行,可以关闭终端工具。
也可以使用 jenkins 命令来启用 jenkins 服务。但此种方式不支持后台运行,关闭命令行工具,服务自动关闭。
另,常用命令还有:
重启 jenkins 服务的方式为:
brew services restart jenkins
停止 jenkins 服务的方式为:
brew services stop jenkins
通过此种方式安装,不会在系统中产生垃圾文件和多余的配置文件,所有的文件都是用 Homebrew 来管理,并且方便卸载。
此种方式强烈推荐。
如安以上方式安装后,localhost 打不开,可能的情况一般有:java jdk 未正确安装或配置,8080端口被占用,安装路径权限不够等等的问题,遇到这样的问题最好的办法是:卸载重装。不同的安装方式,卸载方式也会不同。具体可参看这个教程。
另,也有如下方式操作 Jenkins 服务
http://localhost:8080/exit //停止服务
http://localhost:8080/restart //重启服务
http://localhost:8080/reload // 重新载入服务
配置 jenkins
创建用户
完成 jenkins 安装以后,在浏览器种打开 localhost ,会进入配置 jenkins 页面。
按照提示,找到/Users/Shared/Jenkins/Home/ 这个目录下,打开 initialAdminPassword 文件,复制出密码并填入,点击继续,进入安装插件页面。
建议选择 Install suggested plugins。
等待插件安装完成后,jenkins 会重启,等待重启完成后,会进入创建用户页面。
填写用户信息后,保存即可。请务必记住用户名和密码信息,否则重置用户信息非常麻烦。
安装插件
登录 http://localhost:8080 ,选择“系统管理”——“管理插件”,在“可选插件”中选中“GitLab Plugin”、“Gitlab Hook Plugin”、“Xcode integration"等常用插件,然后安装。
安装完成插件后,就可以新建项目了!
其他常用插件有:
Email Extension Plugin
该插件用于替换 Jenkins 自带的邮件发送,更加的强大。
Git Plugin
该插件允许使用GIT作为一个构建SCM(源代码控制管理系统)。
Post build task
该插件允许用户依据构建日志的输出执行一个shell/批处理任务。
Ruby Plugin
该插件允许用户在构建脚本中使用 Ruby。
Python Plugin
添加执行 Python 脚本作为Hudson的构建步骤。
Gradle Plugin
该插件允许Hudson调用Gradle构建脚本作为主体构建的步骤。
FTP-Publisher Plugin
该插件能上传项目构件和整个目录到一个FTP服务器。
Extended Choice Parameter plugin
该插件可以扩展参数化构建过程
Extended Choice Parameter Plug-In
该插件可以扩展参数化构建过程
Dynamic Extended Choice Parameter Plug-In
该插件可以扩展参数化构建过程
git parameter Plug-in
该插件可以扩展参数化构建过程
fir-plugin
该插件是 fir.im 分发平台提供的 jenkins 插件,用于上传安装包到 fir.im 平台。此插件安装方式与上面的插件安装方式不同,具体安装方式见文末。
新建项目
点击新建,在新建项目页面输入项目名称,选择“构建一个自由风格的软件项目”,然后进入配置页面
在源码管理中 选择 Git ,填写仓库地址
如出现红色警告,说明 Jenkins 访问不了 Git 仓库,一般是因为没有权限导致。点击 Credentials 项的 Add ,在打开的 Jenkins Credentails Provider:Jenkins 页面,在 Username 和 Password 输入 Git 仓库的用户名和密码,完成添加。不必担心用户信息外泄,Jenkins 服务和所有配置都保存在本地。
还可以通过配置 Git SSH 的方式赋予 Jenkins 访问 Git 仓库的权限,按此方法较为麻烦,具体步骤略。
在 Branches to build 中设置 Branch Specifier 要构建的分支,默认为 master。
在构建触发器中设置构建自动化的触发器。
其中 Build periodically,为定时 build,在日程表里设置 build 时间,如设置 00 20 * 表示每天 20 点执行定时 build。
Poll SCM (poll source code management) 轮询源码管理,表示在指定的时间点去轮询 Git 仓库,看是否有新的 commit,如有,则触发构建。如设置 0/5 表示每5分钟轮询一次。
完成此步骤后,剩余的工作,皆可通过 Execute shell 脚本来执行。不同类型项目执行脚本不同。
脚本构建
以构建 iOS 的 SellerPlatform 迷橙商家端项目上传 fir.im 分发平台为例完成创建。
第一步 归档
archive.sh
`#! bin/bash
export LC_ALL=zh_CN.GB2312;
export LANG=zh_CN.GB2312gitMessage=
git log --pretty=format:"%s"
;stringTag=${gitMessage%%】}; #%%[ 表示从右边开始,删除最后(最左边)一个 [ 号及右边的字符
debug="【Debug";
preRelase="【PreRelase";
relase="【Relase";if [[ $stringTag != $debug && $stringTag != $preRelase && $stringTag != $relase ]]
then
exit 1
else
echo "触发非参数化构建 暗号:$stringTag】"
fiecho ">>>>>>>>>>>>>>>>>>>开始构建项目,当前选择构建类型:" + $BUILDTYPE
echo ">>>>>>>>>>>>>>>>>>>当前 workspace " +$WORKSPACEif [ $BUILDTYPE == "Release"]; then
xcodebuild archive -workspace $WORKSPACE/SellerPlatform/SellerPlatform.xcworkspace -archivePath $WORKSPACE/build/SellerPlatform.xcarchive -sdk iphoneos -scheme SellerPlatform -configuration Releaseelse
xcodebuild archive -workspace $WORKSPACE/SellerPlatform/SellerPlatform.xcworkspace -archivePath $WORKSPACE/build/SellerPlatform.xcarchive -sdk iphoneos -scheme SellerPlatform -configuration Debugfi
echo ">>>>>>>>>>>>>>>>>>>构建完成"
以上脚本实现的功能是:当在 git commit messge 里包含指定的标记号,即可完成对应标记号的构建。把控制权延伸到 git commit 操作里。
其中 【Debug】 代表打 debug 版本包,【PreRelase】代表打 preRelase 版本包,【Relase】代表打 relase 版本包。
首先,通过执行 git log --pretty=format:"%s" 命令,格式化输出 git commit log,
通过 %%】* 操作,是要拿到最后标记号【Debug】或【PreRelase】或【Relase】,如果拿到对应的标记号,则完成对应方式的构建。
另,Jenkins 会为每个工程项目创建一个本地目录空间,并提供了 \$WORKSPACE 环境变量来直接访问。
第二步 签名
signature.sh
echo "开始签名"
xcodebuild -exportArchive -archivePath $WORKSPACE/build/SellerPlatform.xcarchive -exportPath $WORKSPACE/build -exportOptionsPlist $WORKSPACE/build/ExportOptions.plist -allowProvisioningUpdates
echo "ipa文件已生成"
echo "开始上传fir"
以上脚本实现的功能是:根据第一步归档出来的projectName.xcarchive 完成签名打包。
第三步 上传
首先,打开终端,安装 fir-clifir 的命令行工具,用于通过命令行上传安装包。
需要先装好 ruby 再执行
gem install fir-cli
上传打 fir 命令
fir publish ${ipa_path} -T fir_token -c "${commit_msg}"
upload.sh
echo ">>>>>>>>>>>>>>>>>>>开始上传到 fir"
if [$BUILDTYPE == "Debug" ]; thenfir publish $WORKSPACE/build/SellerPlatform.ipa -T efa7a5559110764a5037c52d4599635f --password rose888 -c $CHANGELOG
elif [ $BUILDTYPE == "PreRelease" ]; then
fir publish $WORKSPACE/build/SellerPlatform.ipa -T 4f43ef4e28992358b511a76eb1c27d48 --password rose888 -c $CHANGELOG
else
fir publish $WORKSPACE/build/SellerPlatform.ipa -T 3a9a1a361fe52b8b0d5eb59c7d0bd808 --password rose888 -c $CHANGELOG
fi
echo ">>>>>>>>>>>>>>>>>>>上传成功啦"
至此,就完成了持续集成的流程。
完成后建构,还可以通过 Email Extension Plugin 插件,邮件通知到相关人员。还可以定制邮件内容。在邮件内容里,还可以放置二维码,方便下载安装。
更进一步,参数化构建
参数化构建,顾名思义,就是可以指定构建参数,完成高度可定制化构建。
首先,需要安装 git parameter Plug-in 插件,然后项目配置页面,在 General 中,选中‘参数化构建过程’,然后选择 git parameter。如图所示:
设置 name 为 git_branch,即为变量名,然后 Parameter type ,就是 选择 branch/tag/branch or tag 三种类型,在源码管理中 Branches to build 中设置 Branch Specifier 为 \$git_branch 。即可完成自定义分支构建。
同样,可以设置构建的版本类型。在构建的时候,进行选择。在此不再赘述。
fir-plugin 安装与使用
在上面的例子里,使用的是 fir.im 提供的命令行工具完成后建构的上传,也可以通过 fir-plugin 插件来完成上传。
安装
首先去下载插件
。然后,进入"系统管理"->"管理插件"->"高级"->"上传插件"
选择已下载好的 fir-plugin.hpi 插件,点击上传。
安装完成后重启服务。
使用
在 构建后操作 选择"Upload to fir.im",并添加 api token 并校验
立即构建项目,成功之后,在工程里的 Console Output 中有如下日志
说明成功了。
其他配置
内网访问
首先,拿到 jenkins 服务器所在设备上的内网 IP,执行如下命令可获得
ifconfig en0
进入"系统管理"->"系统设置" 找到 Jenkins Location 在 Jenkins URL 中设置地址,并加上端口号,格式如:172.0.0.1:8080/,然后保存。重启服务,内网其他设备输入地址即可访问。
当其他设备不能访问时,一般原因有:jenkins 服务器没启动,设备处于休眠模式,设备内网 IP 被重新分配。
觉得不错的话,欢迎关注我的公众号哦!
jenkens其实是代码上传工具的更多相关文章
- 使用git工具将本地电脑上的代码上传至GitHub
本文教你如果使用git工具将本地电脑上的代码上传至GitHub 1.安装git工具 安装git链接 2.使用git工具上传自己的代码到GitHub中 安装完git工具之后,我们会得到两个命令行工具,一 ...
- swfupdate flash上传工具
引用:http://baike.baidu.com/view/1332553.htm 下载地址:http://code.google.com/p/swfupload/ 什么是SWFUpload? SW ...
- 小白日记20:kali渗透测试之后渗透测试阶段(一)--上传工具
后渗透测试阶段--上传工具 为防止管理员将漏洞补上后,我们无法再通过该漏洞控制对方主机,所以需要进行后渗透测试阶段 1.上传各种工具 2.提权:为了全面控制目标系统 3.擦除攻击痕迹:防止管理员通过日 ...
- spring mvc 文件上传工具类
虽然文件上传在框架中,已经不是什么困难的事情了,但自己还是开发了一个文件上传工具类,是基于springmvc文件上传的. 工具类只需要传入需要的两个参数,就可以上传到任何想要上传的路径: 参数1:Ht ...
- git使用教程1-本地代码上传到github
前言 不会使用github都不好意思说自己是码农,github作为一个开源的代码仓库管理平台,我们可以把自己的代码放到github上,分享给小伙伴,自己也能随时随地同步更新代码. 问题来了:为什么越来 ...
- 基于WebImage的图片上传工具类
支持缩略图和水印. using System; using System.IO; using System.Linq; using System.Web; using System.Web.Helpe ...
- 学习Git的一点心得以及如何把本地修改、删除的代码上传到github中
一:学习Github的资料如下:https://git.oschina.net/progit/ 这是一个学习Git的中文网站,如果诸位能够静下心来阅读,不要求阅读太多,只需要阅读前三章,就可以掌握Gi ...
- git使用教程1-本地代码上传到github【转载】
本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/git/ 前言 不会使用github都不好意思说自己是码农,github作为一个开源的代 ...
- spring boot 文件上传工具类(bug 已修改)
以前的文件上传都是之前前辈写的,现在自己来写一个,大家可以看看,有什么问题可以在评论中提出来. 写的这个文件上传是在spring boot 2.0中测试的,测试了,可以正常上传,下面贴代码 第一步:引 ...
随机推荐
- 关于CUDA5之后cutil.h不可用的问题
用CUDA进行GPU加速开发的同学在移植一些代码片段时应该都有过这样的经历,如果自己用的是高版本的CUDA,系统有时会报错:CANNOT FIND CUTIL.H.查看代码才发现原来是多了CUTIL. ...
- Basic Classifiers and Loss Functions
Linear Classifier and Hing Loss (or Multiclass SVM Loss) Linear Mapping (Score function) Linear Clas ...
- 使用java代码将时间戳和时间互相转换
时间戳转时间: SimpleDateFormat simpleDateFormat = null; simpleDateFormat = new SimpleDateFormat("yyyy ...
- ionic3 监听软键盘的高度
ionic1 和普通cordova的大家都知道 就是看ionic3 和4 https://blog.csdn.net/sean_css/article/details/70243893 ionic c ...
- Ubuntu16.04 解决matplotlib乱码或者中文显示不了的问题(可用)
一. 下载字体 SimHei.ttf 复制到linux字体库中 sudo cp ~/SimHei.ttf /usr/share/fonts/SimHei.ttf 二.查看matplotlib配置 In ...
- 有关MySQL数据库命令
phpstudy使用最终端打开数据库 : 第一次打开默认的密码是:root. 进入后对数据可以进行增删查改. show databases; 是查看数据库的指令 注意:分号是数据库的结束符,没有加分 ...
- django中对数据库的增删改查
Django的配置文件时settings.py中的 TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplate ...
- Git很简单--图解攻略
Git Git 是目前世界上最先进的分布式版本控制系统(没有之一) 作用 源代码管理 为什么要进行源代码管理? 方便多人协同开发 方便版本控制 Git管理源代码特点 1.Git是分布式管理.服务器和客 ...
- 前端用node+mysql实现简单服务端
node express + mysql实现简单服务端前端新人想写服务端不想学PHP等后端语言怎么办,那就用js写后台吧!这也是我这个前端新人的学习成果分享,如有那些地方不对,请给我指出. 1.准备工 ...
- ElasticSearch优化系列一:集群节点规划
节点职责单一,各司其职 elasticSearch的配置文件中有2个参数:node.master和node.data.这两个参 数搭配使用时,能够帮助提供服务器性能. 数据节点node.master: ...