Ubantu Jenkins自动化打包部署一:Jenkins安装

第一章 安装Jenkins

1.1 安装Java

Java环境,主要是JDK和JRE安装。当前比较流行的是Oracle的Java环境和OpenSDK的JAVA环境。

根据自己的喜好进行选择安装。

下面以OpenSDK安装为例:

1)安装OpenSDK Java。

$sudo apt-get install openjdk-8-jre
$sudo apt-get install openjdk-8-jkd

注意:软件安装需要足够的用户权限,使用sudo或者在root的账户下进行安装。

2)配置JAVA环境变量

环境变量的配置有不同的使用范围:

整个设备有效:可以在/etc/profile配置

用户有效:用户根目录下.bashrc或者.bash_profile

根据自己的需要进行配置。

如果是多账号登录,可以配置为设备有效。如果单用户,

启动的时候就是当前用户,在当前用户下设置有效。

例如在/etc/profile中配置

#set jdk environment
export JAVA_HOME=[JDK安装根目录]
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

然后使环境变量设置生效。

$ source /etc/profile

可以通过

$ echo $JAVA_HOME

或者

$ env

命令查看JAVA环境变量配置是否生效。

3)检查Java是否可以使用。

$ java -version或者 javac -version

qwe$ java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

1.2 安装Jenkins

1)添加Jenkins源

$ wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -

2)为Jenkins创造源列表

$ sh -c 'echo deb http://pkg.jenkins-ci.org/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'

3)再次更新,并开始Jenkins的安装过程

$ apt update
$ apt install jenkins

4)启动jenkins服务

#/etc/init.d/jenkins start

停止 jenkins服务

#/etc/init.d/jenkins stop

查看jenkins是否启动

 #ps -ef | grep jenkins

root@t1-OptiPlex-3010:/var/cache/jenkins/war/WEB-INF# ps -ef | grep jenkins
jenkins  29454     1  0 20:17 ?        00:00:00 /lib/systemd/systemd --user
jenkins  29455 29454  0 20:17 ?        00:00:00 (sd-pam)
jenkins  29461     1  0 20:17 ?        00:00:00 /usr/bin/daemon --name=jenkins --inherit --env=JENKINS_HOME=/var/lib/jenkins --output=/var/lib/jenkins/log/jenkins/jenkins.log --pidfile=/var/run/jenkins/jenkins.pid -- /usr/bin/java -Djava.awt.headless=true -jar /usr/share/jenkins/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=8088
jenkins  29462 29461 19 20:17 ?        00:02:59 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/jenkins/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=8088
root     32223  5261  0 20:32 pts/3    00:00:00 grep --color=auto jenkins

其他启动方式:

$ systemctl start jenkins

或者

$ net start jenkins

$ net stop jenkins

修改jenkins的配置以后,这种方式可能启动不了。

5)jenkins相关配置和安装目录

jenkins的安装配置相关目录:

配置文件:/etc/default/jenkins   (可能不同的环境下此目录会有一些变化)

安装目录:/var/lib/jenkins

日志文件:/var/log/jenkins

启动后默认会创建一个管理员账号admin,以及为此账号产生一个密码,我的是:9**a947****f97a971d***4e**f 
密码会写入到文件/var/lib/jenkins/secrets/initialAdminPassword中。

jenkins安装以后,默认的端口是8000,如果已经存在服务占据此端口,

jenkins就会启动出错。这种时候需要修改端口。

Jenkins默认使用8080端口,要修改此端口,编辑/etc/default/jenkins配置文件,将以下内容:

HTTP_PORT=8080  --》 8088

6)为Jenkins安装并配置Apache HTTP Server
Jenkins直接放公网不合适,通常会使用Nginx或Apache2作Jenkins的反向代理

故下面将为Jenkins安装并配置Apache HTTP Server。注意,如果不需要反向代理,可省略此步骤。

$ apt install apache2

在Apache中创建一个新的虚拟主机指令。比如,在虚拟主机上创建一个新的、名为“jenkins.conf”的Apache配置文件:
a2enmod proxy
a2enmod proxy_http
a2ensite jenkins
touch /etc/apache2/sites-available/jenkins.conf
ln -s /etc/apache2/sites-available/jenkins.conf /etc/apache2/sites-enabled/jenkins.conf
nano /etc/apache2/sites-available/jenkins.conf

7)访问jenkins服务。

Jenkins默认使用HTTP协议和主机的8088端口。浏览器访问http://[ip:port]/,可以看到如下界面。

è¿éåå¾çæè¿°

设置admin账号的初始密码。输入初始密码,进入主界面。 

è¿éåå¾çæè¿°

前一个选项安装所以建议的插件。一般选择此项。

 

1.3 安装插件

Jenkens默认安装建议的插件。其他还有一些常用的插件,也需要安装。

例如:

build-name-setter插件:

description setter插件:构建的描述信息。

参考《Jenkins插件大全》

https://blog.csdn.net/pansaky/article/details/80755739

 

1.4 更换主目录

jenkins默认安装主目录/var/lib/jenkins,、var放置系统执行过程中经常变化的文件,如随时更改的日志文件/var/log

          /var/log/message:所有的登录文件存放目录
          /var/spool/mail:邮件存放的目录
          /var/run:程序或服务启动后,其PID存放在该目录下。

因此一般需要更换主目录,建议单独分区,设置较大的磁盘空间。

采用软连接的方式,将实际存储映射到大空间磁盘。

#mv /var/lib/jenkins /home/xxx/jenkins

#ln -s /home/xxx/jenkins /var/lib/jenkins

这个通过软链接替换了实际主空间目录,而不用修改配置文件。

 

1.5 常见问题分析:

问题1:编译出现gradle错误

[Gradle] - Launching build.
[accmobile-git] $ gradle clean assemblecdelchinaacc --stacktrace --debug
FATAL: command execution failed
java.io.IOException: Cannot run program "gradle" (in directory "/var/lib/jenkins/workspace/accmobile-git"): error=2, No such file or directory
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
	at hudson.Proc$LocalProc.<init>(Proc.java:249)
	at hudson.Proc$LocalProc.<init>(Proc.java:218)
	at hudson.Launcher$LocalLauncher.launch(Launcher.java:935)
	at hudson.Launcher$ProcStarter.start(Launcher.java:454)
	at hudson.Launcher$ProcStarter.join(Launcher.java:465)
	at hudson.plugins.gradle.Gradle.performTask(Gradle.java:333)
	at hudson.plugins.gradle.Gradle.perform(Gradle.java:225)
	at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
	at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:744)
	at hudson.model.Build$BuildExecution.build(Build.java:206)
	at hudson.model.Build$BuildExecution.doRun(Build.java:163)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:504)
	at hudson.model.Run.execute(Run.java:1819)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
	at hudson.model.ResourceController.execute(ResourceController.java:97)
	at hudson.model.Executor.run(Executor.java:429)
Caused by: java.io.IOException: error=2, No such file or directory
	at java.lang.UNIXProcess.forkAndExec(Native Method)
	at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
	at java.lang.ProcessImpl.start(ProcessImpl.java:134)
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
	... 16 more
Build step 'Invoke Gradle script' changed build result to FAILURE
Build step 'Invoke Gradle script' marked build as failure
Set build name.

原因:未安装gradle工具。

解决方法:

1)http://www.gradle.org/downloads 下载gradle。选择对应版本下载

2)将压缩包解压到对应目录

$ sudo unzip gradle-2.6-all.zip -d /opt/gradle/

3)增加gradle配置

$ sudo vim /etc/profile

文件末尾添加:

export GRADLE_HOME=/opt/gradle/gradle-2.6
export PATH=$GRADLE_HOME/bin:$PATH

4)增加一个gradle执行程序软连接

$ ln -s /opt/gradle/gradle-2.6/bin/gradle /usr/bin/gradle

5)重启机器

$ sudo reboot

$ gradle -v

如果能够看到对应gradle版本。则说明gradle安装成功。

问题2:git 同步代码出错。

Fetching upstream changes from git@gitlab.cdel.local:cdel/accmobile.git
 > git --version # timeout=10
using GIT_ASKPASS to set credentials 
 > git fetch --tags --progress git@gitlab.cdel.local:cdel/accmobile.git +refs/heads/*:refs/remotes/origin/*
ERROR: Error fetching remote repo 'origin'
hudson.plugins.git.GitException: Failed to fetch from git@gitlab.cdel.local:cdel/accmobile.git
	at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:888)
	at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1155)
	at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1186)
	at hudson.scm.SCM.checkout(SCM.java:504)
	at hudson.model.AbstractProject.checkout(AbstractProject.java:1208)
	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574)
	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499)
	at hudson.model.Run.execute(Run.java:1819)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
	at hudson.model.ResourceController.execute(ResourceController.java:97)
	at hudson.model.Executor.run(Executor.java:429)
Caused by: hudson.plugins.git.GitException: Command "git fetch --tags --progress git@gitlab.cdel.local:cdel/accmobile.git +refs/heads/*:refs/remotes/origin/*" returned status code 128:
stdout: 
stderr: Host key verification failed.
fatal: Could not read from remote repository.

原因:git同步SSHKEY不正确。jenkins代码通过的时候,会使用主目录下的.ssh下的公钥和私钥。

如果此目录下没有对应的秘钥信息,就会错误。

解决方法:将用户目录下生成的ssh秘钥复制到主目录下。

如果没有创建过,可以新创建。如果创建在home目录下,

注意拷贝或者链接到jenkins主目录下。

Linux

  1. 在终端中输入ssh-keygen -t rsa -C "email@email.com"
  2. 复制公钥,在终端中输入以下命令,然后复制

#cat ~/.ssh/id_rsa.pub

     3.设置Git全局变量

#git config --global user.name "email@email.com" 

#git config --global user.email "email@email.com"

     4.GitLab(或者Gerrit)添加设备访问公钥。

GitLab(或者Gerrit),添加公钥 Settings --> SSH Keys

公钥内容即~/.ssh/id_rsa.pub

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值