【问题标题】:Is there a way for Jenkins or Crontab to push commits automatically to a GitHub repo?Jenkins 或 Crontab 有没有办法自动将提交推送到 GitHub 存储库?
【发布时间】:2022-11-07 01:18:02
【问题描述】:

我一直在尝试推送使用简单的 shell 脚本创建的提交:

cd $dir
git add . && git commit -m "Test commit" &&
git push --all origin

该脚本完美地完成了这项工作。然而,即使我为 Jenkins 分配了一个拥有该文件夹的组,Crontab 在访问本地 git 文件夹时也被困在本地提交,并且 Jenkins 在访问本地 git 文件夹时会收到“权限被拒绝”。

我使用代码或脚本路径尝试了使用 Execute shell 的 Jenkins 作业。任何帮助将不胜感激。

【问题讨论】:

  • 您必须将 git 凭据添加到 git,例如如此处所示 (geeksforgeeks.org/how-to-add-git-credentials-in-jenkins) 并使用它来推送提交。
  • 它将在第一次合并冲突时中断
  • 按照建议添加了 git creds。当 cd 到一个目录并且来自 git(不是 git repo)的致命时,权限仍然被拒绝。有什么插件可以推送提交吗?

标签: linux github jenkins cron push


【解决方案1】:

需要注意的一点是,Jenkins 会回到原来的工作区来运行每个命令。所以当你运行cd $dir时,脚本会切换到$dir,但是一旦你启动git add...命令,它就会回到你的工作区目录。为防止这种情况,请将命令链接在一起:

cd $dir && git add . && git commit -m "Test commit" && git push --all origin

或使用dir 包装git 命令,以便它们始终在该特定目录中运行。

【讨论】:

  • 链接也不起作用。我需要一个 jenkinsfile 来使用目录吗?
  • @HarrierPanels 是的,dir 在管道上作为代码工作。但首先看看为什么链接不起作用。在cd $dir 之后添加pwd 命令,看看你是否在正确的目录中。如果是这样,那么问题是别的。
  • cd $dir 获得权限被拒绝
  • 为 cron 解决。创建了一个钩子以在 cron 完成提交后自动推送,解决方案在这里:stackoverflow.com/questions/7925850/… 现在要用 jenkins 进行检查。
  • 向 Jenkins 添加了一个本地节点。它现在通过 shell 命令提交推送,不使用钩子或插件。解决了!
【解决方案2】:

正如@M B 所建议的那样总结:

crontab

要自动推送 cron 提交:

将挂钩文件添加到您的 git 目录: How can I automatically push after committing in Git?

詹金斯

要自动提交和推送,请添加一个节点。我还添加了sudo visudo 的 sudoers 文件:

jenkins ALL=(ALL) NOPASSWD: ALL
%sudo    ALL=(ALL:ALL) ALL

我还分配了一个安全目录:

git config --global --add safe.directory /path/to/your/git/dir

希望这可以帮助。

【讨论】:

    猜你喜欢
    • 2019-06-18
    • 1970-01-01
    • 2016-01-10
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 2012-08-25
    • 2017-12-15
    • 1970-01-01
    相关资源
    最近更新 更多