Todos os produtos
Search
Central de documentação

Alibaba Cloud DevOps:Configurações de webhooks

Última atualização: Jun 28, 2026

Quando eventos específicos ocorrem em um repositório, como pushes de código ou revisões de código, os webhooks enviam uma requisição POST para uma URL designada. Use webhooks para acionar fluxos de trabalho de CI/CD, crie backups de imagens ou implantar em produção.

Descrição dos eventos

Evento de push

O sistema aciona um evento de push ao enviar código para o servidor.

Cabeçalho da requisição:

Codeup-Event: Push Hook

Conteúdo da requisição:

{
  "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*@cod***.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
}
                        

Evento de push de tag

A criação ou exclusão de uma tag aciona este evento.

Cabeçalho da requisição:

Codeup-Event: Tag Push Hook

Corpo da requisição:

{
  "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
}
                        

Evento de comentário

Adicionar um comentário a um commit ou a uma revisão de código dispara este evento. O campo object_attributes contém os dados do comentário.

Comentário de commit

Cabeçalho da requisição:

Codeup-Event: Note Hook

Corpo da requisição:

{
  "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"
    }
  }
}
                        

Comentário de revisão de código

Cabeçalho da requisição

Codeup-Event: Note Hook

Corpo da requisição

{
  "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
  }
}
                        

Evento de revisão de código

Este evento ocorre quando há criação de solicitação de revisão de código, atualize de status ou novo commit na branch de origem.

Cabeçalho da requisição:

Codeup-Event: Merge Request Hook

Corpo da requisição:

{
  "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.teambition.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"
  }
}

Exemplo de endpoint de webhook

Para testar o funcionamento dos webhooks, use um script simples de eco como o seguinte:

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

Salve o script como print_http_body.rb, escolha uma porta não utilizada (por exemplo, 8000) e execute ruby print_http_body.rb 8000. Defina a URL do webhook no Codeup como http://my.host:8000/ e clique em Test Hook. A saída será semelhante à seguinte:

{"before":"f2e2d577fab1562a6239b82721fd9827e05fdce6","after":"eb63d0277e64684236ebf8394b919230c4b8a286"}
teambition.com - - [14/May/2019:11:11:11 EDT] "POST / HTTP/1.1" 200 0
- -> /

Para acessar um servidor com suporte a Autenticação Básica HTTP, inclua o nome de usuário e a senha na URL do webhook. Por exemplo: http://userName:password@my.host:8080/project/test-job.