diff --git a/config/defaults.json b/config/defaults.json index 05c82c71..bf6c7ed9 100644 --- a/config/defaults.json +++ b/config/defaults.json @@ -17,7 +17,8 @@ "machine_type": "e2-highcpu-16", "runner_scaling": "manual", "scale_down": 1, - "arc_version": "v0.26.0", - "helm_version": "0.21.1" + "arc_version": "v0.27.0", + "helm_version": "0.21.1", + "actions_runner_version": "ubuntu:22.04" } } diff --git a/scripts/decrease-runners.sh b/scripts/decrease-runners.sh index de893919..f66884a9 100755 --- a/scripts/decrease-runners.sh +++ b/scripts/decrease-runners.sh @@ -76,26 +76,26 @@ case $ARCH in ;; esac # the specific template -cp $SCDIR/k8s/runners-stream-ci-${SCALING}-template.yaml runners-stream-ci-change.yaml +cp $SCDIR/k8s/runners-stream-ci-${SCALING}-template.yaml runners-stream-ci.yaml -IMAGE_SHA=$(wget -q -O- https://hub.docker.com/v2/repositories/summerwind/actions-runner/tags | jq --arg os $OS --arg arch $ARCH '.results | map(select(.name="latest")) | .[0].images | map(select(.os==$os and .architecture==$arch)) | .[0].digest' | sed 's/\"//g') -if [ "$IMAGE_SHA" == "" ]; then - IMAGE_SHA="latest" +ARC_RUNNER_VER=$($SCDIR/determine-default.sh stream-apps-gh-runners "actions_runner_version") +if [ "$ARC_RUNNER_VER" == "" ]; then + ARC_RUNNER_VER=latest fi -sed -i 's/tag-placeholder/'"$IMAGE_SHA"'/g' runners-stream-ci-change.yaml +sed -i 's/tag-placeholder/'"$ARC_RUNNER_VER"'/g' runners-stream-ci.yaml if [ "$SCALING" == "auto" ]; then MAX_RUNNERS=$((MAX_RUNNERS - DEC)) echo "Runners: changing scaling min: $MIN_RUNNERS, max: $MAX_RUNNERS" - sed -i 's/max-replicas-placeholder/'"$MAX_RUNNERS"'/g' runners-stream-ci-change.yaml - sed -i 's/min-replicas-placeholder/'"$MIN_RUNNERS"'/g' runners-stream-ci-change.yaml + sed -i 's/max-replicas-placeholder/'"$MAX_RUNNERS"'/g' runners-stream-ci.yaml + sed -i 's/min-replicas-placeholder/'"$MIN_RUNNERS"'/g' runners-stream-ci.yaml else echo "Runners:$CURRENT decrease by $DEC to $TARGET" - sed -i 's/replicas-placeholder/'"$TARGET"'/g' runners-stream-ci-change.yaml + sed -i 's/replicas-placeholder/'"$TARGET"'/g' runners-stream-ci.yaml fi -cmp --silent "$SCDIR/k8s/runners-stream-ci-${SCALING}-template.yaml" runners-stream-ci-change.yaml +cmp --silent "$SCDIR/k8s/runners-stream-ci-${SCALING}-template.yaml" runners-stream-ci.yaml RC=$? if ((RC != 0)); then - kubectl apply -f runners-stream-ci-change.yaml + kubectl apply -f runners-stream-ci.yaml echo "Runners: changed to $RUNNERS" if [ "$SCALING" != "auto" ]; then $SCDIR/wait-k8s.sh 1 --for=condition=ready --timeout=1m pod -l runner-deployment-name=runners-stream-ci --all-namespaces=true @@ -103,5 +103,5 @@ if ((RC != 0)); then else echo "Runners: unchanged" fi -rm -f runners-stream-ci-change.yaml +rm -f runners-stream-ci.yaml $SCDIR/check-runners.sh diff --git a/scripts/deploy-gh-runners.sh b/scripts/deploy-gh-runners.sh index c8904d86..193ff6e5 100755 --- a/scripts/deploy-gh-runners.sh +++ b/scripts/deploy-gh-runners.sh @@ -102,13 +102,27 @@ else $SCDIR/wait-deployment.sh $SVC $NS fi echo "Creating runners" -kubectl apply -f "$SCDIR/k8s/runners-stream-ci-large.yaml" +ARC_VER=$($SCDIR/determine-default.sh stream-apps-gh-runners "arc_version") +ARC_RUNNER_VER=$($SCDIR/determine-default.sh stream-apps-gh-runners "actions_runner_version") +if [ "$ARC_RUNNER_VER" == "" ]; then + ARC_RUNNER_VER=latest +fi +SCALING=$($SCDIR/determine-default.sh stream-apps-gh-runners runner_scaling) +cp $SCDIR/k8s/runners-stream-ci-${SCALING}-template.yaml runners-stream-ci.yaml +sed -i 's/tag-placeholder/'"$ARC_RUNNER_VER"'/g' runners-stream-ci.yaml +echo "actions runner version = $ARC_RUNNER_VER" +cmp --silent "$SCDIR/k8s/runners-stream-ci-${SCALING}-template.yaml" runners-stream-ci.yaml +RC=$? +if ((RC != 0)); then + echo "Expected changes to $SCDIR/k8s/runners-stream-ci-${SCALING}-template.yaml" + cat runners-stream-ci.yaml +fi +kubectl apply -f runners-stream-ci.yaml SCALING=$($SCDIR/determine-default.sh stream-apps-gh-runners "runner_scaling") if [ "$SCALING" == "" ] || [ "$SCALING" == "null" ]; then echo "Cannot determine runner_scaling" exit 2 fi -kubectl apply -f "$SCDIR/k8s/runners-stream-ci-${SCALING}.yaml" if [ "$SCALING" != "auto" ]; then $SCDIR/wait-k8s.sh 1 --for=condition=ready --timeout=1m pod -l runner-deployment-name=runners-stream-ci fi diff --git a/scripts/increase-runners.sh b/scripts/increase-runners.sh index bdde1ddf..0c294bf4 100755 --- a/scripts/increase-runners.sh +++ b/scripts/increase-runners.sh @@ -29,7 +29,7 @@ INC=$1 # shellcheck disable=SC2003 MAX_RUNNERS=$2 SCALING=$($SCDIR/determine-default.sh stream-apps-gh-runners runner_scaling) -cp $SCDIR/k8s/runners-stream-ci-${SCALING}-template.yaml runners-stream-ci-change.yaml +cp $SCDIR/k8s/runners-stream-ci-${SCALING}-template.yaml runners-stream-ci.yaml if [ "$SCALING" == "auto" ]; then if [ "$MAX_RUNNERS" == "" ]; then @@ -80,24 +80,25 @@ case $ARCH in echo "Architecture:$ARCH may not be supported by summerwind/actions-runner" ;; esac -IMAGE_SHA=$(wget -q -O- https://hub.docker.com/v2/repositories/summerwind/actions-runner/tags | jq --arg os $OS --arg arch $ARCH '.results | map(select(.name="latest")) | .[0].images | map(select(.os==$os and .architecture==$arch)) | .[0].digest' | sed 's/\"//g') -if [ "$IMAGE_SHA" == "" ]; then - IMAGE_SHA="latest" + +ARC_RUNNER_VER=$($SCDIR/determine-default.sh stream-apps-gh-runners "actions_runner_version") +if [ "$ARC_RUNNER_VER" == "" ]; then + ARC_RUNNER_VER=latest fi -sed -i 's/tag-placeholder/'"$IMAGE_SHA"'/g' runners-stream-ci-change.yaml +sed -i 's/tag-placeholder/'"$ARC_RUNNER_VER"'/g' runners-stream-ci.yaml if [ "$SCALING" == "auto" ]; then echo "Runners: changing scaling min: $MIN_RUNNERS, max: $MAX_RUNNERS" - sed -i 's/max-replicas-placeholder/'"$MAX_RUNNERS"'/g' runners-stream-ci-change.yaml - sed -i 's/min-replicas-placeholder/'"$MIN_RUNNERS"'/g' runners-stream-ci-change.yaml + sed -i 's/max-replicas-placeholder/'"$MAX_RUNNERS"'/g' runners-stream-ci.yaml + sed -i 's/min-replicas-placeholder/'"$MIN_RUNNERS"'/g' runners-stream-ci.yaml else echo "Runners:$CURRENT increase by $INC to $TARGET" - sed -i 's/replicas-placeholder/'"$TARGET"'/g' runners-stream-ci-change.yaml + sed -i 's/replicas-placeholder/'"$TARGET"'/g' runners-stream-ci.yaml fi - -cmp --silent "$SCDIR/k8s/runners-stream-ci-${SCALING}-template.yaml" runners-stream-ci-change.yaml +echo "actions runner version = $ARC_RUNNER_VER" +cmp --silent "$SCDIR/k8s/runners-stream-ci-${SCALING}-template.yaml" runners-stream-ci.yaml RC=$? if ((RC != 0)); then - kubectl apply -f runners-stream-ci-change.yaml + kubectl apply -f runners-stream-ci.yaml echo "Runners: changes applied" if [ "$SCALING" != "auto" ]; then $SCDIR/wait-k8s.sh 1 --for=condition=ready --timeout=1m pod -l runner-deployment-name=runners-stream-ci --all-namespaces=true diff --git a/scripts/k8s/runners-stream-ci-auto-template.yaml b/scripts/k8s/runners-stream-ci-auto-template.yaml index acbb33e8..3992bbad 100644 --- a/scripts/k8s/runners-stream-ci-auto-template.yaml +++ b/scripts/k8s/runners-stream-ci-auto-template.yaml @@ -5,7 +5,7 @@ metadata: spec: template: spec: - image: 'summerwind/actions-runner-dind' + image: 'summerwind/actions-runner-dind:tag-placeholder' priorityClassName: high-priority dockerdWithinRunnerContainer: true imagePullPolicy: IfNotPresent diff --git a/scripts/k8s/runners-stream-ci-auto.yaml b/scripts/k8s/runners-stream-ci-auto.yaml index d9827c65..7825a2fe 100644 --- a/scripts/k8s/runners-stream-ci-auto.yaml +++ b/scripts/k8s/runners-stream-ci-auto.yaml @@ -5,7 +5,7 @@ metadata: spec: template: spec: - image: 'summerwind/actions-runner-dind:latest' + image: 'summerwind/actions-runner-dind:tag-placeholder' priorityClassName: high-priority dockerdWithinRunnerContainer: true imagePullPolicy: IfNotPresent diff --git a/scripts/k8s/runners-stream-ci-large-template.yaml b/scripts/k8s/runners-stream-ci-large-template.yaml new file mode 100644 index 00000000..b4212085 --- /dev/null +++ b/scripts/k8s/runners-stream-ci-large-template.yaml @@ -0,0 +1,41 @@ +apiVersion: actions.summerwind.dev/v1alpha1 +kind: RunnerDeployment +metadata: + name: runners-stream-ci-large +spec: + template: + spec: + image: 'summerwind/actions-runner-dind:tag-placeholder' + priorityClassName: high-priority + dockerdWithinRunnerContainer: true + imagePullPolicy: IfNotPresent + imagePullSecrets: + - name: stream-metadata-default + repository: spring-cloud/stream-applications + githubAPICredentialsFrom: + secretRef: + name: controller-manager-secret + resources: + requests: + cpu: "3000m" + memory: "3Gi" + labels: + - stream-ci-large +--- +apiVersion: actions.summerwind.dev/v1alpha1 +kind: HorizontalRunnerAutoscaler +metadata: + name: runners-stream-ci-large-scaling +spec: + githubAPICredentialsFrom: + secretRef: + name: controller-manager-secret + minReplicas: 0 + maxReplicas: 2 + scaleTargetRef: + kind: RunnerDeployment + name: runners-stream-ci-large + scaleUpTriggers: + - githubEvent: + workflowJob: {} + duration: "20m" diff --git a/scripts/k8s/runners-stream-ci-large.yaml b/scripts/k8s/runners-stream-ci-large.yaml index bcfa5883..b4212085 100644 --- a/scripts/k8s/runners-stream-ci-large.yaml +++ b/scripts/k8s/runners-stream-ci-large.yaml @@ -5,7 +5,7 @@ metadata: spec: template: spec: - image: 'summerwind/actions-runner-dind:latest' + image: 'summerwind/actions-runner-dind:tag-placeholder' priorityClassName: high-priority dockerdWithinRunnerContainer: true imagePullPolicy: IfNotPresent diff --git a/scripts/k8s/runners-stream-ci-manual-template.yaml b/scripts/k8s/runners-stream-ci-manual-template.yaml index 843c7b23..aae7b6c3 100644 --- a/scripts/k8s/runners-stream-ci-manual-template.yaml +++ b/scripts/k8s/runners-stream-ci-manual-template.yaml @@ -6,7 +6,7 @@ spec: replicas: replicas-placeholder template: spec: - image: 'summerwind/actions-runner-dind:latest' + image: 'summerwind/actions-runner-dind:tag-placeholder' dockerdWithinRunnerContainer: true priorityClassName: high-priority imagePullPolicy: IfNotPresent diff --git a/scripts/k8s/runners-stream-ci-manual.yaml b/scripts/k8s/runners-stream-ci-manual.yaml index 667815cb..8bb0d4d8 100644 --- a/scripts/k8s/runners-stream-ci-manual.yaml +++ b/scripts/k8s/runners-stream-ci-manual.yaml @@ -6,7 +6,7 @@ spec: replicas: 2 template: spec: - image: 'summerwind/actions-runner-dind:latest' + image: 'summerwind/actions-runner-dind:tag-placeholder' dockerdWithinRunnerContainer: true priorityClassName: high-priority imagePullPolicy: IfNotPresent diff --git a/scripts/limit-runners.sh b/scripts/limit-runners.sh index ca6aee57..1d80915f 100755 --- a/scripts/limit-runners.sh +++ b/scripts/limit-runners.sh @@ -41,29 +41,30 @@ case $ARCH in echo "Architecture:$ARCH may not be supported by summerwind/actions-runner" ;; esac -IMAGE_SHA=$(wget -q -O- https://hub.docker.com/v2/repositories/summerwind/actions-runner/tags | jq --arg os $OS --arg arch $ARCH '.results | map(select(.name="latest")) | .[0].images | map(select(.os==$os and .architecture==$arch)) | .[0].digest' | sed 's/\"//g') -if [ "$IMAGE_SHA" == "" ]; then - IMAGE_SHA="latest" -fi + SCALING=$($SCDIR/determine-default.sh stream_apps_gh_runners runner_scaling) -cp $SCDIR/k8s/runners-stream-ci-${SCALING}-template.yaml runners-stream-ci-change.yaml -sed -i 's/tag-placeholder/'"$IMAGE_SHA"'/g' runners-stream-ci-change.yaml +cp $SCDIR/k8s/runners-stream-ci-${SCALING}-template.yaml runners-stream-ci.yaml +ARC_RUNNER_VER=$($SCDIR/determine-default.sh stream-apps-gh-runners "actions_runner_version") +if [ "$ARC_RUNNER_VER" == "" ]; then + ARC_RUNNER_VER=latest +fi +sed -i 's/tag-placeholder/'"$ARC_RUNNER_VER"'/g' runners-stream-ci.yaml if [ "$SCALING" == "auto" ]; then if [ "$MAX_RUNNERS" == "" ]; then MAX_RUNNERS=$(max_replicas) fi echo "Runners: Max runners to $MAX_RUNNERS" echo "Runners: changing scaling min: $TARGET, max: $MAX_RUNNERS" - sed -i 's/max-replicas-placeholder/'"$MAX_RUNNERS"'/g' runners-stream-ci-change.yaml - sed -i 's/min-replicas-placeholder/'"$TARGET"'/g' runners-stream-ci-change.yaml + sed -i 's/max-replicas-placeholder/'"$MAX_RUNNERS"'/g' runners-stream-ci.yaml + sed -i 's/min-replicas-placeholder/'"$TARGET"'/g' runners-stream-ci.yaml else echo "Runners:$CURRENT change to $TARGET" - sed -i 's/replicas-placeholder/'"$TARGET"'/g' runners-stream-ci-change.yaml + sed -i 's/replicas-placeholder/'"$TARGET"'/g' runners-stream-ci.yaml fi -cmp --silent "$SCDIR/k8s/runners-stream-ci-${SCALING}-template.yaml" runners-stream-ci-change.yaml +cmp --silent "$SCDIR/k8s/runners-stream-ci-${SCALING}-template.yaml" runners-stream-ci.yaml RC=$? if ((RC != 0)); then - kubectl apply -f runners-stream-ci-change.yaml + kubectl apply -f runners-stream-ci.yaml echo "Runners: applying changes" # if [ "$SCALING" != "auto" ]; then # $SCDIR/wait-k8s.sh 1 --for=condition=ready --timeout=1m pod -l runner-deployment-name=runners-stream-ci --all-namespaces=true @@ -71,5 +72,5 @@ if ((RC != 0)); then else echo "Runners:no changes required" fi -rm -f runners-stream-ci-change.yaml +rm -f runners-stream-ci.yaml $SCDIR/check-runners.sh