Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add method for determining base commit on GitHub actions #9169

Merged
merged 19 commits into from
Sep 26, 2024

Conversation

dimitropoulos
Copy link
Contributor

@dimitropoulos dimitropoulos commented Sep 19, 2024

Description

If you're running --affected and you're running in the context of a GitHub action there are some additional env vars that are available that give more context (pull request action, push action, each have their own thing). In a push even it's a previous commit, and in the pull request event it's the base of the pull request. We want to use those to be the base of --affected instead of just defaulting to main or whatever we have. You can still override it as normal.

This is a problem right now for running in GitHub actions right now because it clones to a limited depth (shallow clone). We might therefore need to check that the commit in question actually exists.

Testing Instructions

see tests (there are quite a few) - ultimately the only way to "really" test this is to see it run in GitHub runners.

Copy link

vercel bot commented Sep 19, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
examples-nonmonorepo ✅ Ready (Inspect) Visit Preview 💬 Add feedback Sep 25, 2024 9:47pm
8 Skipped Deployments
Name Status Preview Comments Updated (UTC)
examples-basic-web ⬜️ Ignored (Inspect) Visit Preview Sep 25, 2024 9:47pm
examples-designsystem-docs ⬜️ Ignored (Inspect) Visit Preview Sep 25, 2024 9:47pm
examples-gatsby-web ⬜️ Ignored (Inspect) Visit Preview Sep 25, 2024 9:47pm
examples-kitchensink-blog ⬜️ Ignored (Inspect) Visit Preview Sep 25, 2024 9:47pm
examples-native-web ⬜️ Ignored (Inspect) Visit Preview Sep 25, 2024 9:47pm
examples-svelte-web ⬜️ Ignored (Inspect) Visit Preview Sep 25, 2024 9:47pm
examples-tailwind-web ⬜️ Ignored (Inspect) Visit Preview Sep 25, 2024 9:47pm
examples-vite-web ⬜️ Ignored (Inspect) Visit Preview Sep 25, 2024 9:47pm

crates/turborepo-scm/src/git.rs Outdated Show resolved Hide resolved
crates/turborepo-scm/src/git.rs Outdated Show resolved Hide resolved
crates/turborepo-scm/src/git.rs Outdated Show resolved Hide resolved
crates/turborepo-scm/src/git.rs Outdated Show resolved Hide resolved
crates/turborepo-scm/src/git.rs Outdated Show resolved Hide resolved
crates/turborepo-scm/src/git.rs Outdated Show resolved Hide resolved
crates/turborepo-scm/src/git.rs Outdated Show resolved Hide resolved
crates/turborepo-scm/src/git.rs Outdated Show resolved Hide resolved
crates/turborepo-scm/src/git.rs Show resolved Hide resolved
Copy link
Member

@chris-olszewski chris-olszewski left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Aside from adding logging when the github base ref doesn't resolve, LGTM.

Copy link
Member

@tknickman tknickman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome, thanks!

@dimitropoulos dimitropoulos enabled auto-merge (squash) September 26, 2024 13:52
@dimitropoulos dimitropoulos merged commit fde7946 into main Sep 26, 2024
40 checks passed
@dimitropoulos dimitropoulos deleted the dimitri/affected-github branch September 26, 2024 14:14
chris-olszewski added a commit that referenced this pull request Oct 3, 2024
…kout (#9214)

### Description

Fixes #9208

With #9169 we started using `GITHUB_BASE_REF` to determine the base of
our `--affected` comparison. This can return a commit that doesn't exist
in the current checkout, but will pass `rev-parse` since the reference
exists.

This PR avoids crashing by treating `bad object` git errors the same as
`no merge base` so if we get passed a commit that is valid, but
non-existent in the checkout we still run.

### Testing Instructions

I only have a manual test as creating a repository where a commit exists
according to `rev-parse`, but not as part of the checkout is beyond my
git-fu levels.

Create a shallow checkout:
`git clone [email protected]:vercel/turborepo.git --depth=1`

Find a commit that exists in the repo, but does not exist in the
checkout e.g. `ce11d86705632160dd234ec4cf04bb1bd4ddeebc`
```
[0 olszewski@chriss-mbp] /tmp/turborepo $ git rev-parse ce11d86                                           
ce11d86
[0 olszewski@chriss-mbp] /tmp/turborepo $ git log
commit 18807de (grafted, HEAD -> main, origin/main, origin/HEAD)
Author: Anthony Shew <[email protected]>
Date:   Wed Oct 2 23:06:06 2024 -0600

    (docs) Fix spacing on link. (#9213)
    
    ### Description
    
    <!--
     ✍️✍  Write a short summary of your work.
      If necessary, include relevant screenshots.
    -->
    
    ### Testing Instructions
    
    <!--
      Give a quick description of steps to test your changes.
    -->
[0 olszewski@chriss-mbp] /tmp/turborepo $ git checkout ce11d86
fatal: reference is not a tree: ce11d86
```

Verify that `turbo ls --affected` crashes with "bad object" message:
```
GITHUB_ACTIONS=1 GITHUB_BASE_REF=ce11d86705632160dd234ec4cf04bb1bd4ddeebc turbo ls --affected 
 WARNING  No locally installed `turbo` found. Using version: 2.1.4-canary.0.
turbo 2.1.4-canary.0

 WARNING  ls command is experimental and may change in the future
Resolved base ref from GitHub Actions event: ce11d86
  × Unable to query SCM: git error: fatal: bad object ce11d86
  │ 
  ╰─▶ git error: fatal: bad object ce11d86
```

Test PR and verify that since we can't diff the commit we assume
everything has changed:
```
GITHUB_ACTIONS=1 GITHUB_BASE_REF=ce11d86705632160dd234ec4cf04bb1bd4ddeebc turbo_dev ls --affected
 WARNING  No locally installed `turbo` found. Using version: 2.1.4-canary.0.
turbo 2.1.4-canary.0

 WARNING  ls command is experimental and may change in the future
Resolved base ref from GitHub Actions event: ce11d86
 WARNING  unable to detect git range, assuming all files have changed: git error: fatal: bad object ce11d86

37 packages (pnpm)

  @turbo-internal/top-issues-gh-action packages/top-issues
  @turbo/benchmark packages/turbo-benchmark
...
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants