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

时间:2014-07-05 10:45:58

标签: github jenkins release

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

Jenkins的Github插件(JENKINS-18598)尚不支持。

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

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

2 个答案:

答案 0 :(得分:26)

我使用github-release工具解决了这个问题。 像魅力一样非常容易。

  1. 将相关参数添加到构建
  2. 在帖子构建步骤中添加shell脚本
  3. 输入以下代码:
  4. 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
    

答案 1 :(得分:12)

我认为你正在走上正轨!

  1. 将帖子构建任务插件添加到Jenkins
  2. 使用“仅当前面的所有步骤都成功时运行脚本”选项
  3. 我会为发布名称,标记名称等创建Jenkins参数,并将这些参数与您的凭据一起保存到文件中,作为构建过程的最后一步(在构建后任务执行之前)。
  4. 在调用Github API的后期构建任务步骤中添加一个简短的脚本:
  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