{"id":2057,"date":"2026-03-10T10:03:38","date_gmt":"2026-03-10T09:03:38","guid":{"rendered":"https:\/\/askem.eu\/?p=2057"},"modified":"2026-03-10T10:03:41","modified_gmt":"2026-03-10T09:03:41","slug":"gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge","status":"publish","type":"post","link":"https:\/\/askem.eu\/en\/2026\/03\/10\/gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge\/","title":{"rendered":"Gitea Actions : mettre en place un pipeline CI\/CD auto-h\u00e9berg\u00e9"},"content":{"rendered":"<h1 class=\"wp-block-heading\">Gitea Actions&nbsp;: mettre en place un pipeline CI\/CD auto-h\u00e9berg\u00e9<\/h1>\n\n\n\n<p>Automatiser les tests, le build et le d\u00e9ploiement de vos projets sans d\u00e9pendre de GitHub ou GitLab.<\/p>\n\n\n\n<p>Quand on auto-h\u00e9berge sa forge logicielle avec Gitea, la question du CI\/CD finit toujours par se poser. Pendant longtemps, il fallait greffer un outil tiers \u2014 Drone, Jenkins, Woodpecker \u2014 avec sa propre configuration et ses propres contraintes. Depuis Gitea 1.19, <strong>Gitea Actions<\/strong> int\u00e8gre nativement un moteur de CI\/CD compatible avec la syntaxe GitHub Actions. C&rsquo;est un changement de paradigme pour les \u00e9quipes qui veulent une cha\u00eene DevOps compl\u00e8te, souveraine et auto-h\u00e9berg\u00e9e.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pourquoi Gitea Actions plut\u00f4t qu&rsquo;un CI externe&nbsp;?<\/h2>\n\n\n\n<p>Gitea Actions pr\u00e9sente plusieurs avantages par rapport \u00e0 un outil CI s\u00e9par\u00e9&nbsp;:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Crit\u00e8re<\/th><th>CI externe (Jenkins, Drone)<\/th><th>Gitea Actions<\/th><\/tr><\/thead><tbody><tr><td><strong>Configuration<\/strong><\/td><td>Fichier s\u00e9par\u00e9, syntaxe sp\u00e9cifique<\/td><td>Fichier <code>.gitea\/workflows\/<\/code>, syntaxe YAML compatible GitHub Actions<\/td><\/tr><tr><td><strong>Int\u00e9gration UI<\/strong><\/td><td>Interface s\u00e9par\u00e9e, double navigation<\/td><td>R\u00e9sultats directement dans l&rsquo;interface Gitea, sur chaque commit et PR<\/td><\/tr><tr><td><strong>Maintenance<\/strong><\/td><td>Service suppl\u00e9mentaire \u00e0 mettre \u00e0 jour<\/td><td>Int\u00e9gr\u00e9 \u00e0 Gitea, m\u00eame cycle de mise \u00e0 jour<\/td><\/tr><tr><td><strong>R\u00e9utilisabilit\u00e9<\/strong><\/td><td>\u00c9cosyst\u00e8me propre, plugins sp\u00e9cifiques<\/td><td>Compatible avec de nombreuses GitHub Actions existantes<\/td><\/tr><tr><td><strong>Runners<\/strong><\/td><td>Agents propri\u00e9taires<\/td><td><code>act_runner<\/code>, l\u00e9ger, d\u00e9ployable en Docker<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Le point cl\u00e9 est la compatibilit\u00e9 avec la syntaxe GitHub Actions. Si votre \u00e9quipe conna\u00eet d\u00e9j\u00e0 ce format, la migration vers Gitea Actions est quasi transparente. Les workflows existants fonctionnent souvent avec des ajustements minimes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Architecture&nbsp;: Gitea + act_runner<\/h2>\n\n\n\n<p>Gitea Actions repose sur deux composants. Le serveur Gitea g\u00e8re les workflows, les d\u00e9clencheurs (push, pull request, cron) et l&rsquo;affichage des r\u00e9sultats. L&rsquo;ex\u00e9cution effective des jobs est d\u00e9l\u00e9gu\u00e9e \u00e0 un ou plusieurs <strong>runners<\/strong> via le binaire <code>act_runner<\/code>. Ce runner peut tourner sur la m\u00eame machine que Gitea ou sur des serveurs d\u00e9di\u00e9s, et supporte trois modes d&rsquo;isolation&nbsp;:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Docker<\/strong> (recommand\u00e9)&nbsp;: chaque job tourne dans un conteneur \u00e9ph\u00e9m\u00e8re. Isolation compl\u00e8te, nettoyage automatique.<\/li>\n\n\n\n<li><strong>LXC<\/strong>&nbsp;: alternative plus l\u00e9g\u00e8re aux conteneurs Docker, int\u00e9ressante sur des serveurs \u00e0 ressources limit\u00e9es.<\/li>\n\n\n\n<li><strong>Host<\/strong>&nbsp;: ex\u00e9cution directe sur la machine du runner. \u00c0 r\u00e9server aux cas o\u00f9 Docker n&rsquo;est pas disponible.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">D\u00e9ploiement Docker Compose<\/h2>\n\n\n\n<p>Voici un <code>docker-compose.yml<\/code> complet qui d\u00e9ploie Gitea et un runner&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>version: \"3.9\"\nservices:\n  gitea:\n    image: gitea\/gitea:1.22\n    ports:\n      - \"3000:3000\"\n      - \"2222:22\"\n    volumes:\n      - gitea-data:\/data\n    environment:\n      GITEA__actions__ENABLED: \"true\"\n\n  runner:\n    image: gitea\/act_runner:latest\n    depends_on:\n      - gitea\n    volumes:\n      - \/var\/run\/docker.sock:\/var\/run\/docker.sock\n      - runner-data:\/data\n    environment:\n      GITEA_INSTANCE_URL: http:\/\/gitea:3000\n      GITEA_RUNNER_REGISTRATION_TOKEN: \"${RUNNER_TOKEN}\"\n\nvolumes:\n  gitea-data:\n  runner-data:<\/code><\/pre>\n\n\n\n<p>Le token d&rsquo;enregistrement se r\u00e9cup\u00e8re dans l&rsquo;interface Gitea, sous <em>Administration du site &gt; Runners<\/em>. Une fois le runner d\u00e9marr\u00e9, il appara\u00eet dans la liste des runners disponibles et commence \u00e0 traiter les jobs.<\/p>\n\n\n\n<p><strong>S\u00e9curit\u00e9 du socket Docker&nbsp;:<\/strong> Le montage de <code>\/var\/run\/docker.sock<\/code> donne au runner un acc\u00e8s complet au daemon Docker. En production, pr\u00e9f\u00e9rez un socket rootless ou utilisez un runner d\u00e9di\u00e9 sur une machine isol\u00e9e.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Exemple de workflow&nbsp;: tester et d\u00e9ployer une application Python<\/h2>\n\n\n\n<p>Cr\u00e9ez le fichier <code>.gitea\/workflows\/ci.yaml<\/code> \u00e0 la racine de votre d\u00e9p\u00f4t&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>name: CI\/CD Pipeline\n\non:\n  push:\n    branches: &#91;main]\n  pull_request:\n    branches: &#91;main]\n\njobs:\n  test:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\/checkout@v4\n\n      - name: Installer Python\n        uses: actions\/setup-python@v5\n        with:\n          python-version: \"3.12\"\n\n      - name: Installer les d\u00e9pendances\n        run: |\n          pip install -r requirements.txt\n          pip install pytest ruff\n\n      - name: V\u00e9rifier le formatage (ruff)\n        run: ruff check .\n\n      - name: Lancer les tests\n        run: pytest --tb=short -q\n\n  deploy:\n    needs: test\n    if: github.ref == 'refs\/heads\/main'\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\/checkout@v4\n\n      - name: D\u00e9ployer via SSH\n        uses: appleboy\/ssh-action@v1\n        with:\n          host: ${{ secrets.DEPLOY_HOST }}\n          username: ${{ secrets.DEPLOY_USER }}\n          key: ${{ secrets.DEPLOY_KEY }}\n          script: |\n            cd \/opt\/mon-app\n            git pull origin main\n            docker compose up -d --build<\/code><\/pre>\n\n\n\n<p>Ce workflow ex\u00e9cute deux jobs. Le premier (<code>test<\/code>) v\u00e9rifie le formatage du code avec ruff et lance les tests unitaires. Le second (<code>deploy<\/code>) ne s&rsquo;ex\u00e9cute que sur la branche <code>main<\/code>, apr\u00e8s le succ\u00e8s des tests, et d\u00e9ploie l&rsquo;application via SSH sur le serveur de production.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">G\u00e9rer les secrets<\/h2>\n\n\n\n<p>Gitea Actions supporte les secrets au m\u00eame niveau que GitHub&nbsp;: par d\u00e9p\u00f4t, par organisation, ou globalement. Les secrets sont chiffr\u00e9s c\u00f4t\u00e9 serveur et inject\u00e9s comme variables d&rsquo;environnement dans les jobs. On les d\u00e9finit dans <em>Param\u00e8tres du d\u00e9p\u00f4t &gt; Actions &gt; Secrets<\/em>.<\/p>\n\n\n\n<p>Pour un pipeline de d\u00e9ploiement, les secrets typiques sont&nbsp;: la cl\u00e9 SSH de d\u00e9ploiement, l&rsquo;h\u00f4te cible, les credentials de registre Docker (si on pousse des images), et les tokens d&rsquo;API pour les notifications (Mattermost, Matrix).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Cas d&rsquo;usage concrets pour un SI open source<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Pipeline CKAN<\/h3>\n\n\n\n<p>Tester automatiquement les extensions CKAN \u00e0 chaque push&nbsp;: lancer les tests pytest dans un conteneur avec CKAN et PostgreSQL, v\u00e9rifier la compatibilit\u00e9 avec les versions 2.10 et 2.11 via une matrice de builds, et d\u00e9ployer sur l&rsquo;instance de staging en cas de succ\u00e8s sur la branche <code>develop<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pipeline Drupal<\/h3>\n\n\n\n<p>Valider les mises \u00e0 jour de modules&nbsp;: ex\u00e9cuter <code>phpcs<\/code> pour le respect des standards de codage, lancer les tests PHPUnit, puis d\u00e9clencher un <code>drush deploy<\/code> sur le serveur de recette.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pipeline infrastructure<\/h3>\n\n\n\n<p>Valider les fichiers de configuration avant d\u00e9ploiement&nbsp;: linter les fichiers Docker Compose avec <code>docker compose config<\/code>, v\u00e9rifier la syntaxe Nginx avec <code>nginx -t<\/code> dans un conteneur, puis appliquer les changements via Ansible si le linting passe.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Optimisations et bonnes pratiques<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cache des d\u00e9pendances<\/strong>&nbsp;: utilisez l&rsquo;action <code>actions\/cache<\/code> pour \u00e9viter de ret\u00e9l\u00e9charger pip, npm ou composer \u00e0 chaque build. Le gain de temps est significatif sur les projets avec beaucoup de d\u00e9pendances.<\/li>\n\n\n\n<li><strong>Matrice de tests<\/strong>&nbsp;: testez sur plusieurs versions de Python, Node ou PHP en parall\u00e8le avec la directive <code>strategy.matrix<\/code>.<\/li>\n\n\n\n<li><strong>Workflows r\u00e9utilisables<\/strong>&nbsp;: factorisez les \u00e9tapes communes dans des workflows appelables (<code>workflow_call<\/code>) stock\u00e9s dans un d\u00e9p\u00f4t central.<\/li>\n\n\n\n<li><strong>Timeouts<\/strong>&nbsp;: d\u00e9finissez un <code>timeout-minutes<\/code> sur chaque job pour \u00e9viter qu&rsquo;un test bloqu\u00e9 ne monopolise le runner ind\u00e9finiment.<\/li>\n\n\n\n<li><strong>Nettoyage des artefacts<\/strong>&nbsp;: configurez une r\u00e9tention courte (7 jours) pour les logs et artefacts de build afin de ne pas saturer le stockage Gitea.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Limites actuelles<\/h2>\n\n\n\n<p>Gitea Actions est encore un projet relativement jeune. Quelques points \u00e0 garder en t\u00eate&nbsp;:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Toutes les GitHub Actions tierces ne sont pas compatibles \u2014 celles qui appellent des API sp\u00e9cifiques \u00e0 GitHub (comme les actions de release) n\u00e9cessitent des adaptations.<\/li>\n\n\n\n<li>L&rsquo;\u00e9cosyst\u00e8me de runners est plus restreint&nbsp;: pas d&rsquo;\u00e9quivalent aux runners macOS\/Windows h\u00e9berg\u00e9s de GitHub.<\/li>\n\n\n\n<li>La documentation officielle progresse rapidement mais reste moins fournie que celle de GitHub Actions.<\/li>\n\n\n\n<li>Les <em>composite actions<\/em> et les <em>reusable workflows<\/em> sont support\u00e9s, mais certaines fonctionnalit\u00e9s avanc\u00e9es (comme les environments avec approbation) sont encore en d\u00e9veloppement.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">R\u00e9capitulatif<\/h2>\n\n\n\n<p>Gitea Actions transforme Gitea d&rsquo;une simple forge Git en une plateforme DevOps compl\u00e8te et auto-h\u00e9berg\u00e9e. La compatibilit\u00e9 avec la syntaxe GitHub Actions r\u00e9duit la courbe d&rsquo;apprentissage et permet de r\u00e9utiliser une partie de l&rsquo;\u00e9cosyst\u00e8me existant. Pour les \u00e9quipes qui g\u00e8rent un SI open source \u2014 CKAN, Drupal, scripts d&rsquo;infrastructure \u2014 c&rsquo;est le moyen le plus direct d&rsquo;int\u00e9grer du CI\/CD sans ajouter de brique logicielle suppl\u00e9mentaire ni d\u00e9pendre d&rsquo;un service cloud tiers.<\/p>\n\n\n\n<p>GiteaCI\/CDDevOpsDockerauto-h\u00e9bergementopen sourceact_runnerpipelined\u00e9ploiement<\/p>","protected":false},"excerpt":{"rendered":"<p>Gitea Actions&nbsp;: mettre en place un pipeline CI\/CD auto-h\u00e9berg\u00e9 Automatiser les tests, le build et le d\u00e9ploiement de vos projets sans d\u00e9pendre de GitHub ou GitLab. Quand on auto-h\u00e9berge sa forge logicielle avec Gitea, la question du CI\/CD finit toujours par se poser. Pendant longtemps, il fallait greffer un outil tiers \u2014 Drone, Jenkins, Woodpecker [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2058,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"","ocean_second_sidebar":"","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"","ocean_custom_header_template":"","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"","ocean_menu_typo_font_family":"","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"","osh_disable_topbar_sticky":"default","osh_disable_header_sticky":"default","osh_sticky_header_style":"default","osh_sticky_header_effect":"","osh_custom_sticky_logo":0,"osh_custom_retina_sticky_logo":0,"osh_custom_sticky_logo_height":0,"osh_background_color":"","osh_links_color":"","osh_links_hover_color":"","osh_links_active_color":"","osh_links_bg_color":"","osh_links_hover_bg_color":"","osh_links_active_bg_color":"","osh_menu_social_links_color":"","osh_menu_social_hover_links_color":"","ocean_post_oembed":"","ocean_post_self_hosted_media":"","ocean_post_video_embed":"","ocean_link_format":"","ocean_link_format_target":"self","ocean_quote_format":"","ocean_quote_format_link":"post","ocean_gallery_link_images":"on","ocean_gallery_id":[],"footnotes":""},"categories":[18],"tags":[],"class_list":["post-2057","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops","entry","has-media"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Gitea Actions : mettre en place un pipeline CI\/CD auto-h\u00e9berg\u00e9 - askem<\/title>\n<meta name=\"description\" content=\"ASKEM BUREAU D&#039;\u00c9TUDES ET DE FORMATION NUM\u00c9RIQUE. Nous vous assistons dans la transformation num\u00e9rique de vos outils, services et organisations tout en pla\u00e7ant l\u2019humain au c\u0153ur de notre d\u00e9marche d\u2019accompagnement.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/askem.eu\/en\/2026\/03\/10\/gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Gitea Actions : mettre en place un pipeline CI\/CD auto-h\u00e9berg\u00e9 - askem\" \/>\n<meta property=\"og:description\" content=\"ASKEM BUREAU D&#039;\u00c9TUDES ET DE FORMATION NUM\u00c9RIQUE. Nous vous assistons dans la transformation num\u00e9rique de vos outils, services et organisations tout en pla\u00e7ant l\u2019humain au c\u0153ur de notre d\u00e9marche d\u2019accompagnement.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/askem.eu\/en\/2026\/03\/10\/gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge\/\" \/>\n<meta property=\"og:site_name\" content=\"askem\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/fb.me\/askem.eu\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-10T09:03:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-10T09:03:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/mlpi0fxo3sth.i.optimole.com\/cb:3obA.c61\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/askem.eu\/wp-content\/uploads\/2026\/03\/sujet-askem-2026-03-10.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"800\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"askemadmin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"askemadmin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/askem.eu\\\/2026\\\/03\\\/10\\\/gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/askem.eu\\\/2026\\\/03\\\/10\\\/gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge\\\/\"},\"author\":{\"name\":\"askemadmin\",\"@id\":\"https:\\\/\\\/askem.eu\\\/#\\\/schema\\\/person\\\/8bbee74ab9a977d56bf4826662e9d2e9\"},\"headline\":\"Gitea Actions : mettre en place un pipeline CI\\\/CD auto-h\u00e9berg\u00e9\",\"datePublished\":\"2026-03-10T09:03:38+00:00\",\"dateModified\":\"2026-03-10T09:03:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/askem.eu\\\/2026\\\/03\\\/10\\\/gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge\\\/\"},\"wordCount\":1077,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/askem.eu\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/askem.eu\\\/2026\\\/03\\\/10\\\/gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\/\\/askem.eu\\/wp-content\\/uploads\\/2026\\/03\\/sujet-askem-2026-03-10.png\",\"articleSection\":[\"devops\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/askem.eu\\\/2026\\\/03\\\/10\\\/gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/askem.eu\\\/2026\\\/03\\\/10\\\/gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge\\\/\",\"url\":\"https:\\\/\\\/askem.eu\\\/2026\\\/03\\\/10\\\/gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge\\\/\",\"name\":\"Gitea Actions : mettre en place un pipeline CI\\\/CD auto-h\u00e9berg\u00e9 - askem\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/askem.eu\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/askem.eu\\\/2026\\\/03\\\/10\\\/gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/askem.eu\\\/2026\\\/03\\\/10\\\/gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\/\\/askem.eu\\/wp-content\\/uploads\\/2026\\/03\\/sujet-askem-2026-03-10.png\",\"datePublished\":\"2026-03-10T09:03:38+00:00\",\"dateModified\":\"2026-03-10T09:03:41+00:00\",\"description\":\"ASKEM BUREAU D'\u00c9TUDES ET DE FORMATION NUM\u00c9RIQUE. Nous vous assistons dans la transformation num\u00e9rique de vos outils, services et organisations tout en pla\u00e7ant l\u2019humain au c\u0153ur de notre d\u00e9marche d\u2019accompagnement.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/askem.eu\\\/2026\\\/03\\\/10\\\/gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/askem.eu\\\/2026\\\/03\\\/10\\\/gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/askem.eu\\\/2026\\\/03\\\/10\\\/gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge\\\/#primaryimage\",\"url\":\"https:\\/\\/askem.eu\\/wp-content\\/uploads\\/2026\\/03\\/sujet-askem-2026-03-10.png\",\"contentUrl\":\"https:\\/\\/askem.eu\\/wp-content\\/uploads\\/2026\\/03\\/sujet-askem-2026-03-10.png\",\"width\":1200,\"height\":800},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/askem.eu\\\/2026\\\/03\\\/10\\\/gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/askem.eu\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Gitea Actions : mettre en place un pipeline CI\\\/CD auto-h\u00e9berg\u00e9\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/askem.eu\\\/#website\",\"url\":\"https:\\\/\\\/askem.eu\\\/\",\"name\":\"askem\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/askem.eu\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/askem.eu\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/askem.eu\\\/#organization\",\"name\":\"Askem\",\"url\":\"https:\\\/\\\/askem.eu\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/askem.eu\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\/\\/mlpi0fxo3sth.i.optimole.com\\/cb:3obA.c61\\/w:760\\/h:480\\/q:mauto\\/f:best\\/https:\\/\\/askem.eu\\/wp-content\\/uploads\\/2020\\/10\\/logoGalaxieAskem3.png\",\"contentUrl\":\"https:\\/\\/mlpi0fxo3sth.i.optimole.com\\/cb:3obA.c61\\/w:760\\/h:480\\/q:mauto\\/f:best\\/https:\\/\\/askem.eu\\/wp-content\\/uploads\\/2020\\/10\\/logoGalaxieAskem3.png\",\"width\":760,\"height\":480,\"caption\":\"Askem\"},\"image\":{\"@id\":\"https:\\\/\\\/askem.eu\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/fb.me\\\/askem.eu\",\"https:\\\/\\\/linkedin.com\\\/company\\\/askem-eu\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/askem.eu\\\/#\\\/schema\\\/person\\\/8bbee74ab9a977d56bf4826662e9d2e9\",\"name\":\"askemadmin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a202f744ee3a4b6fdbe2ceb57fd84c72559337791a276662270d8d2fb7842e3f?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a202f744ee3a4b6fdbe2ceb57fd84c72559337791a276662270d8d2fb7842e3f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a202f744ee3a4b6fdbe2ceb57fd84c72559337791a276662270d8d2fb7842e3f?s=96&d=mm&r=g\",\"caption\":\"askemadmin\"},\"sameAs\":[\"https:\\\/\\\/askem.eu\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Gitea Actions : mettre en place un pipeline CI\/CD auto-h\u00e9berg\u00e9 - askem","description":"ASKEM BUREAU D'\u00c9TUDES ET DE FORMATION NUM\u00c9RIQUE. Nous vous assistons dans la transformation num\u00e9rique de vos outils, services et organisations tout en pla\u00e7ant l\u2019humain au c\u0153ur de notre d\u00e9marche d\u2019accompagnement.","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:\/\/askem.eu\/en\/2026\/03\/10\/gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge\/","og_locale":"en_US","og_type":"article","og_title":"Gitea Actions : mettre en place un pipeline CI\/CD auto-h\u00e9berg\u00e9 - askem","og_description":"ASKEM BUREAU D'\u00c9TUDES ET DE FORMATION NUM\u00c9RIQUE. Nous vous assistons dans la transformation num\u00e9rique de vos outils, services et organisations tout en pla\u00e7ant l\u2019humain au c\u0153ur de notre d\u00e9marche d\u2019accompagnement.","og_url":"https:\/\/askem.eu\/en\/2026\/03\/10\/gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge\/","og_site_name":"askem","article_publisher":"https:\/\/fb.me\/askem.eu","article_published_time":"2026-03-10T09:03:38+00:00","article_modified_time":"2026-03-10T09:03:41+00:00","og_image":[{"width":1200,"height":800,"url":"https:\/\/mlpi0fxo3sth.i.optimole.com\/cb:3obA.c61\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/askem.eu\/wp-content\/uploads\/2026\/03\/sujet-askem-2026-03-10.png","type":"image\/png"}],"author":"askemadmin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"askemadmin","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/askem.eu\/2026\/03\/10\/gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge\/#article","isPartOf":{"@id":"https:\/\/askem.eu\/2026\/03\/10\/gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge\/"},"author":{"name":"askemadmin","@id":"https:\/\/askem.eu\/#\/schema\/person\/8bbee74ab9a977d56bf4826662e9d2e9"},"headline":"Gitea Actions : mettre en place un pipeline CI\/CD auto-h\u00e9berg\u00e9","datePublished":"2026-03-10T09:03:38+00:00","dateModified":"2026-03-10T09:03:41+00:00","mainEntityOfPage":{"@id":"https:\/\/askem.eu\/2026\/03\/10\/gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge\/"},"wordCount":1077,"commentCount":0,"publisher":{"@id":"https:\/\/askem.eu\/#organization"},"image":{"@id":"https:\/\/askem.eu\/2026\/03\/10\/gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge\/#primaryimage"},"thumbnailUrl":"https:\/\/mlpi0fxo3sth.i.optimole.com\/cb:3obA.c61\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/askem.eu\/wp-content\/uploads\/2026\/03\/sujet-askem-2026-03-10.png","articleSection":["devops"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/askem.eu\/2026\/03\/10\/gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/askem.eu\/2026\/03\/10\/gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge\/","url":"https:\/\/askem.eu\/2026\/03\/10\/gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge\/","name":"Gitea Actions : mettre en place un pipeline CI\/CD auto-h\u00e9berg\u00e9 - askem","isPartOf":{"@id":"https:\/\/askem.eu\/#website"},"primaryImageOfPage":{"@id":"https:\/\/askem.eu\/2026\/03\/10\/gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge\/#primaryimage"},"image":{"@id":"https:\/\/askem.eu\/2026\/03\/10\/gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge\/#primaryimage"},"thumbnailUrl":"https:\/\/mlpi0fxo3sth.i.optimole.com\/cb:3obA.c61\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/askem.eu\/wp-content\/uploads\/2026\/03\/sujet-askem-2026-03-10.png","datePublished":"2026-03-10T09:03:38+00:00","dateModified":"2026-03-10T09:03:41+00:00","description":"ASKEM BUREAU D'\u00c9TUDES ET DE FORMATION NUM\u00c9RIQUE. Nous vous assistons dans la transformation num\u00e9rique de vos outils, services et organisations tout en pla\u00e7ant l\u2019humain au c\u0153ur de notre d\u00e9marche d\u2019accompagnement.","breadcrumb":{"@id":"https:\/\/askem.eu\/2026\/03\/10\/gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/askem.eu\/2026\/03\/10\/gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/askem.eu\/2026\/03\/10\/gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge\/#primaryimage","url":"https:\/\/mlpi0fxo3sth.i.optimole.com\/cb:3obA.c61\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/askem.eu\/wp-content\/uploads\/2026\/03\/sujet-askem-2026-03-10.png","contentUrl":"https:\/\/mlpi0fxo3sth.i.optimole.com\/cb:3obA.c61\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/askem.eu\/wp-content\/uploads\/2026\/03\/sujet-askem-2026-03-10.png","width":1200,"height":800},{"@type":"BreadcrumbList","@id":"https:\/\/askem.eu\/2026\/03\/10\/gitea-actions-mettre-en-place-un-pipeline-ci-cd-auto-heberge\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/askem.eu\/"},{"@type":"ListItem","position":2,"name":"Gitea Actions : mettre en place un pipeline CI\/CD auto-h\u00e9berg\u00e9"}]},{"@type":"WebSite","@id":"https:\/\/askem.eu\/#website","url":"https:\/\/askem.eu\/","name":"askem","description":"","publisher":{"@id":"https:\/\/askem.eu\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/askem.eu\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/askem.eu\/#organization","name":"Askem","url":"https:\/\/askem.eu\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/askem.eu\/#\/schema\/logo\/image\/","url":"https:\/\/mlpi0fxo3sth.i.optimole.com\/cb:3obA.c61\/w:760\/h:480\/q:mauto\/f:best\/https:\/\/askem.eu\/wp-content\/uploads\/2020\/10\/logoGalaxieAskem3.png","contentUrl":"https:\/\/mlpi0fxo3sth.i.optimole.com\/cb:3obA.c61\/w:760\/h:480\/q:mauto\/f:best\/https:\/\/askem.eu\/wp-content\/uploads\/2020\/10\/logoGalaxieAskem3.png","width":760,"height":480,"caption":"Askem"},"image":{"@id":"https:\/\/askem.eu\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/fb.me\/askem.eu","https:\/\/linkedin.com\/company\/askem-eu"]},{"@type":"Person","@id":"https:\/\/askem.eu\/#\/schema\/person\/8bbee74ab9a977d56bf4826662e9d2e9","name":"askemadmin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/a202f744ee3a4b6fdbe2ceb57fd84c72559337791a276662270d8d2fb7842e3f?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a202f744ee3a4b6fdbe2ceb57fd84c72559337791a276662270d8d2fb7842e3f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a202f744ee3a4b6fdbe2ceb57fd84c72559337791a276662270d8d2fb7842e3f?s=96&d=mm&r=g","caption":"askemadmin"},"sameAs":["https:\/\/askem.eu"]}]}},"_links":{"self":[{"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/posts\/2057","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/comments?post=2057"}],"version-history":[{"count":1,"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/posts\/2057\/revisions"}],"predecessor-version":[{"id":2059,"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/posts\/2057\/revisions\/2059"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/media\/2058"}],"wp:attachment":[{"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/media?parent=2057"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/categories?post=2057"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/tags?post=2057"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}