[英]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 fetch
和git 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.