Linux安装Jenkins
Jenkins是大名鼎鼎开源的CI软件,有非常多的插件,可以完成自动化部署,构建等功能。最近发现前端工程师,在每次的发布流程都非常的折磨人,于是想着不然自己搭建一个CI来处理。
CI的好处是显而易见的,可以持续集成和持续交付。我在之前做国外的项目的时候,这种便利,让我只需要关注我自己的代码和逻辑即可。代码编写出错,CI就过不去。代码通过后,QA就可以直接拿到APK包直接测试,完全不用我本地手动出包。节省了两边的时间。
按照一般Android的流程来看,本地写完代码—Push代码—提交PR—通过审核—打APK包—QA测试。有CI介入之后,相当于打APK包的操作就交由Jenkins来完成了。每一次的Push都可以对应一个APK包,QA只需要在当前的APK中测试是否问题已经解决。
现在这位前端同事使用的是Vue的框架。他的本地流程是本地写完代码—Push代码—到服务器Pull代码—打包—上线测试。每次看到他一遍又一遍的处理这些重复的操作,我就觉得不舒服,完完全全有更加简便和悠闲的办法。用了CI之后,他只需要写完代码Push到指定的分支即可。
安装JAVA
Linux下安装JAVA,相对于Windows来说,方便不少。可以直接采用源的方式安装,基础的JDK环境都会配置好的。下面以安装Openjdk为例:
- CentOS下可以通过yum -y install java-1.8.0-openjdk-devel.x8664,这里需要注意的是JDK对应的是-devel,不带这个的为JRE
- Ubuntu下通过apt-get install openjdk-8-jdk
安装完成后java -version可以查看。默认的安装路径会在/usr/lib/jvm中找到。
安装运行Jenkins
CentOS
CentOS中可以先添加一个yum的repos
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
然后执行yum install -y jenkins
Ubuntu
先添加repos key到系统当中
wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
当key添加成功后,我们追加Debian的repos到sources.list当中
> echo deb https://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list
先执行一遍apt-get update,之后执行apt-get install jenkins即可。
启动参数
在启动之前,可以做一下配置的修改:
- 默认Jenkins使用的是8080端口,可能会和自己的某些服务有冲突
- 默认Jenkins会调用jenkins的用户来操作,这会让一些脚本没有权限,可以修改为root
打开/etc/sysconfig/jenkins这个配置,修改上面两个参数
执行service jenkins start即可启动jenkins
首次登录的时候,需要输入/var/lib/jenkins/secrets/initialAdminPassword中的密码。输入无误后,就可以选择「Install suggested plugins」。
安装完成后可以通过http://localhost:8181(端口以你自己修改的为准)直接访问了。
Nginx反向代理
现在Jenkins是运行在本地的端口上,我们是想要它运行在云主机的某个指定端口。所以需要做Nginx的反向代理。
按照下方的代码,修改Nginx的conf,并通过nginx -s reload重新载入配置即可。
server {
listen 81;
server_name localhost;
location / {
proxy_pass http://127.0.0.1:8181;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
至此,我们可以直接通过云主机IP:端口,在互联网上访问Jenkins啦。
配置Jenkins(Gitlab/Gitee)
配置Jenkins的项目,由于我们的代码是托管在Gitee上的,所以需要采用Gitee Jenkins Plugin插件来配置。
里面按照他给的流程来操作,都不是很难。需要注意的坑是获取码云APIV5的私人令牌的过程,这个令牌可以在这里获取。在创建好私人令牌确定好权限之后,页面会自动刷新,会展示一串字符,即为私人令牌。切忌此处不要手动刷新,因为你只有这一个途径看到这个私人令牌。如果实在错过,那就重新申请一个令牌,当前这个会自动作废。
设置完成后,为新的项目增加上Gitee的WebHook,这样,每次Push代码的时候,就会自动运行Jenkins的构建了。
另外如果在构建成功的之后,还需要做一些处理,例如将打好的包移动到某个web目录等等。可以在Jenkins的项目配置中,增加构建步骤即可。
Jenkins还有很多强大的功能,我都还没有使用,继续摸索。