【问题标题】:GitHub pipeline/CI to generate files and push them back to the repositoryGitHub 管道/CI 生成文件并将它们推送回存储库
【发布时间】:2017-12-03 11:47:26
【问题描述】:

我在 GitHub 上维护一个公共存储库,其中仅对单个 YAML 文件进行更改。我正在寻找一种解决方案来在每次推送时处理该文件并基于它生成文件。本质上,管道或 CI 应该解析文件并创建许多不同的降价文件。然后应将这些文件(或更具体地说,对这些文件的更改)推送回存储库。

要求:

  • 对 YAML 文件的手动更改和对 Markdown 文件的自动更改都应推送到 master 分支。
  • 应保留版本历史记录(例如,强制推送可能不起作用)。
  • 生成任意数量的文件。

GitHub PagesGitHub Releases 有 Travis 提供程序。但两者都有局限性,不适合我的要求。

我可以使用什么工具/CI/管道在 GitHub 上实现这一目标?我更喜欢服务而不是自托管 CI。

【问题讨论】:

  • 我已编辑答案以包含一项服务。

标签: github continuous-integration travis-ci


【解决方案1】:

假设您已经有了解析 YAML 文件和生成 Markdown 文件的程序/脚本,我可以从 Jenkins CI 为您提供一些关于如何做到这一点的见解。虽然我从运行自己的实例中汲取经验,但您也可以探索一些托管选项,例如 CloudBees

  1. 创建一个新的 Jenkins Freestyle 项目。
  2. 在源代码管理部分下,配置您的 GitHub 项目坐标。
  3. 在“构建触发器”部分下,激活“将更改推送到 GitHub 时构建”选项。这将在您将 YAML 文件的新版本推送到存储库时启动 CI 作业。
  4. 在 build 部分下,添加一个 Execute shell build 步骤。
  5. 在 shell 步骤中,启动处理 YAML 文件/生成 .md 文件的程序或脚本。通过添加 git add .git commit -m "message"git pullgit push 命令来结束脚本(假设 git 在路径中)。
  6. 启用新作业以使其在 Jenkins 中处于活动状态。

【讨论】:

  • 感谢您的回答。尽管我认为为那个简单的用例运行或支付 Jenkins 实例似乎有点过头了。无论如何接受它作为一个回答,因为它似乎是迄今为止最好的解决方案。
【解决方案2】:

您现在可以使用存储库的免费 G​​itHub Actions 选项来执行此操作。 您需要将此步骤放入您的 YAML 文件中。

    - name: Commit back to GitHub
      run: |
        git config --global user.name "github-actiuons[bot]"
        git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"

        git add -A
        git commit -m "Updating some file"
        git push

市场上有一些商品,但它们不适合我。

机器人的电子邮件基于此线程:

https://github.community/t/github-actions-bot-email-address/17204

  • 更新提交消息。
  • 如果您决定将特定文件推送到文件夹中,请注意文件夹路径。

【讨论】:

    猜你喜欢
    • 2012-08-25
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 2011-11-24
    相关资源
    最近更新 更多