{"id":19886,"date":"2020-08-13T05:49:03","date_gmt":"2020-08-13T03:49:03","guid":{"rendered":"https:\/\/orcharhino.com\/docops-at-atix-the-deploy-stage-automatically-deploying-to-an-internal-http-server-via-our-documentation-gitlab-pipeline-2\/"},"modified":"2026-08-04T14:37:10","modified_gmt":"2026-08-04T12:37:10","slug":"docops-at-atix-the-deploy-stage-automatically-deploying-to-an-internal-http-server-via-our-documentation-gitlab-pipeline","status":"publish","type":"post","link":"https:\/\/orcharhino.com\/en\/resources\/blog\/docops-at-atix-the-deploy-stage-automatically-deploying-to-an-internal-http-server-via-our-documentation-gitlab-pipeline\/","title":{"rendered":"DocOps at ATIX \u2013 the deploy stage: Automatically deploying to an internal http server via our Documentation Gitlab Pipeline"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><em>This short blog series will explain how we automatically test, build, and deploy documentation mostly using vim, git, sphinx, docker, and gitlab. This \u201eDocOps at ATIX\u201c blog article describes how we deploy our built documentation to an internal http server via our Documentation Gitlab Pipeline.<\/em><\/p>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\t\t<div data-elementor-type=\"container\" data-elementor-id=\"30292\" class=\"elementor elementor-30292 elementor-30285\" data-elementor-post-type=\"elementor_library\">\n\t\t\t\t<div class=\"elementor-element elementor-element-34d1a11 e-flex e-con-boxed e-con e-parent\" data-id=\"34d1a11\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-8ef645c e-con-full e-flex e-con e-child\" data-id=\"8ef645c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8a11360 dce_masking-none elementor-widget elementor-widget-image\" data-id=\"8a11360\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/orcharhino.com\/en\/solutions\/digital-sovereignty\/whitepaper-digital-sovereignty-in-the-it-infrastructure\/?utm_medium=blog_in-content_01\">\n\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/orcharhino.com\/wp-content\/smush-webp\/elementor\/thumbs\/img_whitepaper_digital_sovereignty-rk0m3y4axo3zvj0lmoj9wwxvvdg1a89fqno4dft9b0.png.webp\" title=\"img_whitepaper_digital_sovereignty\" alt=\"img_whitepaper_digital_sovereignty\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f84a375 e-con-full e-flex e-con e-child\" data-id=\"f84a375\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e7bb13b elementor-widget elementor-widget-text-editor\" data-id=\"e7bb13b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><strong>Who controls your IT &#8211; you or your dependencies?<\/strong><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-387deb8 elementor-widget elementor-widget-text-editor\" data-id=\"387deb8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Read the free white paper to find out how to identify critical dependencies, make your infrastructure resilient and regain full control over operations, updates and automation.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5688a81 elementor-widget elementor-widget-text-editor\" data-id=\"5688a81\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"662\" data-end=\"696\"><a href=\"https:\/\/orcharhino.com\/en\/solutions\/digital-sovereignty\/whitepaper-digital-sovereignty-in-the-it-infrastructure\/?utm_medium=blog_in-content_01\" target=\"_blank\" rel=\"noopener\"><strong data-start=\"662\" data-end=\"696\">Download whitepaper now<\/strong><\/a><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">The first and second stage test and build the documentation.<br>To make our Gitlab pipeline even more convenient, we also deploy the build artifacts to an http server.<br>In our case, we extract the html, website, and style guide, and copy the pdf version to its designated location: a subdirectory named like its corresponding git branch.<br>This is a&nbsp;<a href=\"https:\/\/docs.gitlab.com\/ee\/ci\/variables\/predefined_variables.html\">Gitlab feature<\/a>&nbsp;and can be accessed as a predefined environment variable as&nbsp;<code>${CI_COMMIT_REF_SLUG}<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To do so, we have a third stage called&nbsp;<code>deploy<\/code>.<br>All jobs share common tasks as are descibed in the&nbsp;<code>.deploy<\/code>&nbsp;stage.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The deployment task uses an&nbsp;<a href=\"https:\/\/alpinelinux.org\/\">Alpine<\/a>&nbsp;based Docker image.<br>Before running the actual script, we prepare SSH access by copying the&nbsp;<code>SSH_KNOWN_HOSTS<\/code>&nbsp;file into&nbsp;<code>~\/.ssh\/known_hosts<\/code>&nbsp;and add a prepared SSH private key.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>---\n    .test_deploy:\n      extends: .deploy\n      variables:\n        SSH_KNOWN_HOSTS: \"${DEV_SSH_KNOWN_HOSTS}\"\n        SSH_PRIVATE_KEY: \"${DEV_SSH_PRIVATE_KEY}\"\n        TARGET_HOST: \"dev-docs.example.com\"\n    \n    deploy:test_deployment:\n      extends: .test_deploy\n      dependencies:\n        - build:website\n        - build:html\n        - build:pdf\n        - build:style_guide\n      environment:\n        name: dev ${CI_COMMIT_REF_NAME}\n        url: \"http:\/\/dev-docs.example.com\/branches\/${CI_COMMIT_REF_SLUG}\"\n        on_stop: deploy:stop_test_deployment\n      script:\n        - set -u\n        - ansible-playbook ci_resources\/test_deployment.yaml\n            --inventory \"${TARGET_HOST},\"\n            --extra-vars \"branch_slug=${CI_COMMIT_REF_SLUG}\"\n    ...<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The following task describes how to deploy the website to our actual web server running&nbsp;<a href=\"https:\/\/docs.orcharhino.com\/\">docs.orcharhino.com<\/a>.<br>This task only runs when started manually in our Gitlab pipeline, as we mostly push documentation online in sync with new orcharhino releases.<br>The only exception is bug fixes.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> ---\ndeploy:docs.orcharhino.com:\nextends: .deploy\ndependencies:\n- build:website\nenvironment:\nname: production\nurl: https:\/\/docs.orcharhino.com\/\nvariables:\nSSH_KNOWN_HOSTS: \"${PROD_SSH_KNOWN_HOSTS}\"\nSSH_PRIVATE_KEY: \"${PROD_SSH_PRIVATE_KEY}\"\nTARGET_HOST: \"${PROD_HOST_IP}\"\nscript:\n- set -u\n- ansible-playbook ci_resources\/prod_deployment.yaml -i \"${TARGET_HOST}\",\nonly:\nrefs:\n- docs_orcharhino_com\nwhen: manual\n...<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The&nbsp;<code>test_deployment<\/code>&nbsp;job extends the&nbsp;<code>test_deploy<\/code>&nbsp;job which holds internal variables defined in Gitlab.<br>It depends on all four build stage jobs, as it only makes sense to deploy the documentation once it\u2019s been built successfully.<br>It also starts an&nbsp;<a href=\"https:\/\/docs.ansible.com\/ansible\/latest\/user_guide\/playbooks.html\">Ansible playbook<\/a>&nbsp;but with a different inventory containing the internal http server and an extra variable called&nbsp;<code>branch_slug<\/code>&nbsp;to create a folder with the name of the feature branch&nbsp;<code>${CI_COMMIT_REF_SLUG}<\/code>.<\/p>\n\n\n\n\n\n<p>Overall, this mini-series with three parts allows you to rebuild our Gitlab pipeline to automatically test, build, and deploy Sphinx-based documentation.<br \/>It helps us focus on writing documentation rather than testing, building, and deploying it.<br \/>Using this Gitlab pipeline makes asking for reviews much more convenient and overall saves us a lot of time.<\/p>\n<p>\u00a0<\/p>\n<p>\u00a0<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1030\" height=\"698\" src=\"https:\/\/orcharhino.com\/wp-content\/smush-webp\/2020\/08\/blog_gitlab_pipeline_3_deployed_ansible_guide-1030x698.png.webp\" alt=\"\" class=\"wp-image-2683\" style=\"width:480px;height:auto\" srcset=\"https:\/\/orcharhino.com\/wp-content\/smush-webp\/2020\/08\/blog_gitlab_pipeline_3_deployed_ansible_guide-1030x698.png.webp 1030w, https:\/\/orcharhino.com\/wp-content\/smush-webp\/2020\/08\/blog_gitlab_pipeline_3_deployed_ansible_guide-300x203.png.webp 300w, https:\/\/orcharhino.com\/wp-content\/smush-webp\/2020\/08\/blog_gitlab_pipeline_3_deployed_ansible_guide-768x520.png.webp 768w, https:\/\/orcharhino.com\/wp-content\/smush-webp\/2020\/08\/blog_gitlab_pipeline_3_deployed_ansible_guide-1536x1040.png.webp 1536w, https:\/\/orcharhino.com\/wp-content\/smush-webp\/2020\/08\/blog_gitlab_pipeline_3_deployed_ansible_guide-2048x1387.png.webp 2048w, https:\/\/orcharhino.com\/wp-content\/smush-webp\/2020\/08\/blog_gitlab_pipeline_3_deployed_ansible_guide-1500x1016.png.webp 1500w, https:\/\/orcharhino.com\/wp-content\/smush-webp\/2020\/08\/blog_gitlab_pipeline_3_deployed_ansible_guide-705x478.png.webp 705w, https:\/\/orcharhino.com\/wp-content\/uploads\/2020\/08\/blog_gitlab_pipeline_3_deployed_ansible_guide-450x305.png 450w\" sizes=\"(max-width: 1030px) 100vw, 1030px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>This short blog series will explain how we automatically test, build, and deploy documentation mostly using vim, git, sphinx, docker, and gitlab. This \u201eDocOps at ATIX\u201c blog article describes how we deploy our built documentation to an internal http server via our Documentation Gitlab Pipeline. The first and second stage test and build the documentation.To [&hellip;]<\/p>\n","protected":false},"author":1095,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[104],"tags":[],"pillars":[],"rolle":[],"use-case-kategorie":[],"class_list":["post-19886","post","type-post","status-publish","format-standard","hentry","category-blog-en"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.7 (Yoast SEO v28.7) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>GitLab Pipeline: Deploy Docs to HTTP Server | orcharhino<\/title>\n<meta name=\"description\" content=\"Learn how ATIX uses a GitLab CI deploy stage with Ansible to publish Sphinx documentation to an internal HTTP server \u2014 with code examples.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/orcharhino.com\/en\/resources\/blog\/docops-at-atix-the-deploy-stage-automatically-deploying-to-an-internal-http-server-via-our-documentation-gitlab-pipeline\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DocOps at ATIX \u2013 the deploy stage: Automatically deploying to an internal http server via our Documentation Gitlab Pipeline\" \/>\n<meta property=\"og:description\" content=\"Learn how ATIX uses a GitLab CI deploy stage with Ansible to publish Sphinx documentation to an internal HTTP server \u2014 with code examples.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/orcharhino.com\/en\/resources\/blog\/docops-at-atix-the-deploy-stage-automatically-deploying-to-an-internal-http-server-via-our-documentation-gitlab-pipeline\/\" \/>\n<meta property=\"og:site_name\" content=\"orcharhino\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ATIXDE\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-08-13T03:49:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-04T12:37:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/orcharhino.com\/wp-content\/uploads\/2020\/08\/blog_gitlab_pipeline_3_deployed_ansible_guide-1030x698.png\" \/>\n<meta name=\"author\" content=\"Dev Medienstuermer\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@orcharhino\" \/>\n<meta name=\"twitter:site\" content=\"@orcharhino\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Dev Medienstuermer\" \/>\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:\\\/\\\/orcharhino.com\\\/en\\\/resources\\\/blog\\\/docops-at-atix-the-deploy-stage-automatically-deploying-to-an-internal-http-server-via-our-documentation-gitlab-pipeline\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/orcharhino.com\\\/en\\\/resources\\\/blog\\\/docops-at-atix-the-deploy-stage-automatically-deploying-to-an-internal-http-server-via-our-documentation-gitlab-pipeline\\\/\"},\"author\":{\"name\":\"Dev Medienstuermer\",\"@id\":\"https:\\\/\\\/orcharhino.com\\\/en\\\/#\\\/schema\\\/person\\\/7d02c0c1f109e932aec93630ecf98238\"},\"headline\":\"DocOps at ATIX \u2013 the deploy stage: Automatically deploying to an internal http server via our Documentation Gitlab Pipeline\",\"datePublished\":\"2020-08-13T03:49:03+00:00\",\"dateModified\":\"2026-08-04T12:37:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/orcharhino.com\\\/en\\\/resources\\\/blog\\\/docops-at-atix-the-deploy-stage-automatically-deploying-to-an-internal-http-server-via-our-documentation-gitlab-pipeline\\\/\"},\"wordCount\":374,\"publisher\":{\"@id\":\"https:\\\/\\\/orcharhino.com\\\/en\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/orcharhino.com\\\/en\\\/resources\\\/blog\\\/docops-at-atix-the-deploy-stage-automatically-deploying-to-an-internal-http-server-via-our-documentation-gitlab-pipeline\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/orcharhino.com\\\/wp-content\\\/uploads\\\/2020\\\/08\\\/blog_gitlab_pipeline_3_deployed_ansible_guide-1030x698.png\",\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/orcharhino.com\\\/en\\\/resources\\\/blog\\\/docops-at-atix-the-deploy-stage-automatically-deploying-to-an-internal-http-server-via-our-documentation-gitlab-pipeline\\\/\",\"url\":\"https:\\\/\\\/orcharhino.com\\\/en\\\/resources\\\/blog\\\/docops-at-atix-the-deploy-stage-automatically-deploying-to-an-internal-http-server-via-our-documentation-gitlab-pipeline\\\/\",\"name\":\"GitLab Pipeline: Deploy Docs to HTTP Server | orcharhino\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/orcharhino.com\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/orcharhino.com\\\/en\\\/resources\\\/blog\\\/docops-at-atix-the-deploy-stage-automatically-deploying-to-an-internal-http-server-via-our-documentation-gitlab-pipeline\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/orcharhino.com\\\/en\\\/resources\\\/blog\\\/docops-at-atix-the-deploy-stage-automatically-deploying-to-an-internal-http-server-via-our-documentation-gitlab-pipeline\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/orcharhino.com\\\/wp-content\\\/uploads\\\/2020\\\/08\\\/blog_gitlab_pipeline_3_deployed_ansible_guide-1030x698.png\",\"datePublished\":\"2020-08-13T03:49:03+00:00\",\"dateModified\":\"2026-08-04T12:37:10+00:00\",\"description\":\"Learn how ATIX uses a GitLab CI deploy stage with Ansible to publish Sphinx documentation to an internal HTTP server \u2014 with code examples.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/orcharhino.com\\\/en\\\/resources\\\/blog\\\/docops-at-atix-the-deploy-stage-automatically-deploying-to-an-internal-http-server-via-our-documentation-gitlab-pipeline\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/orcharhino.com\\\/en\\\/resources\\\/blog\\\/docops-at-atix-the-deploy-stage-automatically-deploying-to-an-internal-http-server-via-our-documentation-gitlab-pipeline\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/orcharhino.com\\\/en\\\/resources\\\/blog\\\/docops-at-atix-the-deploy-stage-automatically-deploying-to-an-internal-http-server-via-our-documentation-gitlab-pipeline\\\/#primaryimage\",\"url\":\"https:\\\/\\\/orcharhino.com\\\/wp-content\\\/uploads\\\/2020\\\/08\\\/blog_gitlab_pipeline_3_deployed_ansible_guide-1030x698.png\",\"contentUrl\":\"https:\\\/\\\/orcharhino.com\\\/wp-content\\\/uploads\\\/2020\\\/08\\\/blog_gitlab_pipeline_3_deployed_ansible_guide-1030x698.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/orcharhino.com\\\/en\\\/resources\\\/blog\\\/docops-at-atix-the-deploy-stage-automatically-deploying-to-an-internal-http-server-via-our-documentation-gitlab-pipeline\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"orcharhino\",\"item\":\"https:\\\/\\\/orcharhino.com\\\/en\\\/startseite-neu\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DocOps at ATIX \u2013 the deploy stage: Automatically deploying to an internal http server via our Documentation Gitlab Pipeline\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/orcharhino.com\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/orcharhino.com\\\/en\\\/\",\"name\":\"orcharhino\",\"description\":\"one tool to rule them all\",\"publisher\":{\"@id\":\"https:\\\/\\\/orcharhino.com\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/orcharhino.com\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/orcharhino.com\\\/en\\\/#organization\",\"name\":\"orcharhino\",\"url\":\"https:\\\/\\\/orcharhino.com\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/orcharhino.com\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/orcharhino.com\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/orcharhino_mask.svg\",\"contentUrl\":\"https:\\\/\\\/orcharhino.com\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/orcharhino_mask.svg\",\"width\":508,\"height\":508,\"caption\":\"orcharhino\"},\"image\":{\"@id\":\"https:\\\/\\\/orcharhino.com\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/ATIXDE\\\/\",\"https:\\\/\\\/x.com\\\/orcharhino\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/atix-ag\\\/\"],\"description\":\"orcharhino erm\u00f6glicht das automatisierte Deployment \u00fcber alle Betriebssysteme hinweg und die anschlie\u00dfende Verwaltung der Systeme mit Release- und Patch Management. Die Infrastruktur l\u00e4sst sich dabei eng entlang der eigenen Bed\u00fcrfnisse ausrichten. IT-Organisationen profitieren insbesondere von der Technologie- und Herstellerunabh\u00e4ngigkeit sowie von st\u00e4ndig aktualisierten Sicherheitsupdates. orcharhino ist als Open-Source-L\u00f6sung f\u00fcr Unternehmen besonders flexibel und unbegrenzt skalierbar, unabh\u00e4ngig von der Gr\u00f6\u00dfe der Infrastruktur oder der Anzahl der Devices \u2013 egal ob lokal oder global, in der Cloud oder On-Premises.\",\"email\":\"info@atix.de\",\"telephone\":\"+49 89 4523538-0\",\"legalName\":\"ATIX Informationstechnologie und Consulting AG\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/orcharhino.com\\\/en\\\/#\\\/schema\\\/person\\\/7d02c0c1f109e932aec93630ecf98238\",\"name\":\"Dev Medienstuermer\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a23619ea28283064311a0d1fe283044ac4eecabc19235c5c77dc62e2c5565de4?s=96&d=blank&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a23619ea28283064311a0d1fe283044ac4eecabc19235c5c77dc62e2c5565de4?s=96&d=blank&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a23619ea28283064311a0d1fe283044ac4eecabc19235c5c77dc62e2c5565de4?s=96&d=blank&r=g\",\"caption\":\"Dev Medienstuermer\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"GitLab Pipeline: Deploy Docs to HTTP Server | orcharhino","description":"Learn how ATIX uses a GitLab CI deploy stage with Ansible to publish Sphinx documentation to an internal HTTP server \u2014 with code examples.","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:\/\/orcharhino.com\/en\/resources\/blog\/docops-at-atix-the-deploy-stage-automatically-deploying-to-an-internal-http-server-via-our-documentation-gitlab-pipeline\/","og_locale":"en_US","og_type":"article","og_title":"DocOps at ATIX \u2013 the deploy stage: Automatically deploying to an internal http server via our Documentation Gitlab Pipeline","og_description":"Learn how ATIX uses a GitLab CI deploy stage with Ansible to publish Sphinx documentation to an internal HTTP server \u2014 with code examples.","og_url":"https:\/\/orcharhino.com\/en\/resources\/blog\/docops-at-atix-the-deploy-stage-automatically-deploying-to-an-internal-http-server-via-our-documentation-gitlab-pipeline\/","og_site_name":"orcharhino","article_publisher":"https:\/\/www.facebook.com\/ATIXDE\/","article_published_time":"2020-08-13T03:49:03+00:00","article_modified_time":"2026-08-04T12:37:10+00:00","og_image":[{"url":"https:\/\/orcharhino.com\/wp-content\/uploads\/2020\/08\/blog_gitlab_pipeline_3_deployed_ansible_guide-1030x698.png","type":"","width":"","height":""}],"author":"Dev Medienstuermer","twitter_card":"summary_large_image","twitter_creator":"@orcharhino","twitter_site":"@orcharhino","twitter_misc":{"Written by":"Dev Medienstuermer","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/orcharhino.com\/en\/resources\/blog\/docops-at-atix-the-deploy-stage-automatically-deploying-to-an-internal-http-server-via-our-documentation-gitlab-pipeline\/#article","isPartOf":{"@id":"https:\/\/orcharhino.com\/en\/resources\/blog\/docops-at-atix-the-deploy-stage-automatically-deploying-to-an-internal-http-server-via-our-documentation-gitlab-pipeline\/"},"author":{"name":"Dev Medienstuermer","@id":"https:\/\/orcharhino.com\/en\/#\/schema\/person\/7d02c0c1f109e932aec93630ecf98238"},"headline":"DocOps at ATIX \u2013 the deploy stage: Automatically deploying to an internal http server via our Documentation Gitlab Pipeline","datePublished":"2020-08-13T03:49:03+00:00","dateModified":"2026-08-04T12:37:10+00:00","mainEntityOfPage":{"@id":"https:\/\/orcharhino.com\/en\/resources\/blog\/docops-at-atix-the-deploy-stage-automatically-deploying-to-an-internal-http-server-via-our-documentation-gitlab-pipeline\/"},"wordCount":374,"publisher":{"@id":"https:\/\/orcharhino.com\/en\/#organization"},"image":{"@id":"https:\/\/orcharhino.com\/en\/resources\/blog\/docops-at-atix-the-deploy-stage-automatically-deploying-to-an-internal-http-server-via-our-documentation-gitlab-pipeline\/#primaryimage"},"thumbnailUrl":"https:\/\/orcharhino.com\/wp-content\/uploads\/2020\/08\/blog_gitlab_pipeline_3_deployed_ansible_guide-1030x698.png","articleSection":["Blog"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/orcharhino.com\/en\/resources\/blog\/docops-at-atix-the-deploy-stage-automatically-deploying-to-an-internal-http-server-via-our-documentation-gitlab-pipeline\/","url":"https:\/\/orcharhino.com\/en\/resources\/blog\/docops-at-atix-the-deploy-stage-automatically-deploying-to-an-internal-http-server-via-our-documentation-gitlab-pipeline\/","name":"GitLab Pipeline: Deploy Docs to HTTP Server | orcharhino","isPartOf":{"@id":"https:\/\/orcharhino.com\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/orcharhino.com\/en\/resources\/blog\/docops-at-atix-the-deploy-stage-automatically-deploying-to-an-internal-http-server-via-our-documentation-gitlab-pipeline\/#primaryimage"},"image":{"@id":"https:\/\/orcharhino.com\/en\/resources\/blog\/docops-at-atix-the-deploy-stage-automatically-deploying-to-an-internal-http-server-via-our-documentation-gitlab-pipeline\/#primaryimage"},"thumbnailUrl":"https:\/\/orcharhino.com\/wp-content\/uploads\/2020\/08\/blog_gitlab_pipeline_3_deployed_ansible_guide-1030x698.png","datePublished":"2020-08-13T03:49:03+00:00","dateModified":"2026-08-04T12:37:10+00:00","description":"Learn how ATIX uses a GitLab CI deploy stage with Ansible to publish Sphinx documentation to an internal HTTP server \u2014 with code examples.","breadcrumb":{"@id":"https:\/\/orcharhino.com\/en\/resources\/blog\/docops-at-atix-the-deploy-stage-automatically-deploying-to-an-internal-http-server-via-our-documentation-gitlab-pipeline\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/orcharhino.com\/en\/resources\/blog\/docops-at-atix-the-deploy-stage-automatically-deploying-to-an-internal-http-server-via-our-documentation-gitlab-pipeline\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/orcharhino.com\/en\/resources\/blog\/docops-at-atix-the-deploy-stage-automatically-deploying-to-an-internal-http-server-via-our-documentation-gitlab-pipeline\/#primaryimage","url":"https:\/\/orcharhino.com\/wp-content\/uploads\/2020\/08\/blog_gitlab_pipeline_3_deployed_ansible_guide-1030x698.png","contentUrl":"https:\/\/orcharhino.com\/wp-content\/uploads\/2020\/08\/blog_gitlab_pipeline_3_deployed_ansible_guide-1030x698.png"},{"@type":"BreadcrumbList","@id":"https:\/\/orcharhino.com\/en\/resources\/blog\/docops-at-atix-the-deploy-stage-automatically-deploying-to-an-internal-http-server-via-our-documentation-gitlab-pipeline\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"orcharhino","item":"https:\/\/orcharhino.com\/en\/startseite-neu\/"},{"@type":"ListItem","position":2,"name":"DocOps at ATIX \u2013 the deploy stage: Automatically deploying to an internal http server via our Documentation Gitlab Pipeline"}]},{"@type":"WebSite","@id":"https:\/\/orcharhino.com\/en\/#website","url":"https:\/\/orcharhino.com\/en\/","name":"orcharhino","description":"one tool to rule them all","publisher":{"@id":"https:\/\/orcharhino.com\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/orcharhino.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/orcharhino.com\/en\/#organization","name":"orcharhino","url":"https:\/\/orcharhino.com\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/orcharhino.com\/en\/#\/schema\/logo\/image\/","url":"https:\/\/orcharhino.com\/wp-content\/uploads\/2024\/12\/orcharhino_mask.svg","contentUrl":"https:\/\/orcharhino.com\/wp-content\/uploads\/2024\/12\/orcharhino_mask.svg","width":508,"height":508,"caption":"orcharhino"},"image":{"@id":"https:\/\/orcharhino.com\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/ATIXDE\/","https:\/\/x.com\/orcharhino","https:\/\/www.linkedin.com\/company\/atix-ag\/"],"description":"orcharhino erm\u00f6glicht das automatisierte Deployment \u00fcber alle Betriebssysteme hinweg und die anschlie\u00dfende Verwaltung der Systeme mit Release- und Patch Management. Die Infrastruktur l\u00e4sst sich dabei eng entlang der eigenen Bed\u00fcrfnisse ausrichten. IT-Organisationen profitieren insbesondere von der Technologie- und Herstellerunabh\u00e4ngigkeit sowie von st\u00e4ndig aktualisierten Sicherheitsupdates. orcharhino ist als Open-Source-L\u00f6sung f\u00fcr Unternehmen besonders flexibel und unbegrenzt skalierbar, unabh\u00e4ngig von der Gr\u00f6\u00dfe der Infrastruktur oder der Anzahl der Devices \u2013 egal ob lokal oder global, in der Cloud oder On-Premises.","email":"info@atix.de","telephone":"+49 89 4523538-0","legalName":"ATIX Informationstechnologie und Consulting AG"},{"@type":"Person","@id":"https:\/\/orcharhino.com\/en\/#\/schema\/person\/7d02c0c1f109e932aec93630ecf98238","name":"Dev Medienstuermer","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/a23619ea28283064311a0d1fe283044ac4eecabc19235c5c77dc62e2c5565de4?s=96&d=blank&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a23619ea28283064311a0d1fe283044ac4eecabc19235c5c77dc62e2c5565de4?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a23619ea28283064311a0d1fe283044ac4eecabc19235c5c77dc62e2c5565de4?s=96&d=blank&r=g","caption":"Dev Medienstuermer"}}]}},"permalink_manager":null,"_links":{"self":[{"href":"https:\/\/orcharhino.com\/en\/wp-json\/wp\/v2\/posts\/19886","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/orcharhino.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/orcharhino.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/orcharhino.com\/en\/wp-json\/wp\/v2\/users\/1095"}],"replies":[{"embeddable":true,"href":"https:\/\/orcharhino.com\/en\/wp-json\/wp\/v2\/comments?post=19886"}],"version-history":[{"count":5,"href":"https:\/\/orcharhino.com\/en\/wp-json\/wp\/v2\/posts\/19886\/revisions"}],"predecessor-version":[{"id":30406,"href":"https:\/\/orcharhino.com\/en\/wp-json\/wp\/v2\/posts\/19886\/revisions\/30406"}],"wp:attachment":[{"href":"https:\/\/orcharhino.com\/en\/wp-json\/wp\/v2\/media?parent=19886"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/orcharhino.com\/en\/wp-json\/wp\/v2\/categories?post=19886"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/orcharhino.com\/en\/wp-json\/wp\/v2\/tags?post=19886"},{"taxonomy":"pillars","embeddable":true,"href":"https:\/\/orcharhino.com\/en\/wp-json\/wp\/v2\/pillars?post=19886"},{"taxonomy":"rolle","embeddable":true,"href":"https:\/\/orcharhino.com\/en\/wp-json\/wp\/v2\/rolle?post=19886"},{"taxonomy":"use-case-kategorie","embeddable":true,"href":"https:\/\/orcharhino.com\/en\/wp-json\/wp\/v2\/use-case-kategorie?post=19886"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}