Skip to content
GitLab
Menu
Why GitLab
Pricing
Contact Sales
Explore
Why GitLab
Pricing
Contact Sales
Explore
Sign in
Get free trial
Primary navigation
Search or go to…
Project
OpenShift
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Privacy statement
Keyboard shortcuts
?
What's new
6
Snippets
Groups
Projects
Show more breadcrumbs
to be continuous...
OpenShift
Commits
fc82712f
Commit
fc82712f
authored
1 month ago
by
Pierre Smeyers
Browse files
Options
Downloads
Patches
Plain Diff
feat: add unofficial oc extra options support
parent
6d28b6e3
No related branches found
No related tags found
No related merge requests found
Pipeline
#1683815113
passed
1 month ago
Stage: .pre
Stage: build
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
templates/gitlab-ci-openshift.yml
+20
-10
20 additions, 10 deletions
templates/gitlab-ci-openshift.yml
with
20 additions
and
10 deletions
templates/gitlab-ci-openshift.yml
+
20
−
10
View file @
fc82712f
...
...
@@ -485,7 +485,8 @@ stages:
function build_template_param_args() {
global_env="$1"
spec_env="$2"
oc process --parameters -f - | awk 'NR > 1{print $1}' | while read -r param_name
# shellcheck disable=SC2086
oc $OS_OC_EXTRA_OPTS process --parameters -f - | awk 'NR > 1{print $1}' | while read -r param_name
do
# 1: look for param into specific dotenv file
if grep -e "^$param_name=" "$spec_env" >/dev/null 2>&1
...
...
@@ -521,7 +522,8 @@ stages:
# set label 'app' and 'env' on all created objects ($OS_STAGE_LABEL for backwards compatibility)
echo "oc process --labels \"${OS_ENV_LABEL:-${OS_STAGE_LABEL:-env}}=$environment_type,${OS_APP_LABEL:-app}=$environment_name\" $param_args -f $templatefile"
eval oc process --labels "${OS_ENV_LABEL:-${OS_STAGE_LABEL:-env}}=$environment_type,${OS_APP_LABEL:-app}=$environment_name" "$param_args" -f "$templatefile" | oc ${TRACE+--loglevel=6} apply -f -
# shellcheck disable=SC2086
eval oc $OS_OC_EXTRA_OPTS process --labels "${OS_ENV_LABEL:-${OS_STAGE_LABEL:-env}}=$environment_type,${OS_APP_LABEL:-app}=$environment_name" "$param_args" -f "$templatefile" | oc $OS_OC_EXTRA_OPTS ${TRACE+--loglevel=6} apply -f -
}
function check_readiness() {
...
...
@@ -552,7 +554,8 @@ stages:
function os_deploy() {
# export project as it may be usefull to build image name based on internal registry (ex: docker-registry.default.svc:5000/${project}/${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_LABEL} )
project=$(oc project -q)
# shellcheck disable=SC2086
project=$(oc $OS_OC_EXTRA_OPTS project -q)
export project
export environment_type=$ENV_TYPE
export environment_name=${ENV_APP_NAME:-${OS_BASE_APP_NAME}${ENV_APP_SUFFIX}}
...
...
@@ -626,7 +629,8 @@ stages:
# $1 deployment name
function last_rollout_status() {
oc rollout history "dc/$1" | sed -e '1,2d' -e '$d' | tail -1 | awk -F" " '{print tolower($2)}'
# shellcheck disable=SC2086
oc $OS_OC_EXTRA_OPTS rollout history "dc/$1" | sed -e '1,2d' -e '$d' | tail -1 | awk -F" " '{print tolower($2)}'
}
# $1 deployment name
...
...
@@ -635,7 +639,8 @@ stages:
if [ "$last_status" != "running" ] && [ "$last_status" != "pending" ]
then
log_info "Force rollout as last status is $last_status"
oc rollout latest "$1"
# shellcheck disable=SC2086
oc $OS_OC_EXTRA_OPTS rollout latest "$1"
else
log_info "A rollout is currently processing with status $last_status"
fi
...
...
@@ -727,7 +732,8 @@ stages:
# delete app
log_info "--- \\e[32moc delete\\e[0m"
# delete all objects with label 'app=$environment_name'
oc ${TRACE+--loglevel=6} delete "${OS_CLEANUP_OBJECT_TYPES}" --selector "${OS_APP_LABEL:-app}=$environment_name"
# shellcheck disable=SC2086
oc $OS_OC_EXTRA_OPTS ${TRACE+--loglevel=6} delete "${OS_CLEANUP_OBJECT_TYPES}" --selector "${OS_APP_LABEL:-app}=$environment_name"
# maybe execute post cleanup script
postscript="$OS_SCRIPTS_DIR/os-post-cleanup.sh"
...
...
@@ -748,7 +754,8 @@ stages:
# make environment_name regex by replacing $CI_COMMIT_REF_SLUG with .*
environment_nameregex=$(echo "$environment_nameproto" | sed -r "s/$CI_COMMIT_REF_SLUG/.*/g")
# list services | remove 1st line | pick 7th column (selector) | filter services with label "app=$regex"
matchingselectors=$(oc get svc -o wide | tail -n +2 | awk '{print $7}' | awk "/${OS_APP_LABEL:-app}=$environment_nameregex/ {print \$1}")
# shellcheck disable=SC2086
matchingselectors=$(oc $OS_OC_EXTRA_OPTS get svc -o wide | tail -n +2 | awk '{print $7}' | awk "/${OS_APP_LABEL:-app}=$environment_nameregex/ {print \$1}")
matchcount=$(echo "$matchingselectors" | wc -w)
log_info "--- \\e[32mdelete all"
...
...
@@ -781,10 +788,12 @@ stages:
# $1 image name
# $2 number of image tags to keep
log_info "Keeping last $2 images"
oc get -o json "is/$1" | extract_oldest_tags_from_image_stream_definition "$2" | while read -r tag
# shellcheck disable=SC2086
oc $OS_OC_EXTRA_OPTS get -o json "is/$1" | extract_oldest_tags_from_image_stream_definition "$2" | while read -r tag
do
log_info "Removing image stream tag $1:$tag"
oc delete "istag/$1:$tag"
# shellcheck disable=SC2086
oc $OS_OC_EXTRA_OPTS delete "istag/$1:$tag"
done
}
...
...
@@ -808,7 +817,8 @@ stages:
-
assert_defined "${ENV_API_URL:-$OS_URL}" 'Missing required OpenShift url'
-
assert_defined "${ENV_TOKEN:-$OS_TOKEN}" 'Missing required OpenShift token'
-
assert_defined "$ENV_PROJECT" 'Missing required OpenShift project'
-
oc login "${ENV_API_URL:-$OS_URL}" --token="${ENV_TOKEN:-$OS_TOKEN}" -n "$ENV_PROJECT"
# use of unofficial $OC_LOGIN_EXTRA_OPTS variable to pass extra options to oc login
-
oc $OS_OC_EXTRA_OPTS login ${OC_LOGIN_EXTRA_OPTS} "${ENV_API_URL:-$OS_URL}" --token="${ENV_TOKEN:-$OS_TOKEN}" -n "$ENV_PROJECT"
# Deploy job prototype
# Can be extended to define a concrete environment
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment