pytest -gitee配置和Jenkins拉通
CICD架构图
gitee配置
1、需要自己申请账号
2、创建仓库
1、输入仓库名字,选择仓库类型,点击创建
2、根据提示进行仓库设置
3、在本地路径新建一个文件夹test_combat,然后右键git bash here
然后通过git init初始化一个本地仓库
4、创建一个文件,来做一个简单的测试
echo 'hello git' >>testcase.txt
### 5、如果不知道下一步要做什么操作,先使用git status命令
$ git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
testcase.txt
nothing added to commit but untracked files present (use "git add" to track)
gavin@LAPTOP-GPDG2OBO MINGW64 /d/git_demo/test_cmbot (master)
### 6、看到提示,需要做add操作,可以通过git add . 添加当前目录的文件到暂存区
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: testcase.txt
gavin@LAPTOP-GPDG2OBO MINGW64 /d/git_demo/test_cmbot (master)
### 7、提交到本地仓库
$ git commit -m 'new testcase'
[master (root-commit) ded8cb4] new testcase
1 file changed, 1 insertion(+)
create mode 100644 testcase.txt
### 8、使用git push提交到远程仓库
$ git push
fatal: No configured push destination.
Either specify the URL from the command-line or configure a remote repository using
git remote add <name> <url>
and then push using the remote name
git push <name>
### 9、提示没有远程仓库,因为我还没有关联远程仓库
关联远程仓库,使用仓库里面的提示命令即可
git remote add origin git@gitee.com:gavinxiexingfu/test_combat.git
### 10、查看远程仓库
$ git remote -v
origin git@gitee.com:gavinxiexingfu/test_combat.git (fetch)
origin git@gitee.com:gavinxiexingfu/test_combat.git (push)
### 11、推送本地仓库文件到远程仓库
$ git push -u origin master
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 226 bytes | 45.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.0]
To gitee.com:gavinxiexingfu/test_combat.git
* [new branch] master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
刷新远程仓库页面,看到刚才推送成功的文件
Jenkins新建任务
新建试图,对任务进行管理
视图创建成功,进行任务过滤
输入正则表达式,点击保存
创建一个自由风格的项目:输入任务名称,选择自由疯狂,选择加入试图,点击ok
限制项目运行的节点,选择自己的标签
配置源码,复制git仓库ssh的地址,会提示无法连接仓库
需要用到私钥了
$ ls ~/.ssh
id_rsa id_rsa.pub known_hosts
~代表用户目录
输入用户名,id,描述,私钥,点击添加
点击刚才添加的凭证
点击保存
配置触发器,点击generic webhook trigger,配置token
复制URL,放到webhooks的钩子设置地方,地址要改成自己的
http://JENKINS_URL/generic-webhook-trigger/invoke
webhooks配置 网络钩子
远程仓库点击管理,选择webhooks
点击添加webhooks
gitee和Jenkins连通
源码管理,直接查看问题记录
方式一:构建触发器插件:Generic Webhook Trigger
选择触发插件,把地址复制到gitee的webhook中, http://JENKINS_URL,这段更改成内网穿透后的公网地址,输入token,点击保存
到gitee中设置webhook
方式二:构建触发器插件:Gitee webhook 触发构建
选择Gitee webhook 触发构建,把地址复制到gitee中,http://192.168.222.128:8080地址记得改成自己的公有地址,选择触发条件,点击保存
到gitee中设置webhook
问题记录
- 1、Error 403 anonymous is missing the Job/Build permission
HTTP ERROR 403 anonymous is missing the Job/Build permission
URI: /gitee-project/test_free_style_demo1
STATUS: 403
MESSAGE: anonymous is missing the Job/Build permission
SERVLET: Stapler
-
原因:Jenkins不允许没有登录的用户访问
-
解决;Jenkins授权给任何用户
https://www.cnblogs.com/Dy1an/p/11202544.html -
2、git webhook报域名或者IP不存在,请输入包含正确的域名或公有IP的http地址
- 原因:gitee无法访问内网的Jenkins服务
- 解决:内网穿透
https://www.cnblogs.com/xiehuangzhijia/p/15059074.html
-
3、Jenkins源码管理报错;
无法连接仓库:Command "git ls-remote -h -- git@gitee.com:gavinxiexingfu/test_combat.git HEAD" returned status code 128:
stdout:
stderr: git@gitee.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
-
原因:未知
-
解决:把ssh地址更换成https地址
-
4 error: failed to push some refs to 'git@gitee.com:******.git'
- 原因:推送代码,远程仓库被使用了
- 解决:git pull --rebase origin master
接着输入git push -u origin master
参考文档:
https://gitee.com/help/articles/4193#article-header0
- 5.生成allure报告失败
java.lang.NullPointerException
at ru.yandex.qatools.allure.jenkins.AllureReportPublisherDescriptor.getCommandlineInstallation(AllureReportPublisherDescriptor.java:112)
at ru.yandex.qatools.allure.jenkins.AllureReportPublisher.getCommandline(AllureReportPublisher.java:346)
at ru.yandex.qatools.allure.jenkins.AllureReportPublisher.generateReport(AllureReportPublisher.java:303)
at ru.yandex.qatools.allure.jenkins.AllureReportPublisher.perform(AllureReportPublisher.java:231)
at jenkins.tasks.SimpleBuildStep.perform(SimpleBuildStep.java:123)
at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:99)
at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:69)
at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Finished: FAILURE
原因:发现全局工具里面没有安装allure命令
解决:安装allure命令,自动安装
- 6 Jenkins获取远程仓库失败
无法连接仓库:Error performing git command: D:softGitcmdgit.exe ls-remote -h http://192.168.222.128:9001/root/gitlab_combat.git HEAD
原因;全局工具中我配置了本地的git安装路径
我的master节点是在Linux里面使用docker安装的
而子节点我使用的是Windows,当我把Windows的git安装命令放到路径下面,直接报错了,提示路径不存在,当我使用自动安装方式进行安装,安装成功还是获取仓库失败,百度了大半天,大部分文章都是直接把Linux里面的git路径放到路径中
我没有在Linux里面安装git,同时我是需要在Windows节点下使用Jenkins,实在没有招了,就来瞎搞,把git安装路径清空,保持默认,然后回到项目拉取仓库的地方,发现没有标红,而且构建成功了
删除已有的git安装
流水线中终于成功了