gpt4 book ai didi

continuous-integration - 如何在 CircleCI 构建脚本中使用外部脚本

转载 作者:行者123 更新时间:2023-12-05 05:12:07 25 4
gpt4 key购买 nike

我想从外部 shell 脚本导入逻辑作为我的 CircleCI 配置的一部分,我正在寻找“正确”(或最佳)方法来执行此操作。

假设我有以下用于 CircleCI 的 config.yml:

version: 2.1
jobs:
build:
docker:
- image: circleci/ruby:2.5.3-node-browsers
steps:
- checkout
- run:
name: Compute some value
command: |
SOME_VALUE=$(foo.sh)
- run:
name: Reuse some value
command: |
echo "Hello" > /a/path/${SOME_VALUE}.txt

总体思路是将这些步骤包装到一个 CircleCI Orb 中,然后让我的构建配置从 Orb 中重用它们。但是 foo.sh 脚本无法打包到 Orb 本身中,因此我需要一些其他方法使其可以在构建配置中访问。

那么如何将 foo.sh 脚本(或任何其他脚本或可执行文件)包含到我的构建过程中呢?

到目前为止我所看到的(以及为什么我认为这不是最好的方法):

  1. 从 CircleCI 文档中,我看不到一种方法可以将 foo.sh 之类的脚本直接作为 Orb 的一部分包含在内。
  2. 我可以基于 circleci/XXX 创建一个新的 Docker 镜像,将我的脚本包含在该 Docker 镜像中并将其称为目录。我不太喜欢这个想法,因为脚本与它所基于的 Docker 镜像无关 - 我只是滥用 Docker 作为此处的传输。
  3. 我可以从公共(public)位置wget 脚本,临时存储它,然后从正在执行构建脚本的正在运行的容器中调用它。但是从公共(public) URL 加载内容然后执行感觉不对(打字错误或某些恶意工作可能导致我执行一些外国 shell 脚本,天知道是什么内容)。
  4. 我可以将一些带有脚本的 Git 存储库克隆到正在运行的构建容器内的本地文件系统,然后执行脚本。感觉比选项 (3) 好一点。

有什么我还没有想到的想法或最佳实践吗?

最佳答案

So how I can include the foo.sh script (or any other script or executable) into my build process?

你将它打包在 orb 中。

这是一个圈子维护的球体中的一个例子:

https://github.com/CircleCI-Public/slack-orb/blob/master/src/commands/notify.yml#L79

      command: <<include(scripts/notify.sh)>>

引用 https://github.com/CircleCI-Public/slack-orb/tree/master/src/scripts/notify.sh 中的脚本

关于continuous-integration - 如何在 CircleCI 构建脚本中使用外部脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54906498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com