Webhooks for a code repository call a specified URL when specific events occur, enabling automated actions such as CI builds and deployments. This topic describes how to configure webhooks in Codeup and explains the supported event types and parameters.
Features
When a subscribed event occurs, Codeup sends an HTTP POST request with a data payload to the specified webhook URL. Webhooks can trigger CI builds, back up images, or deploy to production environments. To set up a webhook:
-
Click Settings in the left-side navigation pane and then select Webhooks.
-
Click Create Webhook to open the dialog box.
-
Enter the receiver URL.
-
(Optional) Enter a Secret Token. This token is sent in the
X-Codeup-TokenHTTP request header, which the receiver can use to verify the request's authenticity. -
Select the triggers for the webhook. Available triggers include push events, tag push events, comment events, and merge request events.
-
(Optional) Enter a description.
-
Click OK to create the webhook.
The egress IP addresses for Codeup are 47.98.116.130 and 47.111.186.29. If your receiving server requires a network security whitelist, add these IP addresses.
Events
Push event
A push event occurs when a client pushes code to the server. Pushing a tag does not trigger a push event.
Request header
Codeup-Event: Push Hook
Request body
{
"object_kind": "push",
"before": "f2e2d577fab1562a6239b82721fd9827e05fdce6",
"after": "eb63d0277e64684236ebf8394b919230c4b8a286",
"ref": "refs/heads/master",
"user_id": 4,
"user_name": "Codeup",
"user_email": "cod***@aliyun.com",
"project_id": 15,
"repository": {
"name": "Diaspora",
"url": "gi*@codeup.aliyun.com:demo/demo.git",
"description": "",
"homepage": "https://codeup.aliyun.com/demo/demo",
"git_http_url":"https://codeup.aliyun.com/demo/demo.git",
"git_ssh_url":"gi*@codeup.aliyun.com:demo/demo.git",
"visibility_level":0
},
"commits": [
{
"id": "f2e2d577fab1562a6239b82721fd9827e05fdce6",
"message": "Update readme.",
"timestamp": "2019-01-01T00:08:00+08:00",
"url": "https://codeup.aliyun.com/demo/demo/commits/f2e2d577fab1562a6239b82721fd9827e05fdce6",
"author": {
"name": "Codeup",
"email": "cod***@aliyun.com"
}
},
{
"id": "eb63d0277e64684236ebf8394b919230c4b8a286",
"message": "fixed readme",
"timestamp": "2019-01-03T23:36:29+08:00",
"url": "https://codeup.aliyun.com/demo/demo/commits/eb63d0277e64684236ebf8394b919230c4b8a286",
"author": {
"name": "Codeup",
"email": "cod***@aliyun.com"
}
}
],
"total_commits_count": 2
}
Tag push event
This event occurs when a tag is created or deleted.
Request header
Codeup-Event: Tag Push Hook
Request body
{
"object_kind": "tag_push",
"ref": "refs/tags/v1.0.0",
"before": "0000000000000000000000000000000000000000",
"after": "eb63d0277e64684236ebf8394b919230c4b8a286",
"user_id": 1,
"user_name": "Codeup",
"project_id": 1,
"repository": {
"name": "demo",
"url": "ssh://gi*@codeup.aliyun.com/demo/demo.git",
"description": "",
"homepage": "https://codeup.aliyun.com/demo/demo",
"git_http_url":"https://codeup.aliyun.com/demo/demo.git",
"git_ssh_url":"gi*@codeup.aliyun.com:demo/demo.git",
"visibility_level":0
},
"commits": [],
"total_commits_count": 0
}
Comment event
A comment event occurs when a comment is posted on a commit or in a code review. The comment data is in the object_attributes field.
Commit comment
Request header
Codeup-Event: Note Hook
Request body
{
"object_kind": "note",
"user": {
"name": "Codeup",
"username": "Codeup",
"avatar_url": ""
},
"project_id": 5,
"repository": {
"name": "demo",
"url": "https://codeup.aliyun.com/demo/demo.git",
"description": "demo.",
"homepage": "https://codeup.aliyun.com/demo/demo"
},
"object_attributes": {
"id": 1243,
"note": "This is a commit comment. How does this work?",
"noteable_type": "Commit",
"author_id": 1,
"created_at": "2019-05-17 18:08:09 UTC",
"updated_at": "2019-05-17 18:08:09 UTC",
"project_id": 5,
"attachment":null,
"line_code": "bec9703f7a456cd2b4ab5fb3220ae016e3e394e3_0_1",
"commit_id": "cfe32cf61b73a0d5e9f13e774abde7ff789b1660",
"noteable_id": null,
"system": false,
"st_diff": {
"diff": "--- /dev/null\n+++ b/six\n@@ -0,0 +1 @@\n+Subproject commit 409f37c4f05865e4fb208c771485f211a22c4c2d\n",
"new_path": "six",
"old_path": "six",
"a_mode": "0",
"b_mode": "160000",
"new_file": true,
"renamed_file": false,
"deleted_file": false
},
"url": "https://codeup.aliyun.com/demo/demo/commits/cfe32cf61b73a0d5e9f13e774abde7ff789b1660#note_1243"
},
"commit": {
"id": "cfe32cf61b73a0d5e9f13e774abde7ff789b1660",
"message": "Add submodule",
"timestamp": "2019-02-27T10:06:20+02:00",
"url": "https://codeup.aliyun.com/demo/demo/commits/cfe32cf61b73a0d5e9f13e774abde7ff789b1660",
"author": {
"name": "Demo",
"email": "de**@gmail.com"
}
}
}
Merge request comment (Legacy)
Request header
Codeup-Event: Note Hook
Request body
{
"object_kind": "note",
"user": {
"name": "Codeup",
"username": "codeup",
"avatar_url": ""
},
"project_id": 5,
"repository": {
"name": "demo",
"url": "https://codeup.aliyun.com/demo/demo/.git",
"description": "Aut reprehenderit ut est.",
"homepage": "https://codeup.aliyun.com/demo/demo"
},
"object_attributes": {
"id": 1244,
"note": "This MR needs work.",
"noteable_type": "MergeRequest",
"author_id": 1,
"created_at": "2019-05-17 18:21:36 UTC",
"updated_at": "2019-05-17 18:21:36 UTC",
"project_id": 5,
"attachment": null,
"line_code": null,
"commit_id": "",
"noteable_id": 7,
"system": false,
"st_diff": null,
"url": "https://codeup.aliyun.com/demo/demo/merge_requests/1#note_1244"
},
"merge_request": {
"id": 7,
"target_branch": "markdown",
"source_branch": "master",
"source_project_id": 5,
"author_id": 8,
"assignee_id": 28,
"title": "Tempora et eos debitis quae laborum et.",
"created_at": "2019-03-01 20:12:53 UTC",
"updated_at": "2019-03-21 18:27:27 UTC",
"milestone_id": 11,
"state": "opened",
"merge_status": "cannot_be_merged",
"target_project_id": 5,
"iid": 1,
"description": "Et voluptas corrupti assumenda temporibus. Architecto cum animi eveniet amet asperiores. Vitae numquam voluptate est natus sit et ad id.",
"position": 0,
"locked_at": null,
"source": {
"name": "demo",
"ssh_url": "gi*@codeup.aliyun.com:demo/demo.git",
"http_url": "https://codeup.aliyun.com/demo/demo.git",
"web_url": "https://codeup.aliyun.com/demo/demo",
"namespace": "demo",
"visibility_level": 10
},
"target": {
"name": "demo",
"ssh_url": "gi*@codeup.aliyun.com:demo/demo.git",
"http_url": "https://codeup.aliyun.com/demo/demo.git",
"web_url": "https://codeup.aliyun.com/demo/demo",
"namespace": "demo",
"visibility_level": 10
},
"last_commit": {
"id": "562e173be03b8ff2efb05345d12df18815438a4b",
"message": "Merge branch 'another-branch' into 'master'\n\nCheck in this test\n",
"timestamp": "2019-04-08T21: 00:25-07:00",
"url": "https://codeup.aliyun.com/demo/demo/commits/562e173be03b8ff2efb05345d12df18815438a4b",
"url": "https://codeup.aliyun.com/demo/demo/commits/562e173be03b8ff2efb05345d12df18815438a4b",
"author": {
"name": "Codeup",
"email": "cod***@aliyun.com"
}
},
"work_in_progress": false
}
}
Merge request comment (New)
The new version of merge requests began rolling out in August 2023. For an introduction to the new version, see code review and merge.
Request header
Codeup-Event: Note Hook
Request body
{
"commit": null,
"merge_request": {
"author_aliyun_pk": "297541067872644100",
"author_id": 19271,
"biz_id": "4901786402db48aaab6450b8d12480d2",
"created_at": "2023-07-10T14:25:30+08:00",
"description": "",
"is_update_by_push": false,
"last_commit": {
"author": {
"email": "te**@test.com",
"name": "test"
},
"id": "b4f8b799e9698278efb7d23bfae4fff17252eba3",
"message": "Update 2.txt",
"timestamp": "2023-06-13T10:09:53+08:00",
"url": "https://codeup.aliyun.com/6369b7bb801ae2503bb96f8b/test_new_cr/commits/b4f8b799e9698278efb7d23bfae4fff17252eba3"
},
"local_id": 247,
"merge_status": "cannot_be_merged",
"project_id": 609042,
"source": {
"http_url": "https://codeup.aliyun.com/6369b7bb801ae2503bb96f8b/test_new_cr.git",
"name": "test_new_crd",
"namespace": "6369b7bb801ae2503bb96f8b",
"ssh_url": "gi*@codeup.aliyun.com:6369b7bb801ae2503bb96f8b/test_new_cr.git",
"visibility_level": 0,
"web_url": "https://codeup.aliyun.com/6369b7bb801ae2503bb96f8b/test_new_cr"
},
"source_branch": "test_xxx",
"source_project_id": 609042,
"source_type": "BRANCH",
"state": "opened",
"target": {
"http_url": "https://codeup.aliyun.com/6369b7bb801ae2503bb96f8b/test_new_cr.git",
"name": "test_new_crd",
"namespace": "6369b7bb801ae2503bb96f8b",
"ssh_url": "gi*@codeup.aliyun.com:6369b7bb801ae2503bb96f8b/test_new_cr.git",
"visibility_level": 0,
"web_url": "https://codeup.aliyun.com/6369b7bb801ae2503bb96f8b/test_new_cr"
},
"target_branch": "master",
"target_project_id": 609042,
"title": "Update 2.txt",
"updated_at": "2023-07-10T14:25:30+08:00",
"url": "https://codeup.aliyun.com/6369b7bb801ae2503bb96f8b/test_new_cr/change/247",
"work_in_progress": false
},
"object_attributes": {
"author_aliyun_pk": "297541067872644100",
"author_id": 19271,
"closed": 0,
"commit_id": "b4f8b799e9698278efb7d23bfae4fff17252eba3",
"created_at": "2023-07-10T14:25:39+08:00",
"file_path": "1.txt",
"line_code": "9",
"note": "xaxas",
"note_biz_id": "051efb1b3aef435a968bca00e7592c32",
"note_type": "INLINE_COMMENT",
"noteable_id": "29bd1475cffd4c1cb1f17f604fc4e104",
"noteable_type": "MergeRequest",
"project_id": 609042,
"related_biz_id": "29bd1475cffd4c1cb1f17f604fc4e104",
"related_patch_set": {
"branch": "test_xxx",
"commit_id": "b4f8b799e9698278efb7d23bfae4fff17252eba3",
"create_time": "2023-07-10T14:25:30+08:00",
"mr_biz_id": "4901786402db48aaab6450b8d12480d2",
"patch_set_biz_id": "29bd1475cffd4c1cb1f17f604fc4e104",
"patch_set_name": "Version 1",
"version_no": 1
},
"related_type": "CODE_REVIEW_PATCH_SET",
"state": "OPENED",
"system": false,
"updated_at": "2023-07-10T14:25:39+08:00",
"url": "https://codeup.aliyun.com/6369b7bb801ae2503bb96f8b/test_new_cr/change/247?comment=051efb1b3aef435a968bca00e7592c32"
},
"object_kind": "note",
"repository": {
"git_http_url": "https://codeup.aliyun.com/6369b7bb801ae2503bb96f8b/test_new_cr.git",
"git_ssh_url": "gi*@codeup-proxy.aliyun.com:6369b7bb801ae2503bb96f8b/test_new_cr.git",
"homepage": "https://codeup.aliyun.com/6369b7bb801ae2503bb96f8b/test_new_cr",
"name": "test_new_crd",
"url": "https://codeup.aliyun.com/6369b7bb801ae2503bb96f8b/test_new_cr.git"
},
"user": {
"aliyun_pk": "297541067872644100",
"avatar_url": "https://tcs-devops.aliyuncs.com/thumbnail/112n76790347a42173fdca7ace673b123a59/w/100/h/100",
"extern_uid": "6369b7b14f6a9c17e247d43e",
"name": "test",
"username": "test"
},
"version": "new"
}
Merge request event
This event occurs when a merge request is created, updated, or receives a new commit on its source branch. Event actions include:
-
Creating a merge request.
-
Updating a merge request.
-
Approving a merge request.
-
Merging a merge request.
-
Closing a merge request.
-
Reopening a merge request.
Merge request event (Legacy)
Request header
Codeup-Event: Merge Request Hook
Request body
{
"object_kind": "merge_request",
"user": {
"name": "Codeup",
"username": "codeup",
"avatar_url": ""
},
"object_attributes": {
"id": 99,
"target_branch": "master",
"source_branch": "ms-viewport",
"source_project_id": 14,
"author_id": 51,
"assignee_id": 6,
"title": "MS-Viewport",
"created_at": "2019-09-03T17:23:00Z",
"updated_at": "2019-09-03T17:23:00Z",
"st_commits": null,
"st_diffs": null,
"milestone_id": null,
"state": "opened",
"merge_status": "unchecked",
"target_project_id": 14,
"iid": 1,
"description": "",
"source": {
"name": "demo",
"ssh_url": "gi*@codeup.aliyun.com:demo/demo.git",
"http_url": "https://codeup.aliyun.com/demo/demo.git",
"web_url": "https://codeup.aliyun.com/demo/demo",
"namespace": "demo",
"visibility_level": 10
},
"target": {
"name": "demo",
"ssh_url": "gi*@codeup.aliyun.com:demo/demo.git",
"http_url": "https://codeup.aliyun.com/demo/demo.git",
"web_url": "https://codeup.aliyun.com/demo/demo",
"namespace": "demo",
"visibility_level": 10
},
"last_commit": {
"id": "da1560886d4f094c3e6c9ef40349f7d38b5d27d7",
"message": "fixed readme",
"timestamp": "2019-02-03T23:36:29+02:00",
"url": "https://codeup.aliyun.com/demo/demo/commits/da1560886d4f094c3e6c9ef40349f7d38b5d27d7",
"author": {
"name": "Codeup",
"email": "cod***@aliyun.com"
}
},
"work_in_progress": false,
"url": "https://codeup.aliyun.com/demo/demo/merge_requests/1",
"action": "open"
}
}
Merge request event (New)
The new version of merge requests began rolling out in August 2023. For an introduction to the new version, see code review and merge.
Request header
Codeup-Event: Merge Request Hook
Request body
{
"object_attributes": {
"action": "open",
"author_aliyun_pk": "297541067872644100",
"author_id": 19271,
"biz_id": "4901786402db48aaab6450b8d12480d2",
"created_at": "2023-07-10T14:25:30+08:00",
"description": "",
"is_update_by_push": false,
"last_commit": {
"author": {
"email": "te**@test.com",
"name": "test"
},
"id": "b4f8b799e9698278efb7d23bfae4fff17252eba3",
"message": "Update 2.txt",
"timestamp": "2023-06-13T10:09:53+08:00",
"url": "https://codeup.aliyun.com/6369b7bb801ae2503bb96f8b/test_new_cr/commits/b4f8b799e9698278efb7d23bfae4fff17252eba3"
},
"local_id": 247,
"merge_status": "unchecked",
"project_id": 609042,
"source": {
"http_url": "https://codeup.aliyun.com/6369b7bb801ae2503bb96f8b/test_new_cr.git",
"name": "test_new_crd",
"namespace": "6369b7bb801ae2503bb96f8b",
"ssh_url": "gi*@codeup.aliyun.com:6369b7bb801ae2503bb96f8b/test_new_cr.git",
"visibility_level": 0,
"web_url": "https://codeup.aliyun.com/6369b7bb801ae2503bb96f8b/test_new_cr"
},
"source_branch": "test_xxx",
"source_project_id": 609042,
"source_type": "BRANCH",
"state": "opened",
"target": {
"http_url": "https://codeup.aliyun.com/6369b7bb801ae2503bb96f8b/test_new_cr.git",
"name": "test_new_crd",
"namespace": "6369b7bb801ae2503bb96f8b",
"ssh_url": "gi*@codeup.aliyun.com:6369b7bb801ae2503bb96f8b/test_new_cr.git",
"visibility_level": 0,
"web_url": "https://codeup.aliyun.com/6369b7bb801ae2503bb96f8b/test_new_cr"
},
"target_branch": "master",
"target_project_id": 609042,
"title": "Update 2.txt",
"updated_at": "2023-07-10T14:25:30+08:00",
"url": "https://codeup.aliyun.com/6369b7bb801ae2503bb96f8b/test_new_cr/change/247",
"work_in_progress": false
},
"object_kind": "merge_request",
"repository": {
"git_http_url": "https://codeup.aliyun.com/6369b7bb801ae2503bb96f8b/test_new_cr.git",
"git_ssh_url": "gi*@codeup.aliyun.com:6369b7bb801ae2503bb96f8b/test_new_cr.git",
"homepage": "https://codeup.aliyun.com/6369b7bb801ae2503bb96f8b/test_new_cr",
"name": "test_new_crd",
"url": "https://codeup.aliyun.com/6369b7bb801ae2503bb96f8b/test_new_cr.git"
},
"user": {
"aliyun_pk": "297541067872644100",
"avatar_url": "https://tcs-devops.aliyuncs.com/thumbnail/112n76790347a42173fdca7ace673b123a59/w/100/h/100",
"extern_uid": "6369b7b14f6a9c17e247d43e",
"name": "test",
"username": "test"
},
"version": "new"
}
Webhook receiver example
You can use a simple echo script to view the webhook output for testing.
Save the following script as print_http_body.rb:
require 'webrick'
server = WEBrick::HTTPServer.new(:Port => ARGV.first)
server.mount_proc '/' do |req, res|
puts req.body
end
trap 'INT' do
server.shutdown
end
server.start
Choose an unused port, such as 8000, and run the script: ruby print_http_body.rb 8000. Then, set the webhook URL in Codeup to http://my.host:8000/.
In Codeup, click Test Hook. Output similar to the following appears in your terminal:
{"before":"f2e2d577fab1562a6239b82721fd9827e05fdce6","after":"eb63d0277e64684236ebf8394b919230c4b8a286"}
aliyun.com - - [14/May/2019:11:11:11 EDT] "POST / HTTP/1.1" 200 0
- -> /
Using HTTP Basic Authentication
When you trigger a server that supports HTTP Basic Authentication, you can include the username and password in the URL. The webhook URL format is: http://userName:password@my.host:8080/project/test-job.