woodpecker-ci / woodpecker

Woodpecker is a simple, yet powerful CI/CD engine with great extensibility.
https://woodpecker-ci.org
Apache License 2.0
4.07k stars 353 forks source link

Current `next` does not run pipelines, because of gRPC API incompatibility #600

Closed BracketJohn closed 2 years ago

BracketJohn commented 2 years ago

Component

agent

Describe the bug

On a fresh next kubernetes deploy via helm, I'm getting:

{"level":"warn","repo":"XXX","build":"1","id":"2","error":"rpc error: code = Unknown desc = Proc finished with exitcode 1, Error response from daemon: client version 1.41 is too new. Maximum supported API version is 1.40","time":"2021-12-12T18:12:54Z","caller":"/woodpecker/src/github.com/woodpecker-ci/woodpecker/agent/runner.go:107","message":"cancel signal received"}

Whenever I want to run a pipeline. As a sidenote: We're using github, and still the error is thrown. In #597 the report mentioned gitlab as a possible source.

System Info

Helm manifest agent:

---
# Source: woodpecker-agent/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: RELEASE-NAME-woodpecker-agent
  labels:
    helm.sh/chart: woodpecker-agent-1
    app.kubernetes.io/name: woodpecker-agent
    app.kubernetes.io/instance: RELEASE-NAME
    app.kubernetes.io/version: "1"
    app.kubernetes.io/managed-by: Helm
---
# Source: woodpecker-agent/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: RELEASE-NAME-woodpecker-agent
  labels:
    helm.sh/chart: woodpecker-agent-1
    app.kubernetes.io/name: woodpecker-agent
    app.kubernetes.io/instance: RELEASE-NAME
    app.kubernetes.io/version: "1"
    app.kubernetes.io/managed-by: Helm
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: woodpecker-agent
      app.kubernetes.io/instance: RELEASE-NAME
  template:
    metadata:
      labels:
        app.kubernetes.io/name: woodpecker-agent
        app.kubernetes.io/instance: RELEASE-NAME
    spec:
      serviceAccountName: RELEASE-NAME-woodpecker-agent
      securityContext:
        {}
      containers:
        - name: woodpecker-agent
          securityContext:
            {}
          image: "woodpeckerci/woodpecker-agent:next"
          imagePullPolicy: Always
          ports:
            - name: http
              containerPort: 3000
              protocol: TCP
          resources:
            {}
          volumeMounts:
            - name: sock-dir
              mountPath: /var/run
          env:
            - name: WOODPECKER_SERVER
              value: "woodpecker-server.woodpecker-ci.svc.cluster.local:9000"
          envFrom:
            - secretRef:
                name: woodpecker-secret
        - name: dind
          image: "docker:19.03.5-dind"
          env:
          - name: DOCKER_DRIVER
            value: overlay2
          resources:
            {}
          securityContext:
            privileged: true
          volumeMounts:
          - name: sock-dir
            mountPath: /var/run
      volumes:
      - name: sock-dir
        emptyDir: {}

Helm manifest server:

---
# Source: woodpecker-server/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: RELEASE-NAME-woodpecker-server
  labels:
    helm.sh/chart: woodpecker-server-1
    app.kubernetes.io/name: woodpecker-server
    app.kubernetes.io/instance: RELEASE-NAME
    app.kubernetes.io/version: "1"
    app.kubernetes.io/managed-by: Helm
---
# Source: woodpecker-server/templates/persistentvolumeclaim.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: RELEASE-NAME-woodpecker-server
  labels:
    helm.sh/chart: woodpecker-server-1
    app.kubernetes.io/name: woodpecker-server
    app.kubernetes.io/instance: RELEASE-NAME
    app.kubernetes.io/version: "1"
    app.kubernetes.io/managed-by: Helm
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: "gp2"
  resources:
    requests:
      storage: "10Gi"
---
# Source: woodpecker-server/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
  name: RELEASE-NAME-woodpecker-server
  labels:
    helm.sh/chart: woodpecker-server-1
    app.kubernetes.io/name: woodpecker-server
    app.kubernetes.io/instance: RELEASE-NAME
    app.kubernetes.io/version: "1"
    app.kubernetes.io/managed-by: Helm
spec:
  type: ClusterIP
  ports:
    - protocol: TCP
      name: http
      port: 80
      targetPort: 8000
    - protocol: TCP
      name: grpc
      port: 9000
      targetPort: 9000
  selector:
    app.kubernetes.io/name: woodpecker-server
    app.kubernetes.io/instance: RELEASE-NAME
---
# Source: woodpecker-server/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: RELEASE-NAME-woodpecker-server
  labels:
    helm.sh/chart: woodpecker-server-1
    app.kubernetes.io/name: woodpecker-server
    app.kubernetes.io/instance: RELEASE-NAME
    app.kubernetes.io/version: "1"
    app.kubernetes.io/managed-by: Helm
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: woodpecker-server
      app.kubernetes.io/instance: RELEASE-NAME
  template:
    metadata:
      labels:
        app.kubernetes.io/name: woodpecker-server
        app.kubernetes.io/instance: RELEASE-NAME
    spec:
      serviceAccountName: RELEASE-NAME-woodpecker-server
      securityContext:
        {}
      containers:
        - name: woodpecker-server
          securityContext:
            {}
          image: "docker.io/woodpeckerci/woodpecker-server:next"
          imagePullPolicy: Always
          ports:
            - name: http
              containerPort: 8000
              protocol: TCP
          livenessProbe:
            httpGet:
              path: /healthz
              port: 8000
          readinessProbe:
            httpGet:
              path: /healthz
              port: 8000
          resources:
            {}
          volumeMounts:
          - name: storage-volume
            mountPath: /var/lib/woodpecker
          env:
            - name: WOODPECKER_ADMIN
              value: "BracketJohn"
            - name: WOODPECKER_GITHUB
              value: "true"
            - name: WOODPECKER_GITLAB
              value: "false"
            - name: WOODPECKER_HOST
              value: "https://<REDACTED>"
          envFrom:
            - secretRef:
                name: woodpecker-github-client
            - secretRef:
                name: woodpecker-github-secret
            - secretRef:
                name: woodpecker-secret
      volumes:
      - name: storage-volume
        persistentVolumeClaim:
          claimName: RELEASE-NAME-woodpecker-server
---
# Source: woodpecker-server/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: RELEASE-NAME-woodpecker-server
  labels:
    helm.sh/chart: woodpecker-server-1
    app.kubernetes.io/name: woodpecker-server
    app.kubernetes.io/instance: RELEASE-NAME
    app.kubernetes.io/version: "1"
    app.kubernetes.io/managed-by: Helm
  annotations:
    cert-manager.io/cluster-issuer: cloudflare-issuer
    kubernetes.io/ingress.class: nginx
spec:
  tls:
    - hosts:
        - "<REDACTED>"
      secretName: woodpecker-ci-tls-certificate
  rules:
    - host: "<REDACTED>"
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: RELEASE-NAME-woodpecker-server
                port:
                  number: 80

Looking at the deployed versions, I get the following image id's:

These match the newest published next image ids

Additional context

This is a follow-up issue of #597 - thanks to the quick work of @anbraten and @6543 there was a quick fix which I tested right away.

Validations

mislavperi commented 2 years ago

For anyone in the future, as the time of writing, this error can occur because of old Docker version, make sure to update your Docker version, (updated from 19.x to 20.x and the pipelines worked)

anbraten commented 2 years ago

Note: Add to #387