commit
830e4bc91e
|
|
@ -27,7 +27,7 @@ import (
|
|||
type ReceiverSpec struct {
|
||||
// Type of webhook sender, used to determine
|
||||
// the validation procedure and payload deserialization.
|
||||
// +kubebuilder:validation:Enum=generic;github;gitlab;bitbucket;harbor;dockerhub
|
||||
// +kubebuilder:validation:Enum=generic;github;gitlab;bitbucket;harbor;dockerhub;quay
|
||||
// +required
|
||||
Type string `json:"type"`
|
||||
|
||||
|
|
@ -69,6 +69,7 @@ const (
|
|||
BitbucketReceiver string = "bitbucket"
|
||||
HarborReceiver string = "harbor"
|
||||
DockerHubReceiver string = "dockerhub"
|
||||
QuayReceiver string = "quay"
|
||||
)
|
||||
|
||||
func ReceiverReady(receiver Receiver, reason, message, url string) Receiver {
|
||||
|
|
|
|||
|
|
@ -109,6 +109,7 @@ spec:
|
|||
- bitbucket
|
||||
- harbor
|
||||
- dockerhub
|
||||
- quay
|
||||
type: string
|
||||
required:
|
||||
- resources
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ with an exponential backoff of maximum 30 seconds.
|
|||
The notification controller handles webhook requests on a dedicated port.
|
||||
This port can be used to create a Kubernetes LoadBalancer Service or
|
||||
Ingress to expose the receiver endpoint outside the cluster
|
||||
to be accessed by GitHub, GitLab, Bitbucket, Harbor, DockerHub, Jenkins, etc.
|
||||
to be accessed by GitHub, GitLab, Bitbucket, Harbor, DockerHub, Jenkins, Quay, etc.
|
||||
|
||||
Receiver API:
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ reconciliation for a group of resources.
|
|||
type ReceiverSpec struct {
|
||||
// Type of webhook sender, used to determine
|
||||
// the validation procedure and payload deserialization.
|
||||
// +kubebuilder:validation:Enum=generic;github;gitlab;harbor;dockerhub
|
||||
// +kubebuilder:validation:Enum=generic;github;gitlab;harbor;dockerhub;quay
|
||||
// +required
|
||||
Type string `json:"type"`
|
||||
|
||||
|
|
@ -44,6 +44,7 @@ const (
|
|||
BitbucketReceiver string = "bitbucket"
|
||||
HarborReceiver string = "harbor"
|
||||
DockerHubReceiver string = "dockerhub"
|
||||
QuayReceiver string = "quay"
|
||||
)
|
||||
```
|
||||
|
||||
|
|
@ -181,6 +182,23 @@ spec:
|
|||
name: webapp
|
||||
```
|
||||
|
||||
### Quay receiver
|
||||
|
||||
```yaml
|
||||
apiVersion: notification.toolkit.fluxcd.io/v1beta1
|
||||
kind: Receiver
|
||||
metadata:
|
||||
name: quay-receiver
|
||||
namespace: default
|
||||
spec:
|
||||
type: quay
|
||||
secretRef:
|
||||
name: webhook-token
|
||||
resources:
|
||||
- kind: ImageRepository
|
||||
name: webapp
|
||||
```
|
||||
|
||||
### Generic receiver
|
||||
|
||||
```yaml
|
||||
|
|
|
|||
|
|
@ -175,6 +175,21 @@ func (s *ReceiverServer) validate(ctx context.Context, receiver v1beta1.Receiver
|
|||
|
||||
s.logger.Info("handling Bitbucket server event: "+event, "receiver", receiver.Name)
|
||||
return nil
|
||||
case v1beta1.QuayReceiver:
|
||||
type payload struct {
|
||||
DockerUrl string `json:"docker_url"`
|
||||
UpdatedTags []string `json:"updated_tags"`
|
||||
}
|
||||
|
||||
var p payload
|
||||
if err := json.NewDecoder(r.Body).Decode(&p); err != nil {
|
||||
return fmt.Errorf("cannot decode Quay webhook payload")
|
||||
}
|
||||
|
||||
s.logger.Info(
|
||||
fmt.Sprintf("handling event from %s", p.DockerUrl),
|
||||
"receiver", receiver.Name)
|
||||
return nil
|
||||
case v1beta1.HarborReceiver:
|
||||
if r.Header.Get("Authorization") != token {
|
||||
return fmt.Errorf("the Harbor Authorization header value does not match the receiver token")
|
||||
|
|
|
|||
Loading…
Reference in New Issue