Skip to content

Unable to create Repo Ruleset if RefName fields are empty #2809

@dandehoon

Description

@dandehoon

I encountered an issue while using the go-github library. When creating a GitHub Ruleset, I realized that two fields were inadvertently omitted from the request payload. As a result, the API call fails to create the ruleset.

Expected Behavior:
The github.Ruleset struct should include all the necessary fields to create a GitHub Ruleset, ensuring that no required fields are omitted, allow users to create ruleset successfully without encountering any errors.

Steps to Reproduce:
Both conditions.ref_name.include and conditions.ref_name.exclude fields are required even when empty.

curl -L -X POST "https://api.github.com/repos/ORG/REPO/rulesets" \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer $GITHUB_TOKEN" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  -H "content-type: application/json" \
  -d '{
    "name": "NAME",
    "target": "branch",
    "enforcement": "active",
    "bypass_mode": "none",
    "conditions": {
      "ref_name": {
        "include": ["refs/heads/main"]
      }
    },
    "rules": []
  }'

Cause response:

{
  "message": "Validation Failed",
  "errors": [
    "Invalid target patterns: ''"
  ],
  "documentation_url": "https://docs.github.com/rest/repos/rules#create-repository-ruleset"
}

Correct request

curl -L -X POST "https://api.github.com/repos/ORG/REPO/rulesets" \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer $GITHUB_TOKEN" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  -H "content-type: application/json" \
  -d '{
    "name": "NAME",
    "target": "branch",
    "enforcement": "active",
    "bypass_mode": "none",
    "conditions": {
      "ref_name": {
        "include": ["refs/heads/main"],
        "exclude": []
      }
    },
    "rules": []
  }'

Additional Information:

  • go-github library version: v53.1.1-0.20230617123624-6a57598c53ef (master)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions