1
0
mirror of https://github.com/woodpecker-ci/woodpecker.git synced 2025-11-29 21:48:14 +02:00

Add ports into pipeline backend step model (#2656)

Closes #2655.


[Pipeline](https://woodpecker-ci.org/docs/next/usage/services#complete-pipeline-example):
```yaml
services:
  database:
    image: mysql
    environment:
      - MYSQL_DATABASE=test
      - MYSQL_ROOT_PASSWORD=example
    ports:
      - 3306

steps:
  get-version:
    image: ubuntu
    commands:
      - ( apt update && apt dist-upgrade -y && apt install -y mysql-client 2>&1 )> /dev/null
      - sleep 60s # need to wait for mysql-server init
      - echo 'SHOW VARIABLES LIKE "version"' | mysql -uroot -hdatabase test -pexample
```

Service:
```yaml
apiVersion: v1
kind: Service
metadata:
  name: wp-01hdq6gbkw1mn6k1655fs3rntf-0-services-0
  namespace: woodpecker-runtime
  ...
  selfLink: >-
    /api/v1/namespaces/woodpecker-runtime/services/wp-01hdq6gbkw1mn6k1655fs3rntf-0-services-0
status:
  loadBalancer: {}
spec:
  ports:
    - protocol: TCP
      port: 3306
      targetPort: 3306
  selector:
    step: database
  clusterIP: 10.43.180.120
  clusterIPs:
    - 10.43.180.120
  type: ClusterIP
  sessionAffinity: None
  ipFamilies:
    - IPv4
  ipFamilyPolicy: SingleStack
  internalTrafficPolicy: Cluster
```
This commit is contained in:
Thomas Anderson
2023-11-02 06:12:41 +03:00
committed by GitHub
parent 3620c84da4
commit de53b906e8
7 changed files with 18 additions and 18 deletions

View File

@@ -15,24 +15,17 @@
package kubernetes
import (
"fmt"
"strconv"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/intstr"
)
func Service(namespace, name, podName string, ports []string) (*v1.Service, error) {
func Service(namespace, name, podName string, ports []uint16) (*v1.Service, error) {
var svcPorts []v1.ServicePort
for _, p := range ports {
i, err := strconv.Atoi(p)
if err != nil {
return nil, fmt.Errorf("Could not parse service port %s as integer", p)
}
for _, port := range ports {
svcPorts = append(svcPorts, v1.ServicePort{
Port: int32(i),
TargetPort: intstr.IntOrString{IntVal: int32(i)},
Port: int32(port),
TargetPort: intstr.IntOrString{IntVal: int32(port)},
})
}