support runner labels

This commit is contained in:
Reinier Timmer 2020-04-24 11:29:52 +02:00
parent 2567f6ee4e
commit 8c5b776807
7 changed files with 45 additions and 1 deletions

View File

@ -31,6 +31,9 @@ type RunnerSpec struct {
// +kubebuilder:validation:Pattern=`^[^/]*$`
Repository string `json:"repository,omitempty"`
// +optional
Labels []string `json:"labels,omitempty"`
// +optional
Containers []corev1.Container `json:"containers,omitempty"`
// +optional
@ -84,6 +87,7 @@ type RunnerStatus struct {
type RunnerStatusRegistration struct {
Organization string `json:"organization"`
Repository string `json:"repository,omitempty"`
Labels []string `json:"labels,omitempty"`
Token string `json:"token"`
ExpiresAt metav1.Time `json:"expiresAt"`
}
@ -92,6 +96,7 @@ type RunnerStatusRegistration struct {
// +kubebuilder:subresource:status
// +kubebuilder:printcolumn:JSONPath=".spec.organization",name=Organization,type=string
// +kubebuilder:printcolumn:JSONPath=".spec.repository",name=Repository,type=string
// +kubebuilder:printcolumn:JSONPath=".spec.labels",name=Labels,type=string
// +kubebuilder:printcolumn:JSONPath=".status.phase",name=Status,type=string
// Runner is the Schema for the runners API

View File

@ -277,6 +277,11 @@ func (in *RunnerReplicaSetStatus) DeepCopy() *RunnerReplicaSetStatus {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *RunnerSpec) DeepCopyInto(out *RunnerSpec) {
*out = *in
if in.Labels != nil {
in, out := &in.Labels, &out.Labels
*out = make([]string, len(*in))
copy(*out, *in)
}
if in.Containers != nil {
in, out := &in.Containers, &out.Containers
*out = make([]v1.Container, len(*in))
@ -404,6 +409,11 @@ func (in *RunnerStatus) DeepCopy() *RunnerStatus {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *RunnerStatusRegistration) DeepCopyInto(out *RunnerStatusRegistration) {
*out = *in
if in.Labels != nil {
in, out := &in.Labels, &out.Labels
*out = make([]string, len(*in))
copy(*out, *in)
}
in.ExpiresAt.DeepCopyInto(&out.ExpiresAt)
}

View File

@ -4111,6 +4111,10 @@ spec:
- name
type: object
type: array
labels:
items:
type: string
type: array
nodeSelector:
additionalProperties:
type: string

View File

@ -4111,6 +4111,10 @@ spec:
- name
type: object
type: array
labels:
items:
type: string
type: array
nodeSelector:
additionalProperties:
type: string

View File

@ -15,6 +15,9 @@ spec:
- JSONPath: .spec.repository
name: Repository
type: string
- JSONPath: .spec.labels
name: Labels
type: string
- JSONPath: .status.phase
name: Status
type: string
@ -3857,6 +3860,10 @@ spec:
- name
type: object
type: array
labels:
items:
type: string
type: array
nodeSelector:
additionalProperties:
type: string
@ -6316,6 +6323,10 @@ spec:
expiresAt:
format: date-time
type: string
labels:
items:
type: string
type: array
organization:
type: string
repository:

View File

@ -20,6 +20,7 @@ import (
"context"
"fmt"
"reflect"
"strings"
"github.com/go-logr/logr"
"k8s.io/apimachinery/pkg/api/errors"
@ -119,6 +120,7 @@ func (r *RunnerReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) {
updated.Status.Registration = v1alpha1.RunnerStatusRegistration{
Organization: runner.Spec.Organization,
Repository: runner.Spec.Repository,
Labels: runner.Spec.Labels,
Token: rt.GetToken(),
ExpiresAt: metav1.NewTime(rt.GetExpiresAt().Time),
}
@ -262,6 +264,10 @@ func (r *RunnerReconciler) newPod(runner v1alpha1.Runner) (corev1.Pod, error) {
Name: "RUNNER_REPO",
Value: runner.Spec.Repository,
},
{
Name: "RUNNER_LABELS",
Value: strings.Join(runner.Spec.Labels, ","),
},
{
Name: "RUNNER_TOKEN",
Value: runner.Status.Registration.Token,

View File

@ -16,13 +16,17 @@ else
exit 1
fi
if [ -n "${RUNNER_LABELS}" ]; then
LABEL_ARG="--labels ${RUNNER_LABELS}"
fi
if [ -z "${RUNNER_TOKEN}" ]; then
echo "RUNNER_TOKEN must be set" 1>&2
exit 1
fi
cd /runner
./config.sh --unattended --replace --name "${RUNNER_NAME}" --url "https://github.com/${ATTACH}" --token "${RUNNER_TOKEN}"
./config.sh --unattended --replace --name "${RUNNER_NAME}" --url "https://github.com/${ATTACH}" --token "${RUNNER_TOKEN}" ${LABEL_ARG}
unset RUNNER_NAME RUNNER_REPO RUNNER_TOKEN
exec ./run.sh --once