云服务器中安装docker+jenkins部署接口自动化测试(java)
在宿主机中的安装jdk与环境变量配置在宿主机中安装git与环境变量配置在宿主机安装maven与环境变量配置docker安装jenkins安装docker run -d -u root --restart=always --name jenkins-server -v /usr/local/allure:/usr/local/allure -v /usr/local/git:/usr/local/g
在安装和配置前需要对Linux命令有一定的了解。
在Linux中安装jdk与环境变量配置
官网下载需要注册一个账号
下载jdk地址https://www.oracle.com/java/technologies/downloads/
jdk8地址https://www.oracle.com/java/technologies/downloads/#java8
我这里下载的是:jdk-8u321-linux-x64.tar.gz
在/usr/local下新建目录java,同时把后面要安装的git、maven、allure目录都创建了,如果已存在目录则不需要创建(ls或ll查看)
# 进入/usr/local目录
cd /usr/local
# 创建目录java文件夹
mkdir java
# 同时把后面要安装的git、maven、allure目录都创建了
mkdir git
mkdir maven
mkdir allure
将下载好的jdk包上传到java目录下,在/usr/local目录下执行以下命令解压jdk-8u321-linux-x64.tar.gz
# 解压命令
tar zxvf jdk-8u321-linux-x64.tar.gz
查看解压后的目录
配置环境变量
vim /etc/profile
输入完毕并回车,在文件尾部添加如下信息:
export JAVA_HOME=/usr/local/java/jdk1.8.0_321
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
注意:第一行的JAVA_HOME=/usr/local/jdk/jdk1.8.0_321 此处等号右边的是自己的jdk实际解压目录。如果不是该目录则需要改成自己的实际目录,其他不变。
编辑完之后,保存并退出,然后输入以下指令,刷新环境配置使其生效:
source /etc/profile
查看jdk是否安装成功,输入指令java -version,回车出现对应的版本,则安装与配置完成
此时可以把jdk-8u321-linux-x64.tar.gz压缩包删除以节省空间
在Linux中安装git与环境变量配置
git编译好的包本人没有,只能从github下载源码编译安装
登录github查看自己想要安装的版本https://github.com/git/git/tags
源码编译安装Git,我选择最新版的v2.35.3,安装步骤如下:
进入Linux服务器,执行下载,命令为:
wget https://github.com/git/git/archive/v2.35.3.tar.gz
#在gitee上的地址https://gitee.com/mirrors/git/releases,毕竟github有时连不上可以手工下载
解压压缩包命令
tar zxvf v2.35.3.tar.gz
安装编译源码所需依赖,命令如下,出现提示输入y,耐心等待安装即可。
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
安装依赖时,yum自动可能安装了Git,需要卸载旧版本Git,命令为: yum remove git 出现提示输入y即可,没有自动安装执行命令也不影响;我的是没有自动安装。
#cd 进入解压后的git-2.35.3目录
cd git-2.35.3
执行编译命令如下:
make prefix=/usr/local/git all
安装Git至/usr/local/git路径,命令如下:
make prefix=/usr/local/git install
配置环境变量
vim /etc/profile
在底部加上Git相关配置信息:
export PATH=$PATH:/usr/local/git/bin
编辑完之后,保存并退出,然后输入以下指令,刷新环境配置使其生效:
source /etc/profile
查看git是否安装成功,输入指令git–version,回车出现对应的版本,则安装与配置完成
此时可以将v2.35.3.tar.gz下载到本地保留,下次就不用在去github下载编译啦,毕竟github并不是每次都能愉快的连上。
在Linux中安装maven与环境变量配置
下载maven包地址https://maven.apache.org/download.cgi
前面已经建好maven目录,下载后直接直接上传到maven目录下解压,在配置环境变量即可。
解压命令如下:
tar zxvf apache-maven-3.8.5-bin.tar.gz
cd进入apache-maven-3.8.5目录下,创建maven仓库目录,执行以下命令
mkdir localRepository
进入cd conf目录,设置阿里镜像仓库,一定要配置一下,国内的下载jar快很多。
cd conf # 进入conf目录
vim settings.xml # settings.xml文件
配置仓库目录
#/usr/local/maven/apache-maven-3.8.5/localRepository 为仓库的绝对路径
<localRepository>/usr/local/maven/apache-maven-3.8.5/localRepository</localRepository>
配置阿里镜像仓库
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
配置maven环境变量
# 编辑/etc/profile 文件
vim /etc/profile
在文件最后面加上以下内容
export MAVEN_HOME=/usr/local/maven/apache-maven-3.8.5
export PATH=$PATH:$MAVEN_HOME/bin
重新加载一下,source /etc/profile 使新增配置生效
source /etc/profile
查看配置是否成功,出现对应的版本说明安装与配置已完成。
mvn -v
在Linux中安装allure与配置环境变量
下载地址https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/
选择自己想要的版本下载
下载好以后上传到/usr/lacal/allure目录下解压解压命令如下:
tar zxvf allure-commandline-2.13.0.tgz
配置allure环境变量
# 编辑/etc/profile 文件
vim /etc/profile
在文件最后面加上以下内容
export ALLURE_HOME=/usr/local/allure/allure-2.13.0
export PATH=$PATH:$ALLURE_HOME/bin
重新加载一下,source /etc/profile 使新增配置生效
source /etc/profile
查看配置是否成功,出现对应的版本说明安装与配置已完成。
allure --version
Linux 上安装docker与配置
安装
安装命令如下:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
各种 Linux 系统的手动安装步骤见官方文档
安装好 docker 服务后还应该把 docker 服务设置为开机启动命令如下:
# 查看是否设置开机启动
systemctl list-unit-files | grep docker.service.*enabled
# 设置开机启动
systemctl enable docker.service
# 关闭开机启动
systemctl disable docker.service
修改镜像加速
修改/etc/docker/daemon.json 文件,如果没有先建一个即可。
sudo vim /etc/docker/daemon.json
修改配置文件内如下:
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
然后重启服务
sudo systemctl daemon-reload
sudo systemctl restart docker
jenkins安装
安装命令(需要将前面安装的jdk、git、maven、allure映射到容器中):
#先下载到仓库再安装也可以直接安装
#docker pull jenkins/jenkins:alpine
#docker run -d -u root --restart=always --name jenkins-server -v /var/jenkins_home:/var/jenkins_home -v $(which docker):/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -p 8181:8080 -p 50000:50000 jenkins/jenkins:alpine
#docker run -d -u root --restart=always --name jenkins-server -v /usr/bin/virtualenv:/usr/bin/virtualenv -v /usr/bin/python:/usr/bin/python -v /usr/bin/pip:/usr/bin/pip -v /usr/local/python:/usr/local/python -v /usr/local/allure:/usr/local/allure -v /usr/local/git:/usr/local/git -v /usr/local/maven:/usr/local/maven -v /usr/local/java:/usr/local/java -v /var/jenkins_home:/var/jenkins_home -v $(which docker):/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /etc/localtime:/etc/localtime -p 8181:8080 -p 50000:50000 jenkins/jenkins:alpine
docker run -d -u root --restart=always --name jenkins-server -v /usr/local/allure:/usr/local/allure -v /usr/local/git:/usr/local/git -v /usr/local/maven:/usr/local/maven -v /usr/local/java:/usr/local/java -v /var/jenkins_home:/var/jenkins_home -v $(which docker):/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /etc/localtime:/etc/localtime -p 8181:8080 -p 50000:50000 jenkins/jenkins:alpine
访问 jenkins
容器创建成功后,在宿主机上访问 http://主机IP:8181 即可访问容器中的 jenkins。
如果是在云服务器则需要添加安全组(开发访问端口)。
这如果没有映射到宿主机需要进入jenkins容器查看,如果做了映射直接在宿主机查看即可。
安装插件,选择推荐即可。
# 在宿主机
cat /var/jenkins_home/secrets/initialAdminPassword
# 进入容器的方式查看
docker exec -it jenkins-server /bin/bash #jenkins-server为容器名称或ID
cat /var/jenkins_home/secrets/initialAdminPassword
选择推荐的即可
等待安装即可
创建一个管理员或点击右下角使用admin账户继续。
保存并完成
至此jenkins已安装完成,可以开始登录了
首次登录使用admin建议先修改admin管理员密码,下次登录就可以直接使用修改后的密码登录而不需要再查看initialAdminPassword文件;如果忘记改也没关系去查initialAdminPassword文件就可以啦!!!
在这里设置你的密码
jenkins中的配置
如果选择的是中文版的jenkins,在配置前可以重启一下,就都是中文了,不重启有部分是英文。
插件安装
我们需要一些插件支持
Git plugin(管理项目源代码)
Allure Jenkins Plugin(Jenkins集成Allure报告)
Email Extension Plugin(邮件通知)
系统管理-插件管理里进行安装即可(可以在已安装中查看是否已经安装,已安装的可以不用再安装);这里只安装我需要用到的插件,如果需要别的插件,自行安装;所有插件安装好后需要重启jenkins。
选择可选插件,搜索需要安装的插件进行安装,可以先在已安装中搜索查看是否已经安装,有一些默认已经安装了,已安装的插件不用再安装。
例如:git有代替品,不需要安装
Allure Jenkins Plugin没有安装,需要安装。
搜索出来有可能会有多个,选择自己需要的进行安装。
静静的等待安装完成。
Email Extension Plugin默认已经安装就不需要再安装了。
至此我们需要的插件已经安装完成。
jenkins工具配置JDK、Maven、Allure
Jenkins在运行中需要使用各种工具,包括JDK、Maven、Allure等。
前面安装的JDK、maven、Allure这里就要用到了,默认时勾选了自动安装,需要去掉勾选。
如果出现黄色提示的请查看jenkins安装时做的映射是否正确;因为jenkins容器安装时默认有jdk和git,没有安装或配置不对,有时也能正常构建和运行。
jdk的配置
git的配置
maven的配置
allure的配置
配置邮件通知
进入Manage Jenkins -> Configure System
配置系统管理员邮箱地址:
配置Extended E-mail Notification:
如果使用的不是qq邮箱,自行查阅smtp server与smtp port,比较新的jinkens这里需要点击高级-添加,配置管理员的名称和邮箱秘钥,这不是管理员的登录密码,
qq开启smtp服务就可以拿到秘钥,别的邮箱自行百度。
可以选择通过发送测试邮件测试配置,测试邮件是否能发成功。
Jenkins配置Git密钥
Jenkins在执行时需要从Git服务器拉取代码,所以我们需要在Jenkins端配置Git的密钥(私钥在id_rsa文件中),这样就不需要使用用户名密码的方式访问Git了。
进入到Jenkins,选择Manage Jenkins->Manage Credetials -> Jenkins -> 全局凭据 -> Add
Credentials,添加全局凭证:
配置任务终于完成,下面开始新建任务了
任务配置
默认自动跳转到下面的页面,如果没有跳转页没关系,可以从我的视图里点击进入后配置。
从我的视图页面点击,还有别的方式这里就不介绍了。
这里先验证一下能发从git构建项目,我的视图-选择对应的项目-立即构建
可以点进去-控制台输出,出现Finished: SUCCESS说明已经构建成功
配置项目运行
配置好再点击立即构建,这里会下载pom.xml中的依赖需要有耐心,如果没有在settings.xml中配置镜像仓库,下载可能会失败
配置生成allure测试报告
配置完再构建一次就有测试报告生成了
配置每次生成测试报告后发送邮件
设置每次都发送邮件
再构建时就能收到测试报告的邮件啦
收到的邮件,点击邮件中的链接可以查看报告和日志(需要有jenkins账号)
配置定时执行构建测试
构建触发器
构建触发器是Jenkins启动一个任务构建的条件,当条件满足时,任务构建执行。
build periodically
隔一段时间构建一次,不管版本库代码是否发生变化。
poll scm
隔一段时间比较一次源代码如果发生变更,那么就构建,否则不进行构建。
时间表达式
时间表达式是由五部分组成,每一部分中间由空格隔开,如下:
MINUTE HOUR DOM MONTH DOW
MINUTE: 分钟(0–59)
HOUR: 小时(0–23)
DOM: 每月的第几天(1–31)
MONTH: 月份(1–12)
DOW: 周几(0–7, 0和7都代表周天)
每一部分还可以设置为以下的值:
*:指所有的值
M-N:指一个范围区间内的值
M-N/X 或 */X:指(在一个范围内/所有)满足间隔X的值
A,B,…,Z:列举了这一部分所有的值
示例:
- 每天的晚上八点钟:
0 20 * * * - 每月的第10号晚上零点:
0 0 10 * * - 每天晚上的八点10分到15分
10-15 20 * * * - 每间隔10分钟
*/10 * * * * - 每间隔1小时
- */1 * * *
- 前三十分钟内每间隔5分钟
0-30/5 * * * * - 每天的20,21,23点执行
0 20,21,23 * * *
问题记录
-
没有设置jdk、maven、git、allure映射
git全局工具配置报错
没有映射git构建报错如下:ERROR: Workspace has a .git repository, but it appears to be corrupt. hudson.plugins.git.GitException: Error performing git command: /usr/local/git/bin/git rev-parse --resolve-git-dir /var/jenkins_home/workspace/autotest/.git at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2679) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2601) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2597) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1968) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1980) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.hasGitRepo(CliGitAPIImpl.java:395) at hudson.plugins.git.GitAPI.hasGitRepo(GitAPI.java:241) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1201) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1294) at hudson.scm.SCM.checkout(SCM.java:540) at hudson.model.AbstractProject.checkout(AbstractProject.java:1217) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:647) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:85) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:519) at hudson.model.Run.execute(Run.java:1897) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:44) at hudson.model.ResourceController.execute(ResourceController.java:101) at hudson.model.Executor.run(Executor.java:442)
maven全局工具配置报错
没有映射maven构建报错如下:FATAL: Couldn’t find any executable in /usr/local/maven/apache-maven-3.8.5
jdk全局工具配置报错
没有映射jdk构建报错如下:The JAVA_HOME environment variable is not defined correctly, this environment variable is needed to run this program.
allure全局工具配置报错
没有映射allure构建报错如下:ERROR: Step ‘Allure Report’ aborted due to exception: java.io.IOException: Can't find allure commandline <null> at ru.yandex.qatools.allure.jenkins.tools.AllureCommandlineInstallation$GetMajorVersion.call(AllureCommandlineInstallation.java:74) at ru.yandex.qatools.allure.jenkins.tools.AllureCommandlineInstallation$GetMajorVersion.call(AllureCommandlineInstallation.java:65) at hudson.remoting.LocalChannel.call(LocalChannel.java:47) at ru.yandex.qatools.allure.jenkins.tools.AllureCommandlineInstallation.getMajorVersion(AllureCommandlineInstallation.java:63) at ru.yandex.qatools.allure.jenkins.ReportBuilder.build(ReportBuilder.java:52) at ru.yandex.qatools.allure.jenkins.AllureReportPublisher.generateReport(AllureReportPublisher.java:312) at ru.yandex.qatools.allure.jenkins.AllureReportPublisher.perform(AllureReportPublisher.java:231) at jenkins.tasks.SimpleBuildStep.perform(SimpleBuildStep.java:123) at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:79) at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20) at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:816) at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:765) at hudson.model.Build$BuildExecution.post2(Build.java:179) at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:709) at hudson.model.Run.execute(Run.java:1922) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:44) at hudson.model.ResourceController.execute(ResourceController.java:101) at hudson.model.Executor.run(Executor.java:442)
-
maven中settings.xml注释错误,–与>中带空格会报下面的错:
[ERROR] Error executing Maven. [ERROR] 1 problem was encountered while building the effective settings [FATAL] Non-parseable settings /usr/local/maven/apache-maven-3.8.5/conf/settings.xml: in comment after two dashes (--) next character must be > not (position: START_TAG seen ...</blocked>\r\n </mirror>\r\n -- ... @168:9) @ /usr/local/maven/apache-maven-3.8.5/conf/settings.xml, line 168, column 9
-
jenkins自带jdk和git处理
有的新版本jenkins自带jdk和git,导致映射到容器中的不生效,目前没有什么好的办法解决,如果存在自带的就用自带的;因为我想卸载容器自带的,容器中缺少很多命令无法卸载;如果哪位大佬有好的方法提供万分感谢。 -
maven中没有设置镜像仓库
待补充。。。
遇到其他问题欢迎留言。。。
更多推荐
所有评论(0)