在Jenkins中将构建产物作为发布上传到Github

28
我正在寻找一种方法,作为Jenkins的后构建操作或发布者,在Github Release中上传构建工件的方式,类似于Publish Over
目前Jenkins的Github插件还不支持这个功能(JENKINS-18598)。
我已经研究了postbuild-task插件,但它似乎不支持环境变量(我认为这对于防止在构建输出中记录我的API令牌很有帮助)。
是否有人已经做过这个?使用cURL或CLI客户端(例如基于Go的github-release)上传会是一个好方法吗?
2个回答

30

我使用github-release这个工具解决了问题,它非常好用且易于操作。

  1. 在构建中添加相关参数
  2. 在构建后添加一个shell脚本步骤
  3. 输入以下代码:
echo "Compressing artifacts into one file"
zip -r artifacts.zip artifacts_folder

echo "Exporting token and enterprise api to enable github-release tool"
export GITHUB_TOKEN=$$$$$$$$$$$$
export GITHUB_API=https://git.{your domain}.com/api/v3 # needed only for enterprise

echo "Deleting release from github before creating new one"
github-release delete --user ${GITHUB_ORGANIZATION} --repo ${GITHUB_REPO} --tag ${VERSION_NAME}

echo "Creating a new release in github"
github-release release --user ${GITHUB_ORGANIZATION} --repo ${GITHUB_REPO} --tag ${VERSION_NAME} --name "${VERSION_NAME}"

echo "Uploading the artifacts into github"
github-release upload --user ${GITHUB_ORGANIZATION} --repo ${GITHUB_REPO} --tag ${VERSION_NAME} --name "${PROJECT_NAME}-${VERSION_NAME}.zip" --file artifacts.zip

13
确实应该有一个支持Jenkins流水线的Jenkins插件来完成这个任务... - Simon Forsberg
谢谢!但是你如何将这个工具添加到Jenkins流水线中呢? - Albert Bikeev
您可以在此处下载二进制文件并将其放置在Jenkins服务器上:https://github.com/github-release/github-release/releases/tag/v0.9.0 - Asaf Shveki

17

我认为你做得很好!

  1. 将后置构建任务插件添加到Jenkins中
  2. 使用“仅当所有先前步骤成功运行时才运行脚本”选项
  3. 我会为发布名称、标签名称等创建Jenkins参数,并在构建过程的最后一步(即后置构建任务执行之前)将它们以及您的凭据保存到文件中。
  4. 在后置构建任务步骤中添加一个简短的脚本,调用Github API:
  5. 从保存的文件中设置环境变量并将其删除
  6. CURL POST到 https://developer.github.com/v3/repos/releases/#create-a-release(您可以使用Jenkings Groovy后置构建插件而不是后置构建任务插件,并访问环境变量而无需将它们保存到文件中,但这会增加太多的复杂性,因此不值得使用该插件。)
  7. CURL POST上传工件:https://developer.github.com/v3/repos/releases/#upload-a-release-asset

感谢您的草图,这正是我大多数所想的。我已经尝试了使用Groovy后构建脚本(使用HTTPBuilder),但是它失败了(http://groovy.codehaus.org/modules/http-builder/home.html)。我将不得不尝试CURL版本,并尝试设置环境变量。 - StephenKing

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接