此文需要有Jenkins pipeline job 的简单使用经验
在job里 勾上 print post content ,我们可以看到job 的触发方式的参数或者说内容有哪些:
这里边的ref 就是我们要的关键参数
下边看看怎么取出来
Jenkins 的pipeline job 里的触发方式选择 Generic Webhook Trigger ,勾上 展开后,在 Post content parameters 里可以填写参数。前两个框分别填上 ref 和 $ref, 如下图:
这样,就可以在pipeline脚本里使用这个 ref变量了。
此时,pipeline脚本内即可直接引用ref变量了。我们给我们要用的容器 安装个git,然后commit 一下当做跑test 的容器,就可以再脚本里用git 自动切换分支了。 具体看注释。
这个脚本之后写我们的test 的正常的逻辑,就ok了,可以根据分支自动切换了。
Tekton 的前身是 Knative 的子项目 build-pipeline,主要用来给 Kantive 的 build 模块增加 pipeline 功能。之后独立出来,Tekton 的目标是一个通用的 CI/CD 工具。这是一种常见的产品孵化机制。
目前,私有云市场占有率比较高的 CICD 工具对 Kubernetes 都有所支持,比如 Jenkins、GitLab CI。但是,这些工具只是将 Kubernetes 作为其扩展的一个方面,Kubernetes 作为新的基础设施,需要原生的 CICD 方案。
另一方面,Jenkins 的子项目 JenkinsX 也开始默认使用 Tekton 作为 CI 引擎。使用云原生一等公民 CRD + Controller 实现的 Tekton ,无疑有机会成为云原生的主流编排引擎。
Task 定义任务模板,包含一系列的 Step 步骤。每个 Step 表示一个动作,比如执行命令、推送镜像等。下面是一个示例:
TaskRun 是 Task 的执行实例。通过 taskRef 引用一个 Task,描述执行参数。下面是一个示例:
Pipeline 完整定义了一个流水线,可以包含一系列的 Task 。下面是一个示例:
PipelineRun 是 Pipeline 的执行实例。通过 pipelineRef 引用 Pipeline ,描述执行参数。下面是一个示例:
PipelineResource 定义 Task 的输入输出,包括 Git、Pull Request、Image、Cluster、Storage 等类型。下面是一个示例:
在 Task 中可以使用这些自定义变量,下面是一个使用 $(resourcesinputstest-clustername) 的示例:
支持用户自己实现 Controller ,读取 Yaml 中的配置,执行相关的动作。这里 Controller 监听的就是 Example 类型 CR 的变动。
上面是一个 Pipeline 的示意图。一个 Pipeline 通常由多个 Task 组成,这些 Task 串、并执行。而每个 Task 中,又有若干个 Step ,Step 是串行执行的。
同时 Pipeline 还定义了输入、输出,通常输入 Git 仓库,输出镜像。在运行时,Pipeline 对象作为一个模板,被 PipelineRun 引用,创建运行实例。如下图:
PipelineRunController 监听 PipelineRun 对象,将 PipelineRun 中所有的 Task 构建为一张有向无环图,创建 TaskRun 。而 TaskRunController 监听 TaskRun 对象的变化,根据 TaskRun 引用的 Task ,创建 Pod 运行 Step 。
一、使用yum进行安装
1、安装git:
2、查看yum源仓库Git信息:
3、安装依赖库:
4、查看git版本,如果默认安装的版本过低,移除默认安装的git
41、查看版本信息:
42、移除默认安装的git:
首先是检查了gitlab本身的状态,并没有发现pipeline的状态,未果之后,重启了gitlab的服务
然后重启了gitlab-runner的服务, 之后调用了 gitlab-runner --debug run 发现并没有真正出发gitlab runner
接着在gitlab上面修改了root的密码 使用root登录gitlab 修改了 ci/cd的配置
最后发现是由于原repo 本身触发了pipeline 但是本身并没有牵扯到gitlab-runner
在原repo 关闭pipeline 之后就解决了
人生浪费2个小时
一、git怎么创建本地版本仓库
第一,下载并安装git 目前windows版本的git有几种实现,但我们选择msysgit发行版,这是目前做得兼容性最好的。 使用默认配置安装Git。这个不用多说,一路Next就可以,如果对各种选项不熟悉,建议使用默认配置,没问题的。
第二,创建github账号 什么是Git和GitHub Git —The stupid content tracker, 傻瓜内容跟踪器,是一个由Linux内核开发者Linus为了更好地管理Linux内核开发而创立的分布式版本控制软件。 GitHub — 学生做版本控制最讨厌的就是找服务器,配置太麻烦了。GitHub这个网站为每个用户提供服务器托管其Git代码库,免费空间为300M。注册GitHub后你就会有03G的免费空间,不过只能创建公开项目。
二、windows下git怎么查看提交历史1查看Git日志:
命令:git log 默认不加参数,git日志会按照最新的日期从上往下显示 参数:-p 显示版本间的代码差异
-数字 显示部分的提交
-哈希值 显示指定的版本
2指定查找范围:
--since="5 hours" 显示最近5小时内的提交 --since="5 hours" -1 显示5小时内的最后一个提交 --before 用法和--since的用法差不多,显示的是在某个时间点之前的提交 版本1版本2 说明:版本1之后到版本2的所有提交,版本2可以用 HEAD(要注意大写)表示当前的最新版本 版本^ 回溯一个版本 注意: 在windows下要加双引号"版本^" ~N: 回溯N个版本
3查看指定版本之间的差异
git diff 版本号 说明:当前目录树和对应版本号的差异 git diff --stat 说明:统计对应改动的代码量
4撤销修改
41增补修改(只能用于针对最后一个提交)
git mit -C HEAD -a --amend
42反转提交
创建一个新的反向的提交来抵消原来的提交
git revert -n HEAD 反转当前版本库最新的提交并且缓存起来。但是不提交
43复位
git reset --soft 缓存因复位带来的差异但是不提交,也就是复位到上一个提交前的状态 git reset --hard 同时删除提交 例子:git reset --hard HEAD^ 复位到HEAD之前的那个版本
5重新改写历史记录
什么时候需要改写历史记录?
给历史记录重新排序
多个提交合并成一个提交
一个提交分解成多个提交
git rebase -i HEAD~3
本质上利用的是变基 *** 作,定位到你想变化的范围之前。然后进入编辑器去修改你想修改的部分。完成之后再回到当前的末梢。
三、怎么通过git把代码上传到github上这是我第一次应用git,以下仅供git的初学者参考。
github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开。这对于一般人来说公共仓库就已经足够了。
1注册账户以及创建仓库 要想使用github第一步当然是注册github账号了。之后就可以创建仓库了(免费用户只能建公共仓库),Create a New Repository,填好名称后Create,之后会出现一些仓库的配置信息,这也是一个git的简单教程。
2安装客户端tortoiseGit github是服务端,要想在自己电脑上使用git我们还需要一个git客户端,我这里选用TortoiseGit,他给我们提供了图形界面的 *** 作。在安装之前首先需要安装git,下载地址://msysgitgithub/,TortoiseGit下载地址: ://codegoogle/p/tortoisegit/ 装完后右键鼠标会多出一些选项来,在本地仓库里右键选择Git Init Here,会多出来一个git文件夹,这就表示本地git创建成功。
右键Git Bash进入git命令行,为了把本地的仓库传到github,还需要配置ssh key。 3配置Git (1) 首先在本地创建ssh key; $ ssh-keygen -t rsa -C "your_email@youremail" 后面的your_email@youremail改为你的邮箱,之后会要求确认路径和输入密码,我们这使用默认的一路回车就行。
成功的话会在~/下生成ssh文件夹,进去,打开id_rsapub,复制里面的key。回到github,进入Account Settings,左边选择SSH Keys,Add SSH Key,title随便填,粘贴key。
(2)为了验证是否成功,在git bash下输入: $ ssh -T git@github 如果是第一次的会提示是否continue,输入yes就会看到:You've successfully authenticated, but GitHub does not provide shell access 。这就表示已成功连上github。
(3)接下来我们要做的就是把本地仓库传到github上去,在此之前还需要设置username和email,因为github每次mit都会记录他们。 $ git config --global username "your name" $ git config --global username "your name"$ git config --global useremail "your_email@youremail" (4)进入要上传的仓库,右键git bash,添加远程地址: $ git remote add origin git@github:yourName/yourRepogit 后面的yourName和yourRepo表示你再github的用户名和刚才新建的仓库,加完之后进入git,打开config,这里会多出一个remote “origin”内容,这就是刚才添加的远程地址,也可以直接修改config来配置远程地址。
4提交、上传 (1)接下来在本地仓库里添加一些文件,比如README, $ git add README $ git add README$ git mit -m "first mit" (2)上传到github: $ git push origin master git push命令会将本地仓库推送到远程服务器。 git pull命令则相反。
修改完代码后,使用git status可以查看文件的差别,使用git add 添加要mit的文件,也可以用git add -i来智能添加文件。之后git mit提交本次修改,git push上传到github。
5gitignore文件 gitignore顾名思义就是告诉git需要忽略的文件,这是一个很重要并且很实用的文件。一般我们写完代码后会执行编译、调试等 *** 作,这期间会产生很多中间文件和可执行文件,这些都不是代码文件,是不需要git来管理的。
我们在git status的时候会看到很多这样的文件,如果用git add -A来添加的话会把他们都加进去,而手动一个个添加的话也太麻烦了。这时我们就需要gitignore了。
比如一般c#的项目我的gitignore是这样写的: bin suo obj bin和obj是编译目录,里面都不是源代码,忽略;suo文件是vs2010的配置文件,不需要。这样你在git status的时候就只会看到源代码文件了,就可以放心的git add -A了。
1 checkout()、checkoutscm、git是三个不同的概念,有各自的作用和用法。
2 checkout()是Jenkins Pipeline中的一个步骤,用于将Jenkins的工作空间(workspace)更新到指定的版本或分支,以便进行后续的构建、测试等 *** 作。
3 checkoutscm是Jenkins中的一个插件,可以实现对多个源代码管理工具(如Git、SVN等)进行版本控制和更新。
4 Git是一种分布式的版本控制系统,可以用于对代码库进行版本管理、多人协作等 *** 作,与Jenkins的checkout()和checkoutscm可以结合使用,实现自动化构建和持续集成。
gitlab-ciyml 文件内容如下(使用默认的 docker image,执行build website 步骤)
使用 image 指定要使用image;使用 artifacts 保留创建的中间文件
添加 test 步骤; 使用 stages 指定要指定的stage先后顺序
添加并行任务
添加部署步骤
添加 environment
在 project / Operations / Environment 链接下面,可以找到不同环境的部署历史
在"deploy review" 绑定创建和删除任务
stages:
- build
- test
- deploy review
- deploy staging
- deploy production
- production tests
两个方法:
比如:
使用 when 条件; allow_failure 是否运行当前失败,其后的任务继续执行
使用 only 条件
所有任务,或者某个任务在所有任务执行前后要做的动作
before_script:
- echo "this step will be done before runing the script section
参考文档
本文重点整理pipeline整体流程和配置中的几点细节,弱化了配置流程,如果想看完整的配置流程请点击 Jenkins和gitlab(webhooks)的CI/CD前置工作 。
在你想要做CI/CD的工程中增加jenkinsfile并编写相应脚本。
在jenkins中创建Pipeline风格的任务。
除以下介绍的要点外,其他流程基本与 Jenkins和gitlab(webhooks)的CI/CD前置工作 相同,本文不再重复介绍。
配置请见下图:
create at 2018/04/27 20:06:00
以上就是关于Jenkins pipeline job 根据参数动态获取触发事件的分支全部的内容,包括:Jenkins pipeline job 根据参数动态获取触发事件的分支、Tekton 入门-概念篇、CentOS中安装Git等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)