Skip to content

Commit

Permalink
feat(pr-workflow): add crd and controller for event handling
Browse files Browse the repository at this point in the history
  • Loading branch information
Alan-pad authored and spoukke committed Apr 23, 2023
1 parent 4689c75 commit 4c020cb
Show file tree
Hide file tree
Showing 43 changed files with 2,151 additions and 328 deletions.
1 change: 0 additions & 1 deletion .goreleaser.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ builds:
- -X ${PACKAGE}/internal/version.BuildTimestamp=${BUILD_TIMESTAMP}
goos:
- linux
- darwin
main: ./
binary: burrito
archives:
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ ENVTEST ?= $(LOCALBIN)/setup-envtest

## Tool Versions
KUSTOMIZE_VERSION ?= v3.8.7
CONTROLLER_TOOLS_VERSION ?= v0.10.0
CONTROLLER_TOOLS_VERSION ?= v0.11.2

KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh"
.PHONY: kustomize
Expand Down
2 changes: 0 additions & 2 deletions api/v1alpha1/terraformlayer_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,10 @@ type TerraformLayerSpec struct {
TerraformConfig TerraformConfig `json:"terraform,omitempty"`
Repository TerraformLayerRepository `json:"repository,omitempty"`
RemediationStrategy RemediationStrategy `json:"remediationStrategy,omitempty"`
PlanOnPullRequest bool `json:"planOnPullRequest,omitempty"`
OverrideRunnerSpec OverrideRunnerSpec `json:"overrideRunnerSpec,omitempty"`
}

type TerraformLayerRepository struct {
Kind string `json:"kind,omitempty"`
Name string `json:"name,omitempty"`
Namespace string `json:"namespace,omitempty"`
}
Expand Down
69 changes: 69 additions & 0 deletions api/v1alpha1/terraformpullrequest_types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
/*
Copyright 2022.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package v1alpha1

import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN!
// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized.

// TerraformPullRequestSpec defines the desired state of TerraformPullRequest
type TerraformPullRequestSpec struct {
Provider string `json:"provider,omitempty"`
Branch string `json:"branch,omitempty"`
Base string `json:"base,omitempty"`
ID string `json:"id,omitempty"`
Repository TerraformLayerRepository `json:"repository,omitempty"`
}

// TerraformPullRequestStatus defines the observed state of TerraformPullRequest
type TerraformPullRequestStatus struct {
Conditions []metav1.Condition `json:"conditions,omitempty"`
State string `json:"state,omitempty"`
}

// +kubebuilder:object:root=true
// +kubebuilder:resource:shortName=pr;prs;pullrequest;pullrequests;
// +kubebuilder:subresource:status
// +kubebuilder:printcolumn:name="ID",type=string,JSONPath=`.spec.id`
// +kubebuilder:printcolumn:name="State",type=string,JSONPath=`.status.state`
// +kubebuilder:printcolumn:name="Provider",type=string,JSONPath=`.spec.provider`
// +kubebuilder:printcolumn:name="Base",type=string,JSONPath=`.spec.base`
// +kubebuilder:printcolumn:name="Branch",type=string,JSONPath=`.spec.branch`
// TerraformPullRequest is the Schema for the TerraformPullRequests API
type TerraformPullRequest struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`

Spec TerraformPullRequestSpec `json:"spec,omitempty"`
Status TerraformPullRequestStatus `json:"status,omitempty"`
}

//+kubebuilder:object:root=true

// TerraformPullRequestList contains a list of TerraformPullRequest
type TerraformPullRequestList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []TerraformPullRequest `json:"items"`
}

func init() {
SchemeBuilder.Register(&TerraformPullRequest{}, &TerraformPullRequestList{})
}
97 changes: 97 additions & 0 deletions api/v1alpha1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion cmd/controllers/start.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ func buildControllersStartCmd(app *burrito.App) *cobra.Command {
defaultOnErrorTimer, _ := time.ParseDuration("1m")
defaultWaitActionTimer, _ := time.ParseDuration("1m")

cmd.Flags().StringSliceVar(&app.Config.Controller.Types, "types", []string{"layer", "repository"}, "list of controllers to start")
cmd.Flags().StringSliceVar(&app.Config.Controller.Types, "types", []string{"layer", "repository", "pullrequest"}, "list of controllers to start")

cmd.Flags().DurationVar(&app.Config.Controller.Timers.DriftDetection, "drift-detection-period", defaultDriftDetectionTimer, "period between two plans. Must end with s, m or h.")
cmd.Flags().DurationVar(&app.Config.Controller.Timers.OnError, "on-error-period", defaultOnErrorTimer, "period between two runners launch when an error occurred. Must end with s, m or h.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -259,7 +259,9 @@ spec:
- name
type: object
type: array
x-kubernetes-list-type: set
x-kubernetes-list-map-keys:
- name
x-kubernetes-list-type: map
limits:
additionalProperties:
anyOf:
Expand Down Expand Up @@ -965,7 +967,9 @@ spec:
- name
type: object
type: array
x-kubernetes-list-type: set
x-kubernetes-list-map-keys:
- name
x-kubernetes-list-type: map
limits:
additionalProperties:
anyOf:
Expand Down Expand Up @@ -1983,17 +1987,13 @@ spec:
type: object
path:
type: string
planOnPullRequest:
type: boolean
remediationStrategy:
enum:
- dry
- autoApply
type: string
repository:
properties:
kind:
type: string
name:
type: string
namespace:
Expand Down
Loading

0 comments on commit 4c020cb

Please sign in to comment.