将构建工件上载到Github,作为Jenkins的发布

Ste*_*ing 26 release github jenkins

我正在寻找一种方法来将构建工件上传为Jenkins中的Github Release作为构建后操作或发布者 - 类似于Publish Over.

Jenkins的Github插件(JENKINS-18598)尚未支持此功能.

我一直在研究postbuild-task插件,但这似乎不支持环境变量(我认为这有助于防止在构建输出中记录我的API令牌).

有没有人这样做过呢?用Jenkins解决这个问题的好方法是什么?通过cURL或CLI客户端上传(例如基于Go的github-release).

Asa*_*eki 27

我通过使用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
Run Code Online (Sandbox Code Playgroud)

  • 确实应该有一个Jenkins插件支持Jenkins管道为此... (5认同)

And*_*rew 14

我认为你正在走上正轨!

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