{"id":25030,"date":"2023-06-06T13:49:00","date_gmt":"2023-06-06T11:49:00","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=25030"},"modified":"2025-01-24T10:42:42","modified_gmt":"2025-01-24T09:42:42","slug":"using-webhooks-from-gitlab-to-execute-external-code-and-tools","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/using-webhooks-from-gitlab-to-execute-external-code-and-tools\/","title":{"rendered":"Using WebHook&#8217;s from GitLab to execute external code and tools"},"content":{"rendered":"\n<p>by Alexandre Nestor<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-introduction\">Introduction<\/h2>\n\n\n\n<p>WebHooks are HTTP callbacks that are triggered by events. In case of <a href=\"https:\/\/gitlab.com\/\">GitLab<\/a> these can be events like pushing some code, or creating an issue, or pushing some comments.<\/p>\n\n\n\n<p>In this quick post I will explain how to add a WebHook to a project and how to execute some external code when a Gitlab event is triggered.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-vm-preparation\">VM preparation<\/h3>\n\n\n\n<p>Do not forget to open the firewall port for <code>TCP<\/code> protocol, on <code>8200<\/code> port must be opened.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n&#x5B;root@wb ~]# firewall-cmd --list-all\npublic (active)\n  target: default\n  icmp-block-inversion: no\n  interfaces: ens3\n  sources:\n  services: dhcpv6-client http ssh\n  ports:\n  protocols:\n  forward: no\n  masquerade: no\n  forward-ports:\n  source-ports:\n  icmp-blocks:\n  rich rules:\n\n&#x5B;root@wb ~]# firewall-cmd --zone=public --add-port=8200\/tcp\nsuccess\n\n&#x5B;root@wb ~]# firewall-cmd --list-all\npublic (active)\n  target: default\n  icmp-block-inversion: no\n  interfaces: ens3\n  sources:\n  services: dhcpv6-client http ssh\n  ports: 8200\/tcp\n  protocols:\n  forward: no\n  masquerade: no\n  forward-ports:\n  source-ports:\n  icmp-blocks:\n  rich rules:\n  \n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-python-code\">Python code<\/h3>\n\n\n\n<p>An easy way is to use <code><a href=\"https:\/\/flask.palletsprojects.com\/\">Flask<\/a><\/code>, to retrieve the <code>HTTP<\/code> frame.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n#\u00a0app.py \nfrom flask import Flask, request, abort\nimport json\n\napp = Flask(__name__)\n\n@app.route(&#039;\/my_webhook&#039;, methods=&#x5B;&#039;POST&#039;])\ndef my_webhook():\n    if request.method == &#039;POST&#039;:\n        print(json.dumps(request.json, indent=2))\n        return &#039;success&#039;, 200\n    else:\n        abort(400)\n\nif __name__ == &#039;__main__&#039;:\n    app.run(host=&#039;0.0.0.0&#039;, port=8200, debug=True)\n<\/pre><\/div>\n\n\n<ul class=\"wp-block-list\">\n<li>The <code>Flask<\/code> will launch a http server which is listen on all interfaces (<code>0.0.0.0<\/code>) en on port <code>8200<\/code><\/li>\n\n\n\n<li>The path to be used in the <code>HTTP POST<\/code> call is <code>my_webhook<\/code><\/li>\n\n\n\n<li>Also I used the debug mode to get the most traces.<\/li>\n\n\n\n<li>The <code>Flask<\/code> application is waiting a <code>POST<\/code> request (line 10). And answer <code>success<\/code>. if the POST request is received.<\/li>\n\n\n\n<li>Otherwise, return <code>400<\/code> HTTP code.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-start-the-flask-application\">Start the Flask application<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n(venv) &#x5B;opc@wb ~]$ python app.py\n * Serving Flask app &#039;app&#039; (lazy loading)\n * Environment: production\n   WARNING: This is a development server. Do not use it in a production deployment.\n   Use a production WSGI server instead.\n * Debug mode: on\n * Running on all addresses.\n   WARNING: This is a development server. Do not use it in a production deployment.\n * Running on http:\/\/172.168.0.40:8200\/ (Press CTRL+C to quit)\n * Restarting with stat\n * Debugger is active!\n * Debugger PIN: 295-390-357\n\n\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-define-the-gitlab-webhook\">Define the GitLab WebHook<\/h3>\n\n\n\n<p>You must have the role <code>maitainer<\/code> on your project, in order to define WebHooks<\/p>\n\n\n\n<p>Select <strong>Settings<\/strong> -&gt; <strong>WebHooks<\/strong> from the left GitLab Menu<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"435\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/image-1-1024x435.png\" alt=\"\" class=\"wp-image-25036\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/image-1-1024x435.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/image-1-300x127.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/image-1-768x326.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/image-1-1536x652.png 1536w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/image-1-2048x869.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Once the WebHook was saved it can be tested by pressing the <strong>Test<\/strong> button. I choose to test a <strong>Push<\/strong> event which is triggered at each push is issued from <strong>Git<\/strong>. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"583\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/image-2-1024x583.png\" alt=\"\" class=\"wp-image-25037\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/image-2-1024x583.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/image-2-300x171.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/image-2-768x438.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/image-2-1536x875.png 1536w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/image-2-2048x1167.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>On the VM terminal we get the json trace of the <code>POST<\/code> request: <\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n..........\n* Debugger is active!\n* Debugger PIN: 295-390-357\n{\n  &quot;object_kind&quot;: &quot;push&quot;,     =====&gt; Event type PUSH \n  &quot;event_name&quot;: &quot;push&quot;,\n  &quot;before&quot;: &quot;6aa30335b09*****53183fb28bb84aada5cf&quot;,\n  &quot;after&quot;: &quot;a48e187ef217a******62498378e5023d355&quot;,\n  &quot;ref&quot;: &quot;refs\/heads\/main&quot;,\n  &quot;checkout_sha&quot;: &quot;a48e187ef21********9490562498378e5023d355&quot;,\n  &quot;message&quot;: null,\n  &quot;user_id&quot;: 1177**25,\n  &quot;user_name&quot;: &quot;your username &quot;,\n  &quot;user_username&quot;: &quot;your.username&quot;,\n  &quot;user_email&quot;: &quot;&quot;,\n  &quot;user_avatar&quot;: &quot;https:\/\/gitlab.com\/uploads\/-\/system\/user\/avatar\/****\/avatar.png&quot;,\n  &quot;project_id&quot;: 3887**93,\n  &quot;project&quot;: {\n    &quot;id&quot;: 38878**3,\n    .....\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-conclusion\">Conclusion<\/h3>\n\n\n\n<p>The use of <strong>WebHooks<\/strong> from <strong>GitLab<\/strong> to run external code represents another facility in <strong>DevOps<\/strong> tools.<\/p>\n\n\n\n<p>Their implementation is easy and immediate. An typical example of use case is the integration with <strong>Ansible Automation Controller<\/strong>, to run Ansible jobs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-references\">References<\/h3>\n\n\n\n<p><a href=\"https:\/\/docs.gitlab.com\/ee\/user\/project\/integrations\/webhooks.html\">https:\/\/docs.gitlab.com\/ee\/user\/project\/integrations\/webhooks.html<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>by Alexandre Nestor Introduction WebHooks are HTTP callbacks that are triggered by events. In case of GitLab these can be events like pushing some code, or creating an issue, or pushing some comments. In this quick post I will explain how to add a WebHook to a project and how to execute some external code [&hellip;]<\/p>\n","protected":false},"author":27,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1321,1320],"tags":[2010,2648],"type_dbi":[],"class_list":["post-25030","post","type-post","status-publish","format-standard","hentry","category-ansible","category-devops","tag-git","tag-gitlab"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Using WebHook&#039;s from GitLab to execute external code and tools - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/using-webhooks-from-gitlab-to-execute-external-code-and-tools\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using WebHook&#039;s from GitLab to execute external code and tools\" \/>\n<meta property=\"og:description\" content=\"by Alexandre Nestor Introduction WebHooks are HTTP callbacks that are triggered by events. In case of GitLab these can be events like pushing some code, or creating an issue, or pushing some comments. In this quick post I will explain how to add a WebHook to a project and how to execute some external code [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/using-webhooks-from-gitlab-to-execute-external-code-and-tools\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-06-06T11:49:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-01-24T09:42:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/image-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2526\" \/>\n\t<meta property=\"og:image:height\" content=\"1072\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Oracle Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Oracle Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/using-webhooks-from-gitlab-to-execute-external-code-and-tools\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/using-webhooks-from-gitlab-to-execute-external-code-and-tools\\\/\"},\"author\":{\"name\":\"Oracle Team\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/66ab87129f2d357f09971bc7936a77ee\"},\"headline\":\"Using WebHook&#8217;s from GitLab to execute external code and tools\",\"datePublished\":\"2023-06-06T11:49:00+00:00\",\"dateModified\":\"2025-01-24T09:42:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/using-webhooks-from-gitlab-to-execute-external-code-and-tools\\\/\"},\"wordCount\":280,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/using-webhooks-from-gitlab-to-execute-external-code-and-tools\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2023\\\/05\\\/image-1-1024x435.png\",\"keywords\":[\"Git\",\"GitLab\"],\"articleSection\":[\"Ansible\",\"DevOps\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/using-webhooks-from-gitlab-to-execute-external-code-and-tools\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/using-webhooks-from-gitlab-to-execute-external-code-and-tools\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/using-webhooks-from-gitlab-to-execute-external-code-and-tools\\\/\",\"name\":\"Using WebHook's from GitLab to execute external code and tools - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/using-webhooks-from-gitlab-to-execute-external-code-and-tools\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/using-webhooks-from-gitlab-to-execute-external-code-and-tools\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2023\\\/05\\\/image-1-1024x435.png\",\"datePublished\":\"2023-06-06T11:49:00+00:00\",\"dateModified\":\"2025-01-24T09:42:42+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/66ab87129f2d357f09971bc7936a77ee\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/using-webhooks-from-gitlab-to-execute-external-code-and-tools\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/using-webhooks-from-gitlab-to-execute-external-code-and-tools\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/using-webhooks-from-gitlab-to-execute-external-code-and-tools\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2023\\\/05\\\/image-1-1024x435.png\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2023\\\/05\\\/image-1-1024x435.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/using-webhooks-from-gitlab-to-execute-external-code-and-tools\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using WebHook&rsquo;s from GitLab to execute external code and tools\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/66ab87129f2d357f09971bc7936a77ee\",\"name\":\"Oracle Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"caption\":\"Oracle Team\"},\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/oracle-team\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Using WebHook's from GitLab to execute external code and tools - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/using-webhooks-from-gitlab-to-execute-external-code-and-tools\/","og_locale":"en_US","og_type":"article","og_title":"Using WebHook's from GitLab to execute external code and tools","og_description":"by Alexandre Nestor Introduction WebHooks are HTTP callbacks that are triggered by events. In case of GitLab these can be events like pushing some code, or creating an issue, or pushing some comments. In this quick post I will explain how to add a WebHook to a project and how to execute some external code [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/using-webhooks-from-gitlab-to-execute-external-code-and-tools\/","og_site_name":"dbi Blog","article_published_time":"2023-06-06T11:49:00+00:00","article_modified_time":"2025-01-24T09:42:42+00:00","og_image":[{"width":2526,"height":1072,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/image-1.png","type":"image\/png"}],"author":"Oracle Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Oracle Team","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/using-webhooks-from-gitlab-to-execute-external-code-and-tools\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/using-webhooks-from-gitlab-to-execute-external-code-and-tools\/"},"author":{"name":"Oracle Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"headline":"Using WebHook&#8217;s from GitLab to execute external code and tools","datePublished":"2023-06-06T11:49:00+00:00","dateModified":"2025-01-24T09:42:42+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/using-webhooks-from-gitlab-to-execute-external-code-and-tools\/"},"wordCount":280,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/using-webhooks-from-gitlab-to-execute-external-code-and-tools\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/image-1-1024x435.png","keywords":["Git","GitLab"],"articleSection":["Ansible","DevOps"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/using-webhooks-from-gitlab-to-execute-external-code-and-tools\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/using-webhooks-from-gitlab-to-execute-external-code-and-tools\/","url":"https:\/\/www.dbi-services.com\/blog\/using-webhooks-from-gitlab-to-execute-external-code-and-tools\/","name":"Using WebHook's from GitLab to execute external code and tools - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/using-webhooks-from-gitlab-to-execute-external-code-and-tools\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/using-webhooks-from-gitlab-to-execute-external-code-and-tools\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/image-1-1024x435.png","datePublished":"2023-06-06T11:49:00+00:00","dateModified":"2025-01-24T09:42:42+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/using-webhooks-from-gitlab-to-execute-external-code-and-tools\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/using-webhooks-from-gitlab-to-execute-external-code-and-tools\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/using-webhooks-from-gitlab-to-execute-external-code-and-tools\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/image-1-1024x435.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/image-1-1024x435.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/using-webhooks-from-gitlab-to-execute-external-code-and-tools\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Using WebHook&rsquo;s from GitLab to execute external code and tools"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee","name":"Oracle Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","caption":"Oracle Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/25030","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/27"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=25030"}],"version-history":[{"count":11,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/25030\/revisions"}],"predecessor-version":[{"id":36873,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/25030\/revisions\/36873"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=25030"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=25030"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=25030"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=25030"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}