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 workflow_job webhook #33694

Open
wants to merge 12 commits into
base: main
Choose a base branch
from

Conversation

ChristopherHX
Copy link
Contributor

Provide external Integration information about the Queue lossly based on https://docs.github.com/en/webhooks/webhook-events-and-payloads?actionType=completed#workflow_job

Naming conflicts between GitHub & Gitea are here, Blocked => Waiting, Waiting => Queued

Rationale Enhancement for ephemeral runners management #33570

fixup

initial working draft

Add more fields

More Complete
@GiteaBot GiteaBot added the lgtm/need 2 This PR needs two approvals by maintainers to be considered for merging. label Feb 23, 2025
@pull-request-size pull-request-size bot added the size/L Denotes a PR that changes 100-499 lines, ignoring generated files. label Feb 23, 2025
@github-actions github-actions bot added modifies/translation modifies/api This PR adds API routes or modifies them modifies/go Pull requests that update Go code modifies/templates This PR modifies the template files labels Feb 23, 2025
@ChristopherHX
Copy link
Contributor Author

ChristopherHX commented Feb 23, 2025

BTW, I might need help write tests these for webhooks. This can get complex for me.

Example Webhooks (two jobs, one depends on the other)
{
  "action": "queued",
  "workflow_job": {
    "id": 344,
    "run_id": 825,
    "run_url": "http://localhost:3000/test/private-repo/actions/runs/10",
    "name": "download",
    "labels": [
      "ephemeral"
    ],
    "run_attempt": 2,
    "head_sha": "a33e70fae58cce6ddf3a3e4c33e7be4fe5ea1533",
    "head_branch": "ephemeral",
    "runner_id": 0,
    "runner_name": "",
    "steps": null,
    "created_at": "2025-02-23T14:51:50Z",
    "started_at": "1970-01-01T00:00:00Z",
    "completed_at": "1970-01-01T00:00:00Z"
  },
  "repository": {
    "id": 65,
    "owner": {
      "id": 43,
      "login": "test",
      "login_name": "",
      "source_id": 0,
      "full_name": "",
      "email": "test@test.com",
      "avatar_url": "http://localhost:3000/avatars/b642b4217b34b1e8d3bd915fc65c4452",
      "html_url": "http://localhost:3000/test",
      "language": "",
      "is_admin": false,
      "last_login": "0001-01-01T00:00:00Z",
      "created": "2025-02-10T13:25:00+01:00",
      "restricted": false,
      "active": false,
      "prohibit_login": false,
      "location": "",
      "website": "",
      "description": "",
      "visibility": "public",
      "followers_count": 0,
      "following_count": 0,
      "starred_repos_count": 0,
      "username": "test"
    },
    "name": "private-repo",
    "full_name": "test/private-repo",
    "description": "",
    "empty": false,
    "private": true,
    "fork": false,
    "template": false,
    "parent": null,
    "mirror": false,
    "size": 33,
    "language": "",
    "languages_url": "http://localhost:3000/api/v1/repos/test/private-repo/languages",
    "html_url": "http://localhost:3000/test/private-repo",
    "url": "http://localhost:3000/api/v1/repos/test/private-repo",
    "link": "",
    "ssh_url": "christopher@localhost:test/private-repo.git",
    "clone_url": "http://localhost:3000/test/private-repo.git",
    "original_url": "",
    "website": "",
    "stars_count": 0,
    "forks_count": 0,
    "watchers_count": 1,
    "open_issues_count": 0,
    "open_pr_counter": 0,
    "release_counter": 0,
    "default_branch": "main",
    "archived": false,
    "created_at": "2025-02-10T20:40:44+01:00",
    "updated_at": "2025-02-23T19:37:50+01:00",
    "archived_at": "1970-01-01T01:00:00+01:00",
    "permissions": {
      "admin": true,
      "push": true,
      "pull": true
    },
    "has_issues": true,
    "internal_tracker": {
      "enable_time_tracker": true,
      "allow_only_contributors_to_track_time": true,
      "enable_issue_dependencies": true
    },
    "has_wiki": true,
    "has_pull_requests": true,
    "has_projects": true,
    "projects_mode": "all",
    "has_releases": true,
    "has_packages": true,
    "has_actions": true,
    "ignore_whitespace_conflicts": false,
    "allow_merge_commits": true,
    "allow_rebase": true,
    "allow_rebase_explicit": true,
    "allow_squash_merge": true,
    "allow_fast_forward_only_merge": true,
    "allow_rebase_update": true,
    "default_delete_branch_after_merge": false,
    "default_merge_style": "merge",
    "default_allow_maintainer_edit": false,
    "avatar_url": "",
    "internal": false,
    "mirror_interval": "",
    "object_format_name": "sha1",
    "mirror_updated": "0001-01-01T00:00:00Z",
    "repo_transfer": null,
    "topics": [],
    "licenses": null
  },
  "sender": {
    "id": 43,
    "login": "test",
    "login_name": "",
    "source_id": 0,
    "full_name": "",
    "email": "test@noreply.localhost",
    "avatar_url": "http://localhost:3000/avatars/b642b4217b34b1e8d3bd915fc65c4452",
    "html_url": "http://localhost:3000/test",
    "language": "",
    "is_admin": false,
    "last_login": "0001-01-01T00:00:00Z",
    "created": "2025-02-10T13:25:00+01:00",
    "restricted": false,
    "active": false,
    "prohibit_login": false,
    "location": "",
    "website": "",
    "description": "",
    "visibility": "public",
    "followers_count": 0,
    "following_count": 0,
    "starred_repos_count": 0,
    "username": "test"
  }
}
{
  "action": "completed",
  "workflow_job": {
    "id": 343,
    "run_id": 825,
    "run_url": "http://localhost:3000/test/private-repo/actions/runs/10",
    "name": "_",
    "labels": [
      "ephemeral"
    ],
    "run_attempt": 3,
    "head_sha": "a33e70fae58cce6ddf3a3e4c33e7be4fe5ea1533",
    "head_branch": "ephemeral",
    "conclusion": "success",
    "runner_id": 194,
    "runner_name": "",
    "steps": [
      {
        "name": "christopherhx/gitea-upload-artifact@v4",
        "number": 0,
        "conclusion": "success",
        "started_at": "2025-02-23T18:37:48Z",
        "completed_at": "2025-02-23T18:37:49Z"
      }
    ],
    "created_at": "2025-02-23T14:51:50Z",
    "started_at": "2025-02-23T18:37:48Z",
    "completed_at": "2025-02-23T18:37:49Z"
  },
  "repository": {
    "id": 65,
    "owner": {
      "id": 43,
      "login": "test",
      "login_name": "",
      "source_id": 0,
      "full_name": "",
      "email": "test@test.com",
      "avatar_url": "http://localhost:3000/avatars/b642b4217b34b1e8d3bd915fc65c4452",
      "html_url": "http://localhost:3000/test",
      "language": "",
      "is_admin": false,
      "last_login": "0001-01-01T00:00:00Z",
      "created": "2025-02-10T13:25:00+01:00",
      "restricted": false,
      "active": false,
      "prohibit_login": false,
      "location": "",
      "website": "",
      "description": "",
      "visibility": "public",
      "followers_count": 0,
      "following_count": 0,
      "starred_repos_count": 0,
      "username": "test"
    },
    "name": "private-repo",
    "full_name": "test/private-repo",
    "description": "",
    "empty": false,
    "private": true,
    "fork": false,
    "template": false,
    "parent": null,
    "mirror": false,
    "size": 33,
    "language": "",
    "languages_url": "http://localhost:3000/api/v1/repos/test/private-repo/languages",
    "html_url": "http://localhost:3000/test/private-repo",
    "url": "http://localhost:3000/api/v1/repos/test/private-repo",
    "link": "",
    "ssh_url": "christopher@localhost:test/private-repo.git",
    "clone_url": "http://localhost:3000/test/private-repo.git",
    "original_url": "",
    "website": "",
    "stars_count": 0,
    "forks_count": 0,
    "watchers_count": 1,
    "open_issues_count": 0,
    "open_pr_counter": 0,
    "release_counter": 0,
    "default_branch": "main",
    "archived": false,
    "created_at": "2025-02-10T20:40:44+01:00",
    "updated_at": "2025-02-23T19:37:49+01:00",
    "archived_at": "1970-01-01T01:00:00+01:00",
    "permissions": {
      "admin": true,
      "push": true,
      "pull": true
    },
    "has_issues": true,
    "internal_tracker": {
      "enable_time_tracker": true,
      "allow_only_contributors_to_track_time": true,
      "enable_issue_dependencies": true
    },
    "has_wiki": true,
    "has_pull_requests": true,
    "has_projects": true,
    "projects_mode": "all",
    "has_releases": true,
    "has_packages": true,
    "has_actions": true,
    "ignore_whitespace_conflicts": false,
    "allow_merge_commits": true,
    "allow_rebase": true,
    "allow_rebase_explicit": true,
    "allow_squash_merge": true,
    "allow_fast_forward_only_merge": true,
    "allow_rebase_update": true,
    "default_delete_branch_after_merge": false,
    "default_merge_style": "merge",
    "default_allow_maintainer_edit": false,
    "avatar_url": "",
    "internal": false,
    "mirror_interval": "",
    "object_format_name": "sha1",
    "mirror_updated": "0001-01-01T00:00:00Z",
    "repo_transfer": null,
    "topics": [],
    "licenses": null
  },
  "sender": {
    "id": 43,
    "login": "test",
    "login_name": "",
    "source_id": 0,
    "full_name": "",
    "email": "test@noreply.localhost",
    "avatar_url": "http://localhost:3000/avatars/b642b4217b34b1e8d3bd915fc65c4452",
    "html_url": "http://localhost:3000/test",
    "language": "",
    "is_admin": false,
    "last_login": "0001-01-01T00:00:00Z",
    "created": "2025-02-10T13:25:00+01:00",
    "restricted": false,
    "active": false,
    "prohibit_login": false,
    "location": "",
    "website": "",
    "description": "",
    "visibility": "public",
    "followers_count": 0,
    "following_count": 0,
    "starred_repos_count": 0,
    "username": "test"
  }
}
{
  "action": "in_progress",
  "workflow_job": {
    "id": 343,
    "run_id": 825,
    "run_url": "http://localhost:3000/test/private-repo/actions/runs/10",
    "name": "_",
    "labels": [
      "ephemeral"
    ],
    "run_attempt": 3,
    "head_sha": "a33e70fae58cce6ddf3a3e4c33e7be4fe5ea1533",
    "head_branch": "ephemeral",
    "runner_id": 194,
    "runner_name": "",
    "steps": [
      {
        "name": "christopherhx/gitea-upload-artifact@v4",
        "number": 0,
        "started_at": "1970-01-01T00:00:00Z",
        "completed_at": "1970-01-01T00:00:00Z"
      }
    ],
    "created_at": "2025-02-23T14:51:50Z",
    "started_at": "2025-02-23T18:37:48Z",
    "completed_at": "1970-01-01T00:00:00Z"
  },
  "repository": {
    "id": 65,
    "owner": {
      "id": 43,
      "login": "test",
      "login_name": "",
      "source_id": 0,
      "full_name": "",
      "email": "test@test.com",
      "avatar_url": "http://localhost:3000/avatars/b642b4217b34b1e8d3bd915fc65c4452",
      "html_url": "http://localhost:3000/test",
      "language": "",
      "is_admin": false,
      "last_login": "0001-01-01T00:00:00Z",
      "created": "2025-02-10T13:25:00+01:00",
      "restricted": false,
      "active": false,
      "prohibit_login": false,
      "location": "",
      "website": "",
      "description": "",
      "visibility": "public",
      "followers_count": 0,
      "following_count": 0,
      "starred_repos_count": 0,
      "username": "test"
    },
    "name": "private-repo",
    "full_name": "test/private-repo",
    "description": "",
    "empty": false,
    "private": true,
    "fork": false,
    "template": false,
    "parent": null,
    "mirror": false,
    "size": 33,
    "language": "",
    "languages_url": "http://localhost:3000/api/v1/repos/test/private-repo/languages",
    "html_url": "http://localhost:3000/test/private-repo",
    "url": "http://localhost:3000/api/v1/repos/test/private-repo",
    "link": "",
    "ssh_url": "christopher@localhost:test/private-repo.git",
    "clone_url": "http://localhost:3000/test/private-repo.git",
    "original_url": "",
    "website": "",
    "stars_count": 0,
    "forks_count": 0,
    "watchers_count": 1,
    "open_issues_count": 0,
    "open_pr_counter": 0,
    "release_counter": 0,
    "default_branch": "main",
    "archived": false,
    "created_at": "2025-02-10T20:40:44+01:00",
    "updated_at": "2025-02-23T19:37:46+01:00",
    "archived_at": "1970-01-01T01:00:00+01:00",
    "permissions": {
      "admin": true,
      "push": true,
      "pull": true
    },
    "has_issues": true,
    "internal_tracker": {
      "enable_time_tracker": true,
      "allow_only_contributors_to_track_time": true,
      "enable_issue_dependencies": true
    },
    "has_wiki": true,
    "has_pull_requests": true,
    "has_projects": true,
    "projects_mode": "all",
    "has_releases": true,
    "has_packages": true,
    "has_actions": true,
    "ignore_whitespace_conflicts": false,
    "allow_merge_commits": true,
    "allow_rebase": true,
    "allow_rebase_explicit": true,
    "allow_squash_merge": true,
    "allow_fast_forward_only_merge": true,
    "allow_rebase_update": true,
    "default_delete_branch_after_merge": false,
    "default_merge_style": "merge",
    "default_allow_maintainer_edit": false,
    "avatar_url": "",
    "internal": false,
    "mirror_interval": "",
    "object_format_name": "sha1",
    "mirror_updated": "0001-01-01T00:00:00Z",
    "repo_transfer": null,
    "topics": [],
    "licenses": null
  },
  "sender": {
    "id": 43,
    "login": "test",
    "login_name": "",
    "source_id": 0,
    "full_name": "",
    "email": "test@noreply.localhost",
    "avatar_url": "http://localhost:3000/avatars/b642b4217b34b1e8d3bd915fc65c4452",
    "html_url": "http://localhost:3000/test",
    "language": "",
    "is_admin": false,
    "last_login": "0001-01-01T00:00:00Z",
    "created": "2025-02-10T13:25:00+01:00",
    "restricted": false,
    "active": false,
    "prohibit_login": false,
    "location": "",
    "website": "",
    "description": "",
    "visibility": "public",
    "followers_count": 0,
    "following_count": 0,
    "starred_repos_count": 0,
    "username": "test"
  }
}
{
  "action": "waiting",
  "workflow_job": {
    "id": 344,
    "run_id": 825,
    "run_url": "http://localhost:3000/test/private-repo/actions/runs/10",
    "name": "download",
    "labels": [
      "ephemeral"
    ],
    "run_attempt": 2,
    "head_sha": "a33e70fae58cce6ddf3a3e4c33e7be4fe5ea1533",
    "head_branch": "ephemeral",
    "runner_id": 0,
    "runner_name": "",
    "steps": null,
    "created_at": "2025-02-23T14:51:50Z",
    "started_at": "1970-01-01T00:00:00Z",
    "completed_at": "1970-01-01T00:00:00Z"
  },
  "repository": {
    "id": 65,
    "owner": {
      "id": 43,
      "login": "test",
      "login_name": "",
      "source_id": 0,
      "full_name": "",
      "email": "test@test.com",
      "avatar_url": "http://localhost:3000/avatars/b642b4217b34b1e8d3bd915fc65c4452",
      "html_url": "http://localhost:3000/test",
      "language": "",
      "is_admin": false,
      "last_login": "0001-01-01T00:00:00Z",
      "created": "2025-02-10T13:25:00+01:00",
      "restricted": false,
      "active": false,
      "prohibit_login": false,
      "location": "",
      "website": "",
      "description": "",
      "visibility": "public",
      "followers_count": 0,
      "following_count": 0,
      "starred_repos_count": 0,
      "username": "test"
    },
    "name": "private-repo",
    "full_name": "test/private-repo",
    "description": "",
    "empty": false,
    "private": true,
    "fork": false,
    "template": false,
    "parent": null,
    "mirror": false,
    "size": 33,
    "language": "",
    "languages_url": "http://localhost:3000/api/v1/repos/test/private-repo/languages",
    "html_url": "http://localhost:3000/test/private-repo",
    "url": "http://localhost:3000/api/v1/repos/test/private-repo",
    "link": "",
    "ssh_url": "christopher@localhost:test/private-repo.git",
    "clone_url": "http://localhost:3000/test/private-repo.git",
    "original_url": "",
    "website": "",
    "stars_count": 0,
    "forks_count": 0,
    "watchers_count": 1,
    "open_issues_count": 0,
    "open_pr_counter": 0,
    "release_counter": 0,
    "default_branch": "main",
    "archived": false,
    "created_at": "2025-02-10T20:40:44+01:00",
    "updated_at": "2025-02-23T16:38:21+01:00",
    "archived_at": "1970-01-01T01:00:00+01:00",
    "permissions": {
      "admin": true,
      "push": true,
      "pull": true
    },
    "has_issues": true,
    "internal_tracker": {
      "enable_time_tracker": true,
      "allow_only_contributors_to_track_time": true,
      "enable_issue_dependencies": true
    },
    "has_wiki": true,
    "has_pull_requests": true,
    "has_projects": true,
    "projects_mode": "all",
    "has_releases": true,
    "has_packages": true,
    "has_actions": true,
    "ignore_whitespace_conflicts": false,
    "allow_merge_commits": true,
    "allow_rebase": true,
    "allow_rebase_explicit": true,
    "allow_squash_merge": true,
    "allow_fast_forward_only_merge": true,
    "allow_rebase_update": true,
    "default_delete_branch_after_merge": false,
    "default_merge_style": "merge",
    "default_allow_maintainer_edit": false,
    "avatar_url": "",
    "internal": false,
    "mirror_interval": "",
    "object_format_name": "sha1",
    "mirror_updated": "0001-01-01T00:00:00Z",
    "repo_transfer": null,
    "topics": [],
    "licenses": null
  },
  "sender": {
    "id": 43,
    "login": "test",
    "login_name": "",
    "source_id": 0,
    "full_name": "",
    "email": "test@noreply.localhost",
    "avatar_url": "http://localhost:3000/avatars/b642b4217b34b1e8d3bd915fc65c4452",
    "html_url": "http://localhost:3000/test",
    "language": "",
    "is_admin": false,
    "last_login": "0001-01-01T00:00:00Z",
    "created": "2025-02-10T13:25:00+01:00",
    "restricted": false,
    "active": false,
    "prohibit_login": false,
    "location": "",
    "website": "",
    "description": "",
    "visibility": "public",
    "followers_count": 0,
    "following_count": 0,
    "starred_repos_count": 0,
    "username": "test"
  }
}
{
  "action": "queued",
  "workflow_job": {
    "id": 343,
    "run_id": 825,
    "run_url": "http://localhost:3000/test/private-repo/actions/runs/10",
    "name": "_",
    "labels": [
      "ephemeral"
    ],
    "run_attempt": 2,
    "head_sha": "a33e70fae58cce6ddf3a3e4c33e7be4fe5ea1533",
    "head_branch": "ephemeral",
    "runner_id": 0,
    "runner_name": "",
    "steps": null,
    "created_at": "2025-02-23T14:51:50Z",
    "started_at": "1970-01-01T00:00:00Z",
    "completed_at": "1970-01-01T00:00:00Z"
  },
  "repository": {
    "id": 65,
    "owner": {
      "id": 43,
      "login": "test",
      "login_name": "",
      "source_id": 0,
      "full_name": "",
      "email": "test@test.com",
      "avatar_url": "http://localhost:3000/avatars/b642b4217b34b1e8d3bd915fc65c4452",
      "html_url": "http://localhost:3000/test",
      "language": "",
      "is_admin": false,
      "last_login": "0001-01-01T00:00:00Z",
      "created": "2025-02-10T13:25:00+01:00",
      "restricted": false,
      "active": false,
      "prohibit_login": false,
      "location": "",
      "website": "",
      "description": "",
      "visibility": "public",
      "followers_count": 0,
      "following_count": 0,
      "starred_repos_count": 0,
      "username": "test"
    },
    "name": "private-repo",
    "full_name": "test/private-repo",
    "description": "",
    "empty": false,
    "private": true,
    "fork": false,
    "template": false,
    "parent": null,
    "mirror": false,
    "size": 33,
    "language": "",
    "languages_url": "http://localhost:3000/api/v1/repos/test/private-repo/languages",
    "html_url": "http://localhost:3000/test/private-repo",
    "url": "http://localhost:3000/api/v1/repos/test/private-repo",
    "link": "",
    "ssh_url": "christopher@localhost:test/private-repo.git",
    "clone_url": "http://localhost:3000/test/private-repo.git",
    "original_url": "",
    "website": "",
    "stars_count": 0,
    "forks_count": 0,
    "watchers_count": 1,
    "open_issues_count": 0,
    "open_pr_counter": 0,
    "release_counter": 0,
    "default_branch": "main",
    "archived": false,
    "created_at": "2025-02-10T20:40:44+01:00",
    "updated_at": "2025-02-23T16:38:21+01:00",
    "archived_at": "1970-01-01T01:00:00+01:00",
    "permissions": {
      "admin": true,
      "push": true,
      "pull": true
    },
    "has_issues": true,
    "internal_tracker": {
      "enable_time_tracker": true,
      "allow_only_contributors_to_track_time": true,
      "enable_issue_dependencies": true
    },
    "has_wiki": true,
    "has_pull_requests": true,
    "has_projects": true,
    "projects_mode": "all",
    "has_releases": true,
    "has_packages": true,
    "has_actions": true,
    "ignore_whitespace_conflicts": false,
    "allow_merge_commits": true,
    "allow_rebase": true,
    "allow_rebase_explicit": true,
    "allow_squash_merge": true,
    "allow_fast_forward_only_merge": true,
    "allow_rebase_update": true,
    "default_delete_branch_after_merge": false,
    "default_merge_style": "merge",
    "default_allow_maintainer_edit": false,
    "avatar_url": "",
    "internal": false,
    "mirror_interval": "",
    "object_format_name": "sha1",
    "mirror_updated": "0001-01-01T00:00:00Z",
    "repo_transfer": null,
    "topics": [],
    "licenses": null
  },
  "sender": {
    "id": 43,
    "login": "test",
    "login_name": "",
    "source_id": 0,
    "full_name": "",
    "email": "test@noreply.localhost",
    "avatar_url": "http://localhost:3000/avatars/b642b4217b34b1e8d3bd915fc65c4452",
    "html_url": "http://localhost:3000/test",
    "language": "",
    "is_admin": false,
    "last_login": "0001-01-01T00:00:00Z",
    "created": "2025-02-10T13:25:00+01:00",
    "restricted": false,
    "active": false,
    "prohibit_login": false,
    "location": "",
    "website": "",
    "description": "",
    "visibility": "public",
    "followers_count": 0,
    "following_count": 0,
    "starred_repos_count": 0,
    "username": "test"
  }
}

@lunny lunny added this to the 1.24.0 milestone Feb 24, 2025
@lunny
Copy link
Member

lunny commented Feb 24, 2025

There are some examples in repo_webhook_test.go.

* add URL field
* add HTMLURL field
* fix run_url to return api url instead of html url
@ChristopherHX
Copy link
Contributor Author

ChristopherHX commented Feb 25, 2025

Notice for myself: Possible missing completed event for scenario: CancelPreviousJobs

Hmm, adding code to this method creates an import cycle if I call the webhook not so easy than I expected.

@@ -941,3 +944,114 @@ func notifyPackage(ctx context.Context, sender *user_model.User, pd *packages_mo
log.Error("PrepareWebhooks: %v", err)
}
}

func (*webhookNotifier) WorkflowJobStatusUpdate(ctx context.Context, repo *repo_model.Repository, sender *user_model.User, job *actions_model.ActionRunJob, task *actions_model.ActionTask) {
Copy link
Member

Choose a reason for hiding this comment

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

Can this webhook be customized from the UI?

Copy link
Contributor Author

@ChristopherHX ChristopherHX Mar 3, 2025

Choose a reason for hiding this comment

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

No, the UI can only subscribe / unsubscribe.

However testing this new webhook manually seems to do nothing / broken.

Do you mean webhooks like discord etc. that write text messages, then my codebase knowledge just ended here as I never used these

Copy link
Member

Choose a reason for hiding this comment

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

Yes and more. So that users cannot cancel to receive this kind of webhook messages. Maybe some people want to do that. I leant from commit status webhook that many people want to avoid to receive that webhook.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
lgtm/need 2 This PR needs two approvals by maintainers to be considered for merging. modifies/api This PR adds API routes or modifies them modifies/go Pull requests that update Go code modifies/templates This PR modifies the template files modifies/translation size/L Denotes a PR that changes 100-499 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants