我看到了很多用途:
jobs:
myjob:
steps:
- name: checkout
uses: "actions/checkout@something"
- ...
但我找不到这条线的目的是什么:
uses : "actions/checkout@something"
和这个类似吗?
run: git checkout something
对于这一行:
uses : "actions/checkout@something"
,它将使用 actions/checkout
github 操作(来源 here)和参考 something
。此参考仅指 github Action 版本(与您的存储库无关)
uses
语句指的是此步骤中使用的 github 操作。来自 github 文档 的 jobs.<job_id>.steps[*].uses
:
选择要作为步骤的一部分运行的操作 在你的工作中。操作是可重用的代码单元。您可以使用 在与工作流程相同的存储库中定义的操作,公共 存储库,或在已发布的 Docker 容器映像中。
来自操作/结帐自述文件:
此操作会检出 $GITHUB_WORKSPACE 下的存储库,以便您的工作流程可以访问它。
默认情况下它只检查一次提交。我的理解是它正在做类似的事情:
git fetch --depth 1 origin $GITHUB_REF
此操作还会在 git 配置中保留一个身份验证令牌。这样,您的工作流程就可以运行经过身份验证的 git 命令
默认情况下,它会克隆您当前的存储库 (
{{ github.repository }}
),但您也可以使用此操作来克隆不同的存储库,并指定其他参数,如 token
、branch
、path
等...
带有附加输入参数的示例:通过将
fetch-depth
设置为 0
(默认为 1
)来检查所有 git 历史记录,请参阅 使用文档:
- uses: actions/checkout@v2
with:
fetch-depth: 0
理解术语让事情变得更清晰
旁注: 使用 git fetch 时,会在本地以“origin/name_of_branch”的形式创建自定义分支,可以在本地查看此分支上的更改。这些更改是文件的更新版本,而不是在 GitHub 上检查提交时看到的该文件中的特定更改。
回到问题 当动作执行时
jobs:
myjob:
steps:
- name: checkout
uses: "actions/checkout@something"
- ...
默认执行的步骤是:
触发工作流的当前存储库被克隆。
取决于定义的事件,例如推送或拉取请求:
git fetch --depth 1 $GITHUB_REF
命令中引用的环境变量在here进行了解释。 可以添加其他选项来实现特定的流程或场景,例如检查不同的分支。这可以在官方仓库自述文件中找到。