Jenkins pipeline 是一套插件,支持将连续输送管道实施和整合到Jenkins。Pipeline提供了一组可扩展的工具,用于通过管道DSL为代码创建简单到复杂的传送流水线。他目前支持jenkins 2.x以上版本。pipeline是由groovy语言编写
可以查看:https://www.cnblogs.com/jxxiaocao/p/16191140.html
设置仓库和jenkins的关联(因为我使用的是gitee所以就介绍gitee,其他的都差不多)
gitee和jenkins关联:https://www.cnblogs.com/jxxiaocao/p/12668993.html
其他插件:
用户相关信息:https://www.cnblogs.com/jxxiaocao/p/16203126.html


设置git参数



pipeline {
agent any //环境maven、jdk等
stages { //项目构建
stage('拉取代码') { //拉取代码
steps { //具体实施步骤
echo '拉取代码开始'
//下面 生成流水脚本 生成的 语句
// extensions: [[$class: 'SparseCheckoutPaths', sparseCheckoutPaths: [[path: 'common']]]] 拉取指定目录
checkout([
$class: 'GitSCM', branches: [[name: '*']],
extensions: [
[$class: 'CleanCheckout', deleteUntrackedNestedRepositories: true]
],
userRemoteConfigs: [[credentialsId: '需要获取', url: 'git地址']]
])
echo "拉取的TAG:${TAGNAME}"
echo '拉取代码结束'
}
}
stage('编译打包') { // 编译打包
steps { //具体实施步骤
echo 'build project' // 打包命令
}
}
stage('部署上线') { // 部署上线
steps { //具体实施步骤
echo 'publish project' // 部署命令
}
}
}
post {
success {
//企微通知 TAGNAME 是上面 git参数 那的 名称
sh 'sh /var/lib/jenkins/pipeline/wechat_send.sh token "环境" "${JOB_NAME}" "${TAGNAME}" "${BUILD_DISPLAY_NAME}" "${BUILD_USER}"'
echo 'whole pipeline successful'
}
failure {
echo 'FAILED (global)'
}
}
}
pipeline脚本式代码:
node {
//全局变量(外部可以使用,比如shell中使用)
env.ENVI = "test" //定义环境
env.WECHAT_TOKEN = "key"
env.ERRI = "false"
env.WORKSPACE = "/www/jenkins/workspace/${JOB_NAME}"
//局部变量(在shel中不能使用)
def GIT_URL = "git地址"
try{
stage('拉取代码') { //拉取代码
echo '拉取代码开始'
checkout([
$class: 'GitSCM', branches: [[name: '${TAGNAME}']],
extensions: [[$class: 'CleanCheckout', deleteUntrackedNestedRepositories: true]],
userRemoteConfigs: [[credentialsId: '4e89640d-3576-4043-a4e2-47d', url: "${GIT_URL}"]]
])
echo "拉取的TAG:${TAGNAME}"
echo '拉取代码结束'
}
stage('编译打包') { // 编译打包
echo '编译打包开始'
echo '编译打包结束'
}
stage('部署上线') {
echo '部署上线开始'
// 这里用到 ansible 同步代码(Jenkins+Pipeline+Ansible 自动化部署)
sh 'ansible-playbook -e "host=wb workspace=${WORKSPACE} item=${JOB_NAME} exclude=.git*" /etc/ansible/variables.yml'
echo '部署上线结束'
}
env.RESULT = currentBuild.currentResult
}catch(err){
echo "编译失败,错误原因如下:${err} "
env.ERRI = "true"
env.RESULT = "FAILURE:\n ${err}"
}finally{
}
//获取构建用时
env.DURATION_STRING = currentBuild.durationString
//企微通知
sh 'sh /var/lib/jenkins/pipeline/wechat_send.sh "${WECHAT_TOKEN}" \
"${ENVI}" \
"${JOB_NAME}" \
"${TAGNAME}" \
"${BUILD_DISPLAY_NAME}" \
"${DURATION_STRING}" \
"${RESULT}" \
"${BUILD_USER}"'
//判断是否失败,如果是强制显示失败图标
if(env.ERRI == "true"){
script {
error "${ERRI}"
}
}
}
ps:Pipeline流水线的优化方案
Pipeline语法:
比如获取credentialsId


点击 生成流水脚本

把生成的 checkout(.......) 放到 上面

结果:

wechat_send.sh 脚本(通知)
#!/bin/sh
CHAT_WEBHOOK_KEY="$1"
ENV="$2"
ITEM="$3"
TAG="$4"
BUILD_DISPLAY_NAME="$5"
MILLIS_TIME="$6"
STATE="$7"
OPERATOR="$8"
CHAT_WEBHOOK_URL='https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key'
CHAT_CONTENT_TYPE='Content-Type: application/json'
curl "${CHAT_WEBHOOK_URL}=${CHAT_WEBHOOK_KEY}" \
-H "${CHAT_CONTENT_TYPE}" \
-d '
{
"msgtype": "markdown",
"markdown": {
"content": "<font color=\"warning\">版本发布通知</font>\n
>发布环境:<font color=\"info\">'"${ENV}"'</font>
>项目名称:<font color=\"info\">'"${ITEM}"'</font>
>发布Tag:<font color=\"info\">'"${TAG}"'</font>
>构建名称:<font color=\"comment\">'"${BUILD_DISPLAY_NAME}"'</font>
>构建用时:<font color=\"comment\">'"${MILLIS_TIME}"'</font>
>构建状态:<font color=\"warning\">'"${STATE}"'</font>
>执行人:<font color=\"comment\">'"${OPERATOR}"'</font>"
}
}
ps:企微通知需要安装 Qy Wechat Notification 插件,当然也可以用 钉钉 通知就不介绍了都差不多
通知
成功:

失败:

如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby
我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘
我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="
假设我有这个范围:("aaaaa".."zzzzz")如何在不事先/每次生成整个项目的情况下从范围中获取第N个项目? 最佳答案 一种快速简便的方法:("aaaaa".."zzzzz").first(42).last#==>"aaabp"如果出于某种原因你不得不一遍又一遍地这样做,或者如果你需要避免为前N个元素构建中间数组,你可以这样写:moduleEnumerabledefskip(n)returnto_enum:skip,nunlessblock_given?each_with_indexdo|item,index|yieldit
我从Ubuntu服务器上的RVM转移到rbenv。当我使用RVM时,使用bundle没有问题。转移到rbenv后,我在Jenkins的执行shell中收到“找不到命令”错误。我内爆并删除了RVM,并从~/.bashrc'中删除了所有与RVM相关的行。使用后我仍然收到此错误:rvmimploderm~/.rvm-rfrm~/.rvmrcgeminstallbundlerecho'exportPATH="$HOME/.rbenv/bin:$PATH"'>>~/.bashrcecho'eval"$(rbenvinit-)"'>>~/.bashrc.~/.bashrcrbenvversions
前置步骤我们都操作完了,这篇开始介绍jenkins的集成。话不多说,看操作1、登录进入jenkins后会让你选择安装插件,选择第一个默认的就行。安装完成后设置账号密码,重新登录。2、配置JDK和Git都需要执行路径,所以需要先把执行路径找到,先进入服务器的docker容器,2.1JDK的路径root@69eef9ee86cf:/usr/bin#echo$JAVA_HOME/usr/local/openjdk-82.2Git的路径root@69eef9ee86cf:/#whichgit/usr/bin/git3、先配置JDK和Git。点击:ManageJenkins>>GlobalToolCon
我正在尝试创建一个带有项目符号字符的Ruby1.9.3字符串。str="•"+"helloworld"但是,当我输入它时,我收到有关非ASCII字符的语法错误。我该怎么做? 最佳答案 你可以把Unicode字符放在那里。str="\u2022"+"helloworld" 关于ruby-如何在Ruby字符串中插入项目符号字符?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1195
我的Rails站点使用了一个确实不是很好的gem。每次我需要做一些新的事情时,我最终不得不花费与向实际Rails项目添加代码一样多的时间来为gem添加功能。但我不介意,我将我的Gemfile设置为指向我的gem的GitHub分支(我尝试提交PR,但维护者似乎已经下台)。问题是我真的没有找到一种合理的方法来测试我添加到gem的新东西。在railsc中测试它会特别好,但我能想到的唯一方法是a)更改~/.rvm/gems/.../foo。rb,这看起来不对或者b)升级版本,推送到Github,然后运行bundleup,这除了耗时之外显然是一场灾难,因为我不确定我所做的promise是否正
我一直在尝试使用nanoc用于生成静态网站。我需要组织一个复杂的排列页面,我想让我的内容保持干燥。包含或合并的概念在nanoc系统中如何运作?我已阅读文档,但似乎找不到我想要的内容。例如:我如何获取两个部分内容项并将它们合并到一个新的内容项中。在staticmatic您可以在您的页面中执行以下操作。=partial('partials/shared/navigation')类似的约定在nanoc中如何运作? 最佳答案 这里是nanoc的作者。在nanoc中,部分是布局。因此,您可以拥有layouts/partials/shared/
我安装了ruby、yeoman,当我运行我的项目时,出现了这个错误:Warning:Running"compass:dist"(compass)taskWarning:YouneedtohaveRubyandCompassinstalledthistasktowork.Moreinfo:https://github.com/gruUse--forcetocontinue.Use--forcetocontinue.我有进入可变session目标的路径,但它不起作用。谁能帮帮我? 最佳答案 我必须运行这个:geminstallcom