簡體   English   中英

如何使用 Github 操作檢查最新提交?

[英]How to checkout the latest commit with Github Actions?

我創建了一個新的 Rust 項目並決定,我會給Github Actions嘗試在每個拉取請求上運行自動構建和測試:

name: Rust
on: [pull_request]

我花了一段時間才注意到,默認情況下,Github Actions 根本不會檢查我的代碼,並且GITHUB_WORKSPACE只是空的。 所以,我嘗試手動克隆存儲庫。 做這樣的事情:

REPO=/tmp/path/to/repository
git clone https://github.com/myself/mycode.git $REPO

但這只是檢查默認分支上的任何內容。 因此,我調查了$GITHUB_SHA的檢查結果,結果證明這是我的存儲庫不知道的東西。 對於只是空的$GITHUB_REF也是如此。

在這一點上,我對自己在做什么一無所知。 我最初的假設是,實際上配置為運行的作業on: [pull request]應該具有完全相同的代碼,但它無法檢查並准備它。

我還調查了提供的Checkout Actions

此操作將您的存儲庫簽出到$GITHUB_WORKSPACE ,以便您的工作流可以訪問存儲庫的內容。

默認情況下,這相當於運行git fetchgit checkout $GITHUB_SHA ,這樣您的回購內容將始終處於觸發工作流的版本。 請參閱此處以了解$GITHUB_SHA對於不同類型的事件是什么。

但正如我之前所說, $GITHUB_WORKSPACE完全是空的,並且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.

如果我的存儲庫不知道$GITHUB_SHA是什么? 我是否完全誤解了 Github 操作? 如何使用 Github 操作檢查最新提交,即在拉取請求中?

是我失敗的年表

您應該使用處理結帳的官方操作 github-actions的做事方式需要一些時間來適應,因為它是一個項目管理套件,不僅僅滿足 CI/CD 的需求。

所以,有些事情肯定會有點奇怪或麻煩,最重要的是因為所有這一切的文檔還不是很成熟——但是,嘿,它是一個測試版是有原因的。

這個動作的基本用法是:

  • 找到您希望簽出當前提交的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: ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM