Skip to content

Commit

Permalink
feat(rollout-image): update field to be able to set the workload type (
Browse files Browse the repository at this point in the history
…#67)

* feat(rollout-image): update field to be able to set the workload type

Main motivation is to be able to set an image to a StatefulSet workload. This way we can use the same configuration between Deployment and StatefulSet by just providing one more field.

* move parameter from string to enum

* fix: linting issues

---------

Co-authored-by: Eric Ribeiro <ericribeiro@outlook.com.br>
  • Loading branch information
joaomlopes and EricRibeiro committed Aug 15, 2023
1 parent 870947f commit deff38c
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 11 deletions.
8 changes: 8 additions & 0 deletions src/commands/rollout-image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,13 @@ parameters:
If server strategy, submit server-side request without persisting the resource.
type: enum
enum: ["none", "server", "client"]
workload_type:
default: "deployment"
description: |
Workload type to rollout image.
Must be "pod", "replicationcontroller", "deployment", "daemonset", "statefulset", "cronjob", or "replicaset".
enum: ["pod", "replicationcontroller", "deployment", "daemonset", "statefulset", "cronjob", "replicaset"]
type: enum

steps:
- run:
Expand All @@ -38,5 +45,6 @@ steps:
ORB_EVAL_CONTAINER: << parameters.container >>
ORB_EVAL_IMAGE: << parameters.image >>
ORB_EVAL_TAG: << parameters.tag >>
ORB_EVAL_WORKLOAD_TYPE: << parameters.workload_type >>
ORB_SCRIPT_UTILS: <<include(scripts/utils.sh)>>
command: <<include(scripts/rollout-image.sh)>>
27 changes: 17 additions & 10 deletions src/jobs/publish-and-rollout-image.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

description: "Update cluster with new Docker image."

executor: <<parameters.executor>>
Expand Down Expand Up @@ -139,20 +138,27 @@ parameters:
description: |
Output location of OIDC credentials.
Required if "use_oidc" is set to true.
workload_type:
default: "deployment"
description: |
Workload type to rollout image.
Must be "pod", "replicationcontroller", "deployment", "daemonset", "statefulset", "cronjob", or "replicaset".
enum: ["pod", "replicationcontroller", "deployment", "daemonset", "statefulset", "cronjob", "replicaset"]
type: enum

steps:
- when:
condition: <<parameters.use_remote_docker>>
steps:
- when:
condition: <<parameters.remote_docker_version>>
steps:
- setup_remote_docker:
version: <<parameters.remote_docker_version>>
- unless:
condition: <<parameters.remote_docker_version>>
steps:
- setup_remote_docker
- when:
condition: <<parameters.remote_docker_version>>
steps:
- setup_remote_docker:
version: <<parameters.remote_docker_version>>
- unless:
condition: <<parameters.remote_docker_version>>
steps:
- setup_remote_docker
- checkout
- gcp-cli/setup:
version: <<parameters.gcloud_version>>
Expand Down Expand Up @@ -199,3 +205,4 @@ steps:
tag: "<<parameters.tag>>"
namespace: "<<parameters.namespace>>"
dry_run: "<<parameters.dry_run>>"
workload_type: "<<parameters.workload_type>>"
2 changes: 1 addition & 1 deletion src/scripts/rollout-image.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,5 @@ build_args=(

set -x
# shellcheck disable=SC2048,SC2086 # We want word splitting here.
kubectl set image deployment "$ORB_EVAL_DEPLOYMENT" "$ORB_EVAL_CONTAINER"="$ORB_EVAL_IMAGE":"$ORB_EVAL_TAG" ${build_args[*]}
kubectl set image "$ORB_EVAL_WORKLOAD_TYPE" "$ORB_EVAL_DEPLOYMENT" "$ORB_EVAL_CONTAINER"="$ORB_EVAL_IMAGE":"$ORB_EVAL_TAG" ${build_args[*]}
set +x

0 comments on commit deff38c

Please sign in to comment.