如何使用Github Actions签出最新提交?

Afr*_*Afr 2 git continuous-integration github git-checkout github-actions

我创建了一个新的Rust项目,并决定,我将给Github Actions一个尝试在每个请求请求上运行自动化构建和测试的方法:

name: Rust
on: [pull_request]
Run Code Online (Sandbox Code Playgroud)

我花了一段时间注意到默认情况下,Github Actions根本签出我的代码,而GITHUB_WORKSPACE只是空的。因此,我尝试手动克隆存储库。做这样的事情:

name: Rust
on: [pull_request]
Run Code Online (Sandbox Code Playgroud)

但这只是检查默认分支上的内容。因此,我调查了检查$GITHUB_SHA结果是否是我的存储库未知的。对于$GITHUB_REF空的情况也是如此。

在这一点上,我对所做的事情一无所知。我最初的假设是,实际上配置为运行的作业on: [pull request]应具有该代码,但无法检出并准备该代码。

我还调查了提供的Checkout操作

此操作将您的存储库签出到$GITHUB_WORKSPACE,以便您的工作流可以访问存储库的内容。

默认情况下,这等效于运行git fetchgit checkout $GITHUB_SHA,因此您将始终以触发该工作流程的版本获得您的回购内容。请参阅此处以了解$GITHUB_SHA各种事件的含义。

但是正如我之前所说,$GITHUB_WORKSPACE完全是空的,a git fetch只会告诉您没有git存储库。

这是一个示例失败

On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean
fatal: reference is not a tree: d76745134ae45905e4a0ab8d27c92f1e2544bdc1
##[error]Process completed with exit code 128.
Run Code Online (Sandbox Code Playgroud)

什么是$GITHUB_SHA如果它是未知的我的仓库?我会完全误解Github动作吗?如何使用Github Actions检出最新提交,即在请求请求时?

是我失败时间顺序

Arn*_*rne 5

您应该使用处理结帐的正式措施。该github-actions做的事情'的方式需要一些时间来适应,因为它是一个项目管理套件,不仅仅迎合CI / CD的需求。

因此,某些事情注定会有些奇怪或麻烦,这主要是因为有关这方面的文档还不是很成熟-但是,嘿,这是一个beta版本,这是有原因的。

此操作的基本用法是:

  • 找到steps您要检查当前提交的部分
  • 在编写依赖于此处代码的步骤之前,添加操作,通常在最顶部
  • 确定您要使用的操作版本,这些教程通常会使用@master,但是命名当前最新版本会更安全一些-在这种情况下@v1
  • 享受您的工作流程
jobs:
  build:
    runs-on: ubuntu-latest
    steps:

      # may or may not have a name, it's quite self-descriptive
      - uses: actions/checkout@v1

      # run steps that rely on the code in the commit that was pushed
      - name: test code
        steps: ...
      - name: build package
        steps: ...
Run Code Online (Sandbox Code Playgroud)