sorenlouv / backport-github-action

Backport CLI tool as a Github Action
https://github.com/sqren/backport
24 stars 16 forks source link

Don't require two separate labels #96

Closed Krzmbrzl closed 10 months ago

Krzmbrzl commented 1 year ago

As far as I understand, we currently have to add a lable auto-backport and another label auto-backport-to-xyz in order to have a given PR backported. This seems like seemingly unneeded duplication information. At least from the user's perspective, it should be enough to have the auto-backport-to-xyz label as this already indicates the desire to have this PR automatically backported.

However, I suspect this is a limitation/complication of being able to search for prefixes (substrings) in the label texts? Aka: with this line in the example config:

contains(github.event.pull_request.labels.*.name, 'auto-backport')

However, it would be a neat feature if we would not require this duplication :)

Krzmbrzl commented 1 year ago

Based on the docs for expressions in GA, it seems like something like this should almost do the work for checking for a prefix:

contains(join(github.event.pull_request.labels.*.name, '-;-'), '-;-auto-backport')

However, this would fail if the respective label is the only label on that PR or the label is first in the label array for different reasons (as in this case it won't be prefixed with the separator). Maybe something can be built on this to make it work...

One possibility that should work would be to use a second join and a temporary array:

contains(join(['', join(github.event.pull_request.labels.*.name, '-;-')], '-;-'),  '-;-auto-backport')

but at this point it really becomes unreadable...

laeubi commented 1 year ago

@Krzmbrzl just wondering what would happen if one always trigger the action, but the second label is not present? If the action then would just silently return a "skipped" status it should work with just one label but maybe run the action a bit more often than required.

Krzmbrzl commented 1 year ago

Hm. That is a good question, but I don't actually know :thinking: And my TypeScript-Fu is too weak to quickly skim the code to figure it out xD

@sqren maybe you could give some insights into what happens when the branchLabel is not present (or the provided Regex doesn't match any label)? I believe that this code https://github.com/sqren/backport-github-action/blob/e325a2d70df7264afa24c92b1d5feb2278ff63af/src/run.ts#L26-L29 indicates that there seems to be some kind of handling for this case, doesn't it?

laeubi commented 1 year ago

Hm. That is a good question, but I don't actually know thinking

You can try it out live :-)

sorenlouv commented 10 months ago

Hi there,

Sorry for the late reply!

Two separate labels are not required. You will just need to remove the if statement from .github/workflows/backport.yml. I have updated the example in the readme so it now simply looks like this:

on:
  pull_request_target:
    types: ["labeled", "closed"]

jobs:
  backport:
    name: Backport PR
    runs-on: ubuntu-latest
    steps:
      - name: Backport Action
        uses: sqren/backport-github-action@v9.2.1
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          auto_backport_label_prefix: auto-backport-to-

This way you simply need to add a single label like auto-backport-to-production to backport to "production" branch.

sorenlouv commented 10 months ago

I'll close this issue but please don't hesitate to reach our if you have any questions

Krzmbrzl commented 10 months ago

That's great - thanks :+1: