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

Support for negating is_default_branch #247

Open
ben-foxmoore opened this issue Dec 12, 2022 · 3 comments
Open

Support for negating is_default_branch #247

ben-foxmoore opened this issue Dec 12, 2022 · 3 comments

Comments

@ben-foxmoore
Copy link

From what I can tell, it's currently not possible to negate the value calculated by is_default_branch. This makes it harder to disable a tag for all branches other than the default branch.

This could be supported by either adding a specific is_not_default_branch or with a not (...) helper (though given that is_default_branch is the only Global expression that this would work with, it seems rather pointless). An alternative, but probably larger change could be to support a disable attribute that reverses the logic used by enable.

If I've overlooked a way to do this that already exists, please let me know! Happy to work on a PR to support this if some guidance on preferred solution can be given.

Example workflow

The example workflow below has two tags - one which uses is_default_branch and adds the this-is-main- prefix, and a second which adds the this-is-not- prefix. Currently the only way to do this is to fall back to standard Github Workflow expressions.

name: test-docker-tags

on:
  push:
    branches:
      - '**'

jobs:
  docker:
    runs-on: ubuntu-latest
    steps:
      -
        name: Docker meta
        id: meta
        uses: docker/metadata-action@v4
        with:
          images: |
            name/app
          tags: |
            type=ref,event=branch,enable={{is_default_branch}},prefix=this-is-main-
            type=ref,event=branch,enable=${{ github.ref != format('refs/heads/{0}', 'master') }},prefix=this-is-not-
@aalvarezaph
Copy link

This would be a nice addition IMO

@crazy-max
Copy link
Member

I think this should work:

type=ref,event=branch,enable={{is_default_branch}},prefix=this-is-main-
type=ref,event=branch,enable={{#if is_default_branch}}false{{else}}true{{/if}},prefix=this-is-not-

@flokoe
Copy link

flokoe commented May 31, 2024

Hi there,

Unfortunately, the solution with the Handlebars conditional does not work.

It appears that the # sign in the template is interpreted as a comment and therefore leaves a broken Handlebars template. I get the following error message (the reason is the missing closing handlebar delimiter in the enable attribute):

Processing tags input
  type=ref,event=pr,enable={{,prefix=pr-,priority=600
Processing flavor input
Error: Parse error on line 1:
{{
--^
Expecting 'ID', 'STRING', 'NUMBER', 'BOOLEAN', 'UNDEFINED', 'NULL', 'DATA', got 'EOF'

The following workaround via GitHub expressions works:

type=ref,event=pr,enable=${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/master' }}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants