一、扯闲篇
打包对于每个客户端开发来说是家常便饭,在整个开发流程中,咱们或许会打很屡次的包,本地build运转验证,打包给测试,啥?有bug?,持续。。。。咱们本地调试的时分能够直接运转,可是给测试供给测试包或许产品供给验收包的时分,一般是给链接让他们自行下载,或许让他们自行点击构建,此刻就需求一个构建打包的渠道了,所以需求就又来了。。。
从头到尾开发一个相似渠道需求不少的资源,一般情况下,没有沙雕会这么做,除非是大厂,有许多构建的需求,内部会有相似的渠道,咱们曾经公司内部有用“摩天轮”,现在换公司了,现在公司用的其他的渠道,总感觉不好用,所以决议运用开源的Jenkins来建立自己的打包渠道(都是由于闲的)
由于是是在本地建立的,所以我下面以Mac os作为比方
二、建立流程
1、装置
一言不合就直接上链接了,www.jenkins.io/download/we… ,官网直接下载
a、 由于是mac环境,直接一个指令就好 brew install jenkins ,
b、 当然,假如本来没有装过brew,是会收成 brew command not found ****一枚,不要方,百度一下你就知道,再来一个指令 /usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)” “)****即可。之后就依照提示挑选,然后便是等候。。。主动装置一堆东西后,就提示成功了。
c、 终究记住brew doctor 一下,会有些warning,依照提示履行对应指令就好,试了下,感觉中科大的源比较快,建议运用这个。
d、 等悉数装置完再履行 brew services start jenkins 其实我终究发动的时分是直接运转 /opt/homebrew/bin/jenkins 文件的。
好了,以上便是装置了。
2、装备
1、发动
上面装置完今后,就直接在浏览器输入 http://localhost:8080 就会翻开jenkins了,初次翻开不要着急,等下会呈现一个输入暗码的页面,暗码在发动的的终端窗口里,或许 /Users/xxx/.jenkins/secrets/initialAdminPassword 下面,仿制粘贴就好。
紧接着会让你安转相应插件,左边是默许的,右边是自定义,一般咱们选左边的默许的,点击后,又是等候。等候之后会提示创立一个账号。
2、新建节点
等悉数装置完今后,会进入jenkins的页面,还没完,刚进来会提示让你创立新节点,一般不运用默许节点,创立节点主要便是填写称号,和你的作业途径
随便填个本地目录就好,最大构建数看着填,然后保存,此刻的节点是不能用的,从头翻开这个节点,中间会显示各个体系下的指令,挑选当前体系的指令,在终端直接运转即可,终究把默许节点的最大构建数填0,不然会一向提示你。
3、新建使命
称号看着填,然后我是挑选多分支流水线,这个更符合我的要求,挑选完后点确认。
接下来便是装备这个使命,简单说便是填写库房地址,点击添加源,填入git地址和凭证,凭证便是对应的账号暗码,之前没有填过就创立,终究保存。
创立完结会呈现以下页面,下图是现已创立了两个使命了。
咱们点击其中的一个使命,到以下页面
对了,上面创立使命的地方有个Build Configuration, 规则便是读取库房分支下的Jenkinsfile文件,有这个Jenkinsfile文件,上图才会呈现。
终究还需奥装备一下邮件,也便是构建完结或发邮件,需求在体系设置的最下面,装备邮箱,这个就不叙述了,能够自行查找。
到这儿,一个使命就创立好了。
3、脚本
脚本便是上述的Jenkinsfile文件
pipeline {
agent any
environment {
GIT_URL = 'https://xxx.git'
GIT_CREDENTIAL_ID = 'git'
}
parameters {
text( name: 'BRANCH', description: '分支', defaultValue: 'master', trim: true)
text( name: 'VERSION_NAME', description: '版本称号', defaultValue: '1.0.0', trim: true)
text( name: 'VERSION_CODE', description: '版本编号', defaultValue: '1', trim: true)
choice( name: 'GRADLE_BUILD_TYPE', description: 'Gradle 构建类型', choices: '构建测试包\n构建正式包')
}
stages {
stage('Init') {
steps {
script {
if (!params.BRANCH?.trim() || !params.VERSION_NAME?.trim() || !params.VERSION_CODE?.trim() || (!params.GRADLE_BUILD_TYPE?.trim())) {
error('Build parameters required')
}
}
}
}
stage('Checkout') {
steps {
git url: "${env.GIT_URL}",
branch: "${params.BRANCH}",
credentialsId: "${env.GIT_CREDENTIAL_ID}"
}
}
stage('Build') {
steps {
withGradle {
script {
def command = ''
switch(params.GRADLE_BUILD_TYPE) {
case '构建测试包':
command = 'Debug'
break
case '构建正式包':
command = 'Release'
break
}
sh "./gradlew clean"
sh "./gradlew --no-daemon assembleArm64${command} --stacktrace"
}
}
}
}
stage('Upload'){
steps {
archiveArtifacts artifacts: 'app/build/outputs/apk/arm64/debug/*.apk,app/build/outputs/apk/arm/debug/*.apk,app/build/outputs/apk/arm/release/*.apk,app/build/outputs/apk/arm64/release/*.apk', followSymlinks: false, onlyIfSuccessful: true
}
}
}
post {
always {
emailext subject: '${DEFAULT_SUBJECT}',
body: '${DEFAULT_CONTENT}',
recipientProviders: [developers(), requestor()]
}
}
}
脚本中的stage 对应上图中的各个过程。
第一次构建的时分是没有Build with Parameters选项的,点构建,才会呈现。
产品归档是要单独处理下,本来产品归档是在上面直接装备的,现在是填在pipeline里边,也便是Jenkinsfile文件里边。
stage('Upload'){
steps {
archiveArtifacts artifacts: 'app/build/outputs/apk/arm64/debug/*.apk,app/build/outputs/apk/arm/debug/*.apk,app/build/outputs/apk/arm/release/*.apk,app/build/outputs/apk/arm64/release/*.apk', followSymlinks: false, onlyIfSuccessful: true
}
}
具体指令生成能够在 DashBoard -> 使命 -> 分支 -> 流水线语法 目录下生成然后填入Jenkinsfile即可,当然这个产品仅仅本机上的,咱们也能够上传到oss(自定义插件) 或许蒲公英渠道(有对应插件),然后将对应链接归档即可。
之后,不出其他意外,这个使命就能够构建了。
Console Output菜单能够检查日志,产品也会展示在页面上。点击就会下载了,他人需求打包或许对应的apk文件,直接把当前使命给对方即可。
好了,一个Android的构建渠道搭好了,现在咱们是不是一行代码都没有写,哈哈哈。
三、其他
上述是运用Jenkins来构建Android的基本过程,咱们都知道Jenkins是一个持续集成的渠道,咱们想做任何的功用都能够往上堆,比方IOS的构建,比方构建后的发版,都能够经过Jenkins完结,当然这是后话了。
咱们发现Jenkins默许的页面是不是不太好看,一个小老头,哈哈哈,也是能够改的,这儿推荐个库
afonsof.com/jenkins-mat…
1、在插件办理里边装置 simple theme 插件
2、翻开上述网址,挑选主题色 ,挑选logo,10kb以内哈,然后下载,并在jenkins体系设置页面的Theme选项下导入Extra Css ,把下载的css文件内容拷贝进去即可。
不过实测的时分,不知道什么原因,title的样色背景以及logo没有收效,不管了,直接在网页上”右键” -> “检查”
拿到布局后用css直接从头描述一番,先把jenkins-home-link给隐藏掉,然后给“logo”这个div 加个before和after,设置logo和标题
#jenkins-home-link {
display:none;
}
#page-header {
Background-color: #5D9AF8;
}
#model-link {
color: #5D9AF8;
}
.logo:before {
content: "";
width: 40px;
height: 40px;
background: url("/static/6a95f0e8/images/svgs/ic_login_logo.png");
background-size: cover;
}
.logo:after {
content: "我是标题";
text-transform:none;
font-weight: bold;
font-size: 30px;
color: white;
line-height: 40px;
margin-left: 20px;
}
然后这个logo直接放到 /Users/xxx/.jenkins/war/images 目录下面即可 也便是你的装置目录,假如你不是装置在这儿的,就换成的对应的装置目录即可,终究在jenkins体系设置导入这个css,完事后,重启服务
完美!!!
四、运用Docker布置
1、下载Docker客户端
mac: docs.docker.com/docker-for-…
windows: docs.docker.com/docker-for-…
也能够脚本安转:
// 脚本装置方式
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
记住把docker加到环境变量装备中
export DOCKER_PATH="/Applications/Docker.app/Contents/Resources/bin"
export PATH=".$PATH:$DOCKER_PATH"
完结后记住 docker -v 一下 ,成功的话,会显示版本号
2、装置jenkins
1、检查jenkins源
经过指令 docker search jenkins 检查所有源
我运用的是jenkins/jenkins,即docker pull jenkins/jenkins,然后便是下载了。
2、发动jenkins
直接运用指令 docker run -d –name docker-jenkins -p 8008:8080 -p 50000:50000 jenkins/jenkins
jenkins发动默许运用的8080,指令里边做个映射,即http://127.0.0.1:8008 。不出意外,你的jenkins发动了,不出意外你浏览器输入http://127.0.0.1:8008就能翻开以下页面了。
这个暗码在docker客户端日志里边能够看到
仿制输入即可,然后能够了。
当然事情必定不会这么顺利,等我输入完暗码后,直接来了个 No such plugin: cloudbees-folder ,
便是装置目录下没有cloudbees-folder插件,这个手动下载一下,然后把文件传到docker中去.
i、下载
翻开链接“ftp.icm.edu.pl/packages/je…”,在最下面找到并翻开“latest”目录,点击下载cloudbees-folder.hpi;
ii、上传
然后便是上传,指令结构是: docker cp /途径/文件名 容器ID:/上传途径 ,比方
docker cp /Users/xxx/Downloads/cloudbees-folder.hpi b281bb1e5e84b8efc06c5eded4d19c08f9fc77d59e50c74eb982fc6060ecd36a:/var/jenkins_home/plugins
容器ID在发动jenkins的时分,终端会回来的,检查下就好。 /var/jenkins_home/plugins是Docker中jenkins的目录。顺便说下docker往实体机传文件的指令:docker cp 容器ID:/上传途径 /途径/文件名 哈哈,长得差不多。
终究重启一下jenkins,就跟在实体机发动的相同了,装置默许插件,注册新账号,然后重启。就能够看到下面的页面了
这儿说下一些设置的装备,不像在实体机上操作,比方jdk,git,直接导入本地途径即可,在Docker中,咱们需求检查对应的途径后,再装备到Jenkins中。
先进入docker的环境,docker exec -it jenkins的容器id /bin/bash
- jdk:然后经过echo $JAVA_HOME来检查 java 途径在/usr/local中,然后装备进 jenkins 的 JAVA_HOME 中即可
- git:经过which git检查 git 履行文件途径为/usr/bin/git,把这个仿制到 jenkins 途径中
- mvn:jenkins 容器中一般没有 maven 供给的,所以 jenkins 装备中运用 install automatically 完美!!!
五、写在终究
终究没啥可写的,便是想说点个赞再走呗,哈哈哈。。。