From 61b16c60aabb41ef273de39c7c3df9249152cf7d Mon Sep 17 00:00:00 2001
From: Patrick Schratz <patrick.schratz@gmail.com>
Date: Tue, 10 Oct 2023 12:14:22 +0200
Subject: [PATCH] feat(woodpecker): support `services:` key (#25111)

---
 .../woodpecker/__fixtures__/.woodpecker.yml    | 10 +++++++++-
 lib/modules/manager/woodpecker/extract.spec.ts | 18 ++++++++++++++++++
 lib/modules/manager/woodpecker/extract.ts      |  2 +-
 3 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/lib/modules/manager/woodpecker/__fixtures__/.woodpecker.yml b/lib/modules/manager/woodpecker/__fixtures__/.woodpecker.yml
index aaa5c46759..dc384d5d03 100644
--- a/lib/modules/manager/woodpecker/__fixtures__/.woodpecker.yml
+++ b/lib/modules/manager/woodpecker/__fixtures__/.woodpecker.yml
@@ -1,4 +1,8 @@
-pipeline:
+clone:
+  git:
+    image: woodpeckerci/plugin-git:2.0.3
+
+steps:
   redis:
     image: quay.io/something/redis:alpine
 
@@ -22,3 +26,7 @@ pipeline:
 
   debugapp:
     image: app-local-debug
+
+services:
+  service-postgres:
+    image: postgres:9.5.0
diff --git a/lib/modules/manager/woodpecker/extract.spec.ts b/lib/modules/manager/woodpecker/extract.spec.ts
index d08ca2bbcd..5288df6e77 100644
--- a/lib/modules/manager/woodpecker/extract.spec.ts
+++ b/lib/modules/manager/woodpecker/extract.spec.ts
@@ -22,6 +22,15 @@ describe('modules/manager/woodpecker/extract', () => {
       const res = extractPackageFile(yamlFile, '', {});
       expect(res).toEqual({
         deps: [
+          {
+            depName: 'woodpeckerci/plugin-git',
+            currentValue: '2.0.3',
+            currentDigest: undefined,
+            replaceString: 'woodpeckerci/plugin-git:2.0.3',
+            autoReplaceStringTemplate:
+              '{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}',
+            datasource: 'docker',
+          },
           {
             depName: 'quay.io/something/redis',
             currentValue: 'alpine',
@@ -94,6 +103,15 @@ describe('modules/manager/woodpecker/extract', () => {
               '{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}',
             datasource: 'docker',
           },
+          {
+            depName: 'postgres',
+            currentValue: '9.5.0',
+            currentDigest: undefined,
+            replaceString: 'postgres:9.5.0',
+            autoReplaceStringTemplate:
+              '{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}',
+            datasource: 'docker',
+          },
         ],
       });
     });
diff --git a/lib/modules/manager/woodpecker/extract.ts b/lib/modules/manager/woodpecker/extract.ts
index 8a7c6ff2c1..a0f4f1eaa7 100644
--- a/lib/modules/manager/woodpecker/extract.ts
+++ b/lib/modules/manager/woodpecker/extract.ts
@@ -8,7 +8,7 @@ import type { WoodpeckerConfig } from './types';
 function woodpeckerVersionDecider(
   woodpeckerConfig: WoodpeckerConfig
 ): (keyof WoodpeckerConfig)[] {
-  const keys = ['clone', 'steps', 'pipeline'];
+  const keys = ['clone', 'steps', 'pipeline', 'services'];
   return Object.keys(woodpeckerConfig).filter((key) =>
     keys.includes(key)
   ) as (keyof WoodpeckerConfig)[];
-- 
GitLab