Jenkins项目部署,Jenkins+GitHub/GitLab

环境准备:一台nginx,一台gitlab,一个能使用的github账号

样例:github项目地址 git@github.com:13331033844/test.git

nginx:10.1.1.28

1.下载java环境

官网指路:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

版本:

Linux x64185.16 MB  jdk-8u231-linux-x64.tar.gz

具体下载地址:https://download.oracle.com/otn/java/jdk/8u231-b11/5b13a193868b4bf28bcb45c792fce896/jdk-8u231-linux-x64.tar.gz?AuthParam=1573475025_69f85eeb325c1a8e2037d76d4964650c

注:这个下载地址不保证直接能用,常规节奏是进入Oracle官网进行点击下载(还要求注册Oracle会员),然后用ftp上传服务器。

如果好使,可以直接在shell里wget它。本文是进行了Oracle会员注册后,再shell中就可以下载了。不知道这个注册是不是影响了下载能力。

2.安装Java环境

以本文为例,我们按照管理将文件jdk-8u231-linux-x64.tar.gz下载到/software文件夹中。

# 本文以jdk-8u192版本为例
 
# cd /software
# tar xvf jdk-8u192-linux-x64.tar.gz
# mkdir /usr/local/java
# mv /software/jdk1.8.0_192 /usr/local/java/
# 建立一个/usr/local/的java专用文件夹,因为java环境版本繁杂,为以后可能进行的版本拓展,将所有java文件放在专用文件夹下,并以版本区分
 
# 将java加入环境变量。
# echo "export PATH=\$PATH:/usr/local/java/jdk1.8.0_192/bin" >> /etc/profile
# source /etc/profile

3.下载与安装

官方网站:https://pkg.jenkins.io/redhat-stable/

具体网址:https://prodjenkinsreleases.blob.core.windows.net/redhat-stable/jenkins-2.190.3-1.1.noarch.rpm

# cd /software
# wget https://prodjenkinsreleases.blob.core.windows.net/redhat-stable/jenkins-2.190.3-1.1.noarch.rpm
# yum -y install jenkins-2.190.3-1.1.noarch.rpm


注:jenkins默认的java安装路径是/usr/bin/java。
注:jenkins负责启动的配置文件路径是/etc/init.d/jenkins
# vim /etc/init.d/jenkins

/usr/bin/java
修改成
/usr/local/java/jdk版本号/bin/java
/usr/local/java/jdk1.8.0_192/bin/java

# systemctl start jenkins
# chkconfig jenkins on
# ss -nltp
java占用8080端口,视为开启成功

4.jenkins初探

开启一个浏览器,访问jenkins服务器。

URL:IP:8080

例如:http://10.1.1.10:8080/

提示我:Please wait while Jenkins is getting ready to work ...

等一会后。如果一直不变则需要你进入jenkins的工作目录,打开

# 默认jenkins安装在/var/lib下
# vi /var/lib/jenkins/hudson.model.UpdateCenter.xml

http://updates.jenkins-ci.org/update-center.json
改成
http://mirror.xmission.com/jenkins/updates/update-center.json
或
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/stable/update-center.json

# systemctl restart jenkins

等一小会,页面会变成

解锁 Jenkins

# cat /var/lib/jenkins/secrets/initialAdminPassword
8977544a04844a0e991f658038734cbf

这个就是管理员密码




如果服务员老头眼里冒火,提示报错的内容如下
hudson.security.AccessDeniedException2: anonymous is missing the Overall/Administer permission
则

修改/var/lib/jenkins/config.xml文件
删除authorizationStrategy、securityRealm节点 

进入网页配置环节 

自定义Jenkins

1.网络情况好,尤其访问外网方便的人。
安装推荐插件
2.网络状况差,选择右一
然后直接X掉右上角。点击开始使用jenkins。


http://IP:8080/user/admin/configure
可以根据需求修改默认admin用户的密码。
也可创建新管理员账号,但admin则失效。

若遗忘密码
# cp  /var/lib/jenkins/config.xml /备份目录/config.xml.bak
先备份一下

# vim /var/lib/jenkins/config.xml
打开此文件,然后把下面的一段注释(使用<!--  -->来注释)或删除

<useSecurity>true</useSecurity>
   <authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy">
       <denyAnonymousReadAccess>true</denyAnonymousReadAccess>
   </authorizationStrategy>
   <securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
       <disableSignup>true</disableSignup>
       <enableCaptcha>false</enableCaptcha>
   </securityRealm>

# systemctl stop jenkins
# systemctl start jenkins
重启服务后,web访问就不需要密码验证了

5.jenkins+github+nginx

第一步:github免密。

先操作jenkins这台机器,让它和github账号进行免密ssh关联。
本文以root默认为例,自定义则自主修改。
# ssh-keygen
然后回车三连
# cat /root/.ssh/id_rsa.pub

把公钥加入github。(这段略)

测试下。
# mkdir /test
# cd /test   

设置资料
# git config --global user.name "aaa"
# git config --global user.email "aaa@q.com"
# git config --global push.default simple

下载测试,这段可以自行测试
# git clone git@github.com:13331033844/test.git

# cd test
# echo 12345 > index.html
# git add index.html
# git commit -m '12345'
# git push

正常是需要输入账号密码,而这次则不需要,成功免密。

第二步:jenkins安装插件

cd /var/lib/jenkins/plugins/

jenkins安装插件极其坑爹,网络上相关的各种换源并不是对所有人都好使,作者当前网络状况良好,下片一秒好几M,然而,换了清华源之后仍然failure。
根据排查,得出结论。

项目部署需要的插件如下
1.GitHub Authentication
2.Publish Over SSH

算上所有的依赖之后,用wget下载

https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/jackson2-api/latest/jackson2-api.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/script-security/latest/script-security.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/command-launcher/latest/command-launcher.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/github-api/latest/github-api.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/structs/latest/structs.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/pipeline-stage-step/latest/pipeline-stage-step.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/credentials/latest/credentials.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/apache-httpcomponents-client-4-api/latest/apache-httpcomponents-client-4-api.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/ssh-credentials/latest/ssh-credentials.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/jsch/latest/jsch.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/git-client/latest/git-client.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/scm-api/latest/scm-api.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/display-url-api/latest/display-url-api.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/mailer/latest/mailer.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/git/latest/git.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/token-macro/latest/token-macro.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/plain-credentials/latest/plain-credentials.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/github/latest/github.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/github-branch-source/latest/github-branch-source.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/pipeline-github/latest/pipeline-github.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/junit/latest/junit.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/bouncycastle-api/latest/bouncycastle-api.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/matrix-project/latest/matrix-project.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/github-organization-folder/latest/github-organization-folder.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/ace-editor/latest/ace-editor.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/jquery-ui/latest/jquery-ui.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/branch-api/latest/branch-api.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/pipeline-multibranch-defaults/latest/pipeline-multibranch-defaults.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/trilead-api/latest/trilead-api.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/publish-over-ssh/latest/publish-over-ssh.hpi

# systemctl restart jenkins
重新访问
http://IP:8080/pluginManager/available
搜索下载他俩。
1.GitHub Authentication
2.Publish Over SSH
会自动匹配这些插件,直接安装。
出现报错failure不用理会,安完重启,再安一次,好像就没了。

安装成功后再重启一次
# systemctl restart jenkins

第三步:jenkins私钥配置

在 http://Jenkins_server_IP:8080/configure 里,向下拉。

如果Publish over SSH插件安装成功,则你能看到一个Publish over SSH表单。

将前面与github互连公钥的那份私钥复制进key输入框。

点击add按钮。又弹出4条输入框。这里填写nginx(或web服务)相关信息

Name    自定义一个服务器名字
Hostname    web服务器IP
Username    web服务器使用用户,默认root
Remote Directory    默认填'/'

第四步:上面填完之后要将jenkins服务器与nginx服务器做免密登陆

# ssh-copy-id -i nginx服务器IP
# ssh-copy-id -i 10.1.1.28

然后点击Test Configuration。
提示Success,视为成功
点击save

然后进入,点击凭证,jenkins,全局凭证,Add Credentials
http://Jenkins_server_IP:8080/credentials/store/system/domain/_/newCredentials

kind 选 SSH Username with private key
Username 填 root
Private Key 选中 Enter directly
弹出key,点击add
复制私钥进入。
其余不填

点击 确定/OK 

第五步:创建一个新任务。

回到主页
http://Jenkins_server_IP:8080/

点击 create new jobs
Enter an item name 输入一个名字
选择 Freestyle project
点击 确认/OK

Description 填写点描述
Source Code Management 选择git
    Repository URL	填写git的URL
    Credentials 选择root
    Branch Specifier (blank for 'any') 填写分支名,默认master不动
Build 选择Send files or execute commands over SSH
    Source files 一般填写 **/** 表示github中所有文件
    Remote directory 填写nginx项目目录,例如/usr/local/nginx/html

其余不填,点击save

6.执行测试

回到主页,点击右侧项目名,再点击左侧的Build Now

左下角会出现一个进度条,小球球变成红色是失败,蓝色是成功

点进去可以看到日志信息,分析错误。

总结:

整套流程是 jenkins 将本机root私钥发送给jenkins服务,两次

jenkins将本机公钥发送给github,nginx分别一次

当我们向github传送代码后,jenkins进行手动构建,可以将github的代码推送到nginx中,当绑定项目时填写多个nginx服务,则共同推送,实现代码的同时发布。

7.jenkins+gitlab+nginx

gitlab:10.1.1.11

第一步:照例先Jenkins下载组件

cd /var/lib/jenkins/plugins/

https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/trilead-api/latest/trilead-api.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/structs/latest/structs.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/pipeline-stage-step/latest/pipeline-stage-step.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/script-security/latest/script-security.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/command-launcher/latest/command-launcher.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/credentials/latest/credentials.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/apache-httpcomponents-client-4-api/latest/apache-httpcomponents-client-4-api.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/ssh-credentials/latest/ssh-credentials.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/jsch/latest/jsch.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/git-client/latest/git-client.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/scm-api/latest/scm-api.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/display-url-api/latest/display-url-api.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/mailer/latest/mailer.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/git/latest/git.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/gitlab-plugin/latest/gitlab-plugin.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/gitlab-oauth/latest/gitlab-oauth.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/gitlab-api/latest/gitlab-api.hpi
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/publish-over-ssh/latest/publish-over-ssh.hpi

下完重启
systemctl restart jenkins
然后进入浏览器
http://Jenkins_server_IP:8080/pluginManager/available
搜索
Gitlab Authentication 安装它就把上面插件一块安了。

第二步:

基本思路还是两次使用公钥,两次使用私钥。
1.jenkins机器向gitlab传递公钥。(未完成)
2.jenkins向nginx传送公钥。(上面已完成)
3.jenkins向jenkins网页端传送两次私钥。(上面已完成)

首先进行gitlab免密,过程略。

第三步:jenkins私钥配置

在 http://Jenkins_server_IP:8080/configure 里,向下拉。

如果Publish over SSH插件安装成功,则你能看到一个Publish over SSH表单。

将前面与github互连公钥的那份私钥复制进key输入框。

点击add按钮。又弹出4条输入框。这里填写nginx(或web服务)相关信息

Name    自定义一个服务器名字
Hostname    web服务器IP
Username    web服务器使用用户,默认root
Remote Directory    默认填'/'

第四步:将jenkins服务器与nginx服务器做免密登陆

# ssh-copy-id -i nginx服务器IP
# ssh-copy-id -i 10.1.1.28

然后点击Test Configuration。
提示Success,视为成功
点击save

然后进入,点击凭证,jenkins,全局凭证,Add Credentials
http://Jenkins_server_IP:8080/credentials/store/system/domain/_/newCredentials

kind 选 SSH Username with private key
Username 填 root
Private Key 选中 Enter directly
弹出key,点击add
复制私钥进入。
其余不填

点击 确定/OK 

第五步:创建一个新任务。

回到主页
http://Jenkins_server_IP:8080/

点击 create new jobs
Enter an item name 输入一个名字
选择 Freestyle project
点击 确认/OK

Description 填写点描述
Source Code Management 选择gitlab
    Repository URL	填写gitlab的URL
    Credentials 选择root
    Branch Specifier (blank for 'any') 填写分支名,默认master不动
Build 选择Send files or execute commands over SSH
    Source files 一般填写 **/** 表示gitlab中所有文件
    Remote directory 填写nginx项目目录,例如/usr/local/nginx/html

其余不填,点击save

第六步:build一下,没有报错就能成功了。 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是从0到1使用 Docker + Jenkins + Git + Pytest + Allure 搭建项目自动化框架的步骤: 1. 安装 Docker 和 Docker Compose 首先,需要在服务器上安装 Docker 和 Docker Compose。Docker是一个虚拟化平台,可以通过容器化技术快速部署应用程序。Docker Compose是一个工具,可以定义和运行多个 Docker 容器的应用。 2. 创建 Git 仓库 创建一个 Git 仓库来管理应用程序的源代码。可以使用 GitLabGitHub 或 Bitbucket 等 Git 托管服务。 3. 编写 Pytest 测试 编写 Pytest 测试来测试应用程序的功能。Pytest 是一个 Python 测试框架,可以用于测试 Python 应用程序的各个方面,包括单元测试、集成测试和端到端测试。 4. 安装 Jenkins 安装 Jenkins 作为持续集成和持续交付的工具。Jenkins 是一个开源 CI/CD 工具,可以自动化构建、测试和部署应用程序。 5. 配置 Jenkins 配置 Jenkins 以连接 Git 仓库和 Docker 守护进程。在 Jenkins 中,需要设置 Git 仓库的地址和凭据,以便 Jenkins 可以拉取代码并构建 Docker 镜像。 6. 构建 Docker 镜像 使用 Dockerfile 构建 Docker 镜像。Dockerfile 是一个包含构建 Docker 镜像所需指令的文本文件。 7. 运行 Pytest 测试 使用 Docker Compose 运行 Pytest 测试。Docker Compose 可以定义和运行多个 Docker 容器的应用。在这里,需要定义一个包含测试和应用程序容器的 Docker Compose 文件。 8. 生成 Allure 报告 使用 Allure 生成测试报告。Allure 是一个测试报告框架,可以生成漂亮且易于阅读的测试报告。 以上就是使用 Docker + Jenkins + Git + Pytest + Allure 搭建项目自动化框架的基本步骤。当然,具体实现还需要根据你的应用程序进行相应的调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值