如何使用 Gitlab CI 运行程序设置非常简单的部署?

2024-01-09

我想自动将新工作从我的 Gitlab 存储库部署到在生产服务器上运行的实时网站。实时网站是 GIT 存储库克隆live branch.

我的问题:

  • 每次“构建”发生时,跑步者似乎都会重新克隆我的存储库,进入~/builds/...。这是强制性行为吗?我想我真正想要的是git pull在我的生产网站目录中。

  • 如果它真的每次都必须克隆存储库,为什么不呢git reset它?随着时间的推移,至少这会节省大量带宽,不是吗?

  • 我该如何运行我的deploy.sh哪个在存储库根目录中?我目前在 gitlab.com 构建信息中收到此错误:bash: line 23: deploy.sh: command not found

My .gitlab-ci.yml file:

deploy_to_production:
  script:
    - deploy.sh
  only:
    - live
  tags:
    - prod

Details

为此,我想运行我编写的一个简单的 shell 脚本(deploy.sh)在生产服务器上,每当我推送到我的存储库的特定分支(live分支,就我而言)。这个 shell 脚本位于我的 GIT 存储库中,与我的.gitlab-ci.yml.

该脚本基本上只是做了一个git reset, fetch and pull,使生产版本与存储库中的内容保持同步。

我在我的服务器上安装了一个“shell”多运行器,并将其连接到 gitlab.com,在那里我可以看到它处于活动状态。

总的来说,我找错了树?我应该改变我的deploy.sh这样它就不会对新工作进行 git checkout,而是使用cp也许rsync移动新代码~/builds/...进入生产网站?


问:克隆是强制性行为吗?

据我所知,这是因为假设在构建过程中您使用代码。

如果这不是您的情况,并且您只想“告诉生产服务器”从您的存储库中提取代码,那么也许您可以采取不同的方法并使用webhook https://docs.gitlab.com/ee/user/project/integrations/webhooks.html反而。 GitLab 会向您的服务器发出 HTTP 请求,并以 JSON 格式传递有关事件的信息(推送、合并等)。然后接收脚本将解析它并决定是否执行 git pull。

如果您在部署之前的构建过程中确实需要对代码执行其他任务,那么可以更改策略并使用运行程序已为您签出的代码。我可能会尝试改变atomic以某种方式(rsync到实时目录中会使您的应用程序在运行时处于某种不确定的状态,如果由于某种原因失败则处于混乱状态),例如通过将实时代码放在符号链接的目录中。然后,部署脚本会将新的代码目录复制到其最终目标,进行必要的调整,并将符号链接的目标从旧的实时目录更改为新的目录。

问:如果每次都必须克隆存储库,为什么不 git 重置它?

这对开发商来说更是一个问题。任何其他人的答案都只是猜测。

问:如何运行存储库根目录中的deploy.sh?

If the 部署.sh脚本已设置可执行位,然后使用./deploy.sh, 否则bash deploy.sh.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Gitlab CI 运行程序设置非常简单的部署? 的相关文章

  • Git 用户配置文件 - 自定义忽略

    我们有一个由 5 名开发人员组成的团队致力于硬件项目 我们有一个 user config h 文件 其中包含每个用户的特定环境和偏好的 defines 例如他们使用的硬件版本 是否应该打开声音等 目前 该文件位于我们的 gitignore
  • git 标签也会被推送吗?

    自从我创建了我的存储库以来 我所使用的标签似乎 创建不会被推送到存储库 当我做git tag于 本地目录所有标签都存在 但是当我登录到 远程存储库并执行git tag 仅出现前几个 可能是什么问题 你可以这样做 git push tags
  • 撤消多个文件和文件夹“git add”[重复]

    这个问题在这里已经有答案了 我执行了 git add 现在我想恢复 git add 我怎样才能做到这一点 git reset 这相当于git reset HEAD 将取消 add 更常见的是 取消暂存 所有文件 In Git revert用
  • 切换到工作区并在 Xcode 中添加 CocoaPods 后提交 git 吗?

    我刚刚在 Xcode 5 中将 CocoaPods 添加到我当前的项目中 当然 CocoaPods 创建了一个工作区 并且我已在 Xcode 中启动了该工作区 我在工作区中看到了我的项目和 Pods 项目 我的项目从第一天起就处于源代码控制
  • 是否可以使用“最小”算法进行交互式添加?

    当从快照计算变更集时 Git 并不总是正确选择块边界 git diff has a diff algorithm允许在这方面进行一些调整的选项 git diff minimal有时会给出比git diff alone 有没有办法获得相同的优
  • 如何让“git status”始终使用短格式?

    我想要git status始终使用短格式 git status short M file1 M dir file2 file untracked3 dir file untracked4 似乎不存在这方面的配置选项 并且git config
  • 获取 git 存储库中每个文件的提交计数

    我正在寻找一种方法来查看有关 git 存储库中每个文件更改频率的统计信息 基本上 文件提交的频率实际上与以前的版本不同 此外 有没有办法获取文件上次更改的日期 我是一个 git 新手 还没有发现任何关于此的信息 任何帮助将不胜感激 这里有两
  • 如何将 tfvc 迁移到 Git(包括历史记录)

    我们计划从 tfvc 迁移到 Git 版本控制 我们有一些 GB 的代码和数千个变更集 我阅读了一些文章并浏览了 Microsoft 文档 发现了 2 个选项 提示迁移 我可以在其中使用 Azure Devops 内置工具 导入存储库 它有
  • 在 MySQL 数据库上使用版本控制 (Git)

    我是一名 WordPress 设计师 开发人员 越来越多地使用版本控制 特别是 Git 尽管我确实在某些项目中使用 SVN 我目前正在使用 Beanstalk 作为我的远程仓库 将所有 WordPress 文件添加到我的存储库中是没有问题的
  • git 如何在不同分支中保持不同的配置文件?

    请允许我先表达一下我的尝试 假设我有两个分支 Alice1 和 Alice2 Alice1 有自己的服务器 Alice2 也有自己的服务器 我希望能够签出 Alice1 编写我的代码 然后通过使用保存在 URL 配置文件中的 URL 直接推
  • Git 将分支从一个远程推送到另一个远程?

    我设置了以下遥控器 git remote korg rorg 以及以下分支 git branch a no branch remotes korg gingerbread remotes korg gingerbread release r
  • 错误:无法锁定引用..“引用/标签”存在;无法创建“参考/标签/”

    当我尝试从 github 中提取更改时 出现奇怪的 无法锁定引用 错误 我尝试过 git gc 并查找类似的错误 但找不到解决方案 gt git pull error cannot lock ref refs tags v2 8 refs
  • ClearCase 到 Git 的迁移

    我们正在努力将 CC Vobs 转换为 GIT 我们有基础 vobs 和 UCM vobs 我见过很多没有明确步骤的主题 有没有什么工具或步骤可以保留历史记录和分支 不 据我所知 没有 ClearCase 到 Git 的桥梁 转换器或适配器
  • GitLab 是否通过 git-annex 或其他方式支持大文件?

    我运行一个 GitLab 实例 并希望允许我的用户上传几乎任何大小的文件 众所周知 git 在处理大文件方面仍然存在问题 我知道通过将文件存储在其他地方并仅对元数据进行版本控制来规避此问题的方法 例如git annex git media
  • 尝试编译 git 但在 linux 中找不到 libcurl

    我想编译支持 http https 的 git 我有 ls usr include curl curlbuild h curl h curlrules h curlver h easy h mprintf h multi h stdchea
  • Git 命令查找哪些分支合并到当前分支以及何时合并

    我有几个功能分支正在自动合并到集成分支中 我想知道这种情况是否以及何时发生 我可以打字git log这将向我显示合并已经发生 但由于某种原因 它没有向我显示来自哪个功能分支 它只是说 将integration branch合并到integr
  • 如何在提交后删除本地 git 历史记录?

    我想从 Dropbox 切换到开源 Sparkleshare 它使用 git 进行同步和版本控制 如果说我在文件夹中删除了一个 1GB 文件 它会保留在本地 git 文件夹的历史记录中 但我希望将这种大量数据放在服务器上而不是客户端上 如何
  • 从 git repo 拉取后出现白屏死机(React JS、Nginx)

    每当我从 master 分支执行 git pull 到服务器上时 我所有的 React 文件似乎都消失了 屏幕变成白色 我发现的临时解决方法是 删除浏览器 cookie 缓存和站点历史记录 然后关闭浏览器并重试 删除node modules
  • 是否有一个 Git 命令可以在推送到 master 之前添加通知/警告

    我有一个用例 其他人依赖我在从 master 下拉时没有启用标志 但我需要在本地处理存储库时启用它 我希望 希望 Git 有一种方法可以添加通知或警告 当请求推送到 master 时会触发 作为某种 提醒 所以也许我的工作流程可能是这样的
  • 如何在 *Windows* 中将 Mercurial 存储库转换为 Git? [复制]

    这个问题在这里已经有答案了 可能的重复 在 Windows 上将 Mercurial hg 存储库转换为 Git 7 https stackoverflow com questions 3267232 converting a mercur

随机推荐

  • 是否可以在 DOM 加载之前阻止提交按钮提交?

    我正在使用 jquery 验证插件进行表单验证 它工作得很好 但是如果 DOM 未完全加载并且您单击提交按钮 则文档将忽略验证并转到表单 action 属性中指定的页面 是否可以在 DOM 加载之前阻止提交按钮提交 如果您像这样生成提交按钮
  • javascript - 如何四舍五入到最接近的整数[重复]

    这个问题在这里已经有答案了 可能的重复 如何在 JavaScript 中四舍五入为整数 https stackoverflow com questions 6968042 how can i round of to whole number
  • IE8 中的 FB 共享按钮 Javascript 错误

    我仅在 IE8 中收到 FB 共享按钮的 JavaScript 错误 这是在旧的共享按钮被禁用并随后重新启用后开始的 请参阅Facebook分享按钮 它正式死亡了吗 https stackoverflow com questions 115
  • 如何撤消 svn 更新?

    我修改了工作目录中的文件并进行了 svn 更新 更新已执行 没有冲突 我希望能够将工作目录内容恢复到 svn 更新之前的状态 原因是因为我维护一个与共享 svn 存储库并行的本地 git 存储库 我忘记在进行 svn 更新之前 git co
  • 提取2个字符串之间的子字符串

    这是我的代码段 set CMS SQL cms91 to 913 json cms913 to 9132 json cms9132 to 9133 json cms9133 to 10100 json set CMS FROM VERSIO
  • FirstResponder 缺少重做:

    为什么我的 InterfaceBuilder 文件中的 FirstResponder 丢失了redo 连接 在Received Actions list undo 存在 但是redo 没有 我该如何解决它 这是一个错误 解决方法是将其放入某
  • VBA:VLookUp 多个结果

    我需要一些代码方面的帮助 我正在尝试执行 VLookup 并将数据显示在 O P 和 Q 列中 我想做的是循环遍历sheet Global A列 从第3行开始 直到最后使用的行 它需要匹配 A 列中从第 2 行开始的工作表 详细信息 中的数
  • 基于 HTML 5 的移动开发的最佳框架是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 Automapper 项目

    我目前在后端使用自动映射器将对象映射到模型 我最近决定使用以下代码来处理所有时区转换 cfg CreateMap
  • 在 ASP.Net 中创建 JSON 对象

    我正在尝试在 Net 5 应用程序中创建 JSON 对象 我看到的默认选项是Microsoft AspNet Mvc Formatters Json Microsoft Extensions Configuration Json and N
  • Android:如何从 BroadcastReceiver 恢复应用程序/活动?

    如果我的程序如下 启动活动 A gt 活动 B 按 主页 按钮 再次单击该应用程序 Result 活动 B 出现 它resumes 启动活动 A gt 活动 B 按 返回 按钮 再次单击该应用程序 Result 活动 A 出现 它resta
  • 防止 jQuery 中表单的重复提交

    我有一个表单 服务器需要一些时间才能处理 我需要确保用户等待并且不会尝试通过再次单击按钮来重新提交表单 我尝试使用以下 jQuery 代码 当我在 Firefox 中尝试此操作时 所有内容都被禁用 但表单未提交其应包含的任何 P
  • 如何通过 Qt PushButton 的点击信号传递值? [复制]

    这个问题在这里已经有答案了 我有 n 个按钮最初都标记为 0 当程序运行时 这些标签或值将更改为不同的整数 例如在某些时候我可能有 7 0 2 我有一个以 int 作为参数的函数 或槽 void do stuff int i 我想在按下 x
  • 同比 Quicksight 折线图

    我正在寻找一种方法来制作同比折线图 以比较同一时间范围 日 周 月 与前一年的值 在寻找示例时 我看到很多带有 x 轴的折线图 其值看起来像 MM YYYY 我想做的是创建一个图表 其中 x 轴的值看起来像 MM 然后用不同颜色的线代表不同
  • 解决命题逻辑/布尔表达式的工具(SAT Solver?)

    我对命题逻辑和布尔表达式主题很陌生 所以这就是我需要帮助的原因 这是我的问题 在汽车行业 当您购买汽车时 有数千种不同的组件可供选择 并非每个组件都是可组合的 因此对于每辆车都存在许多用命题逻辑表达的规则 就我而言 每辆车都有 2000 到
  • Gradle maven-publish 不会构建独立的 spring-boot 应用程序

    当我使用以下命令构建 spring boot 应用程序 到独立的 jar 时gradle build 生成正确的工件 生成的 jar 包含所有依赖的 jar 并且是可执行的 我还配置了 maven publish 插件 如下所示 publi
  • 如何为R中的lapply函数内部的一行矩阵设置if条件

    我有一个数据集 需要成对计算 Kendall tau 在每对变量之间 我想将结果存储在矩阵中 但是 我想找到结果 如果当前行的每个值都小于特定值 那么我希望循环停止并且不计算下一个相关性 下一行 并返回0所有下一行的所有条目的值 我想这样做
  • glassfish v3 vs tomcat 7 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 您推荐哪一款用于网络 为什么 我不推
  • UITableViewCell + 自动布局 + RTL

    我正在将我的应用程序本地化为希伯来语 这是一种 RTL 语言 每个单元格都具有设置为前导 尾随的水平约束 这些约束在 RTL 语言上会自动反转 最终结果与预期完全一致 但是当滚动表视图时 UITableViewCell 子视图动画化从LTR
  • 如何使用 Gitlab CI 运行程序设置非常简单的部署?

    我想自动将新工作从我的 Gitlab 存储库部署到在生产服务器上运行的实时网站 实时网站是 GIT 存储库克隆live branch 我的问题 每次 构建 发生时 跑步者似乎都会重新克隆我的存储库 进入 builds 这是强制性行为吗 我想