# To contribute improvements to CI/CD templates, please follow the Development guide at: # https://docs.gitlab.com/ee/development/cicd/templates.html # This specific template is located at: # https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/OpenShift.gitlab-ci.yml image: openshift/origin-cli stages: - build # dummy stage to follow the template guidelines - test - deploy # dummy stage to follow the template guidelines - review - staging - production - cleanup variables: OPENSHIFT_SERVER: openshift.default.svc.cluster.local # OPENSHIFT_DOMAIN: apps.example.com # Configure this variable in Secure Variables: # OPENSHIFT_TOKEN: my.openshift.token test1: stage: test before_script: [] script: - echo run tests test2: stage: test before_script: [] script: - echo run tests .deploy: &deploy before_script: - oc login "$OPENSHIFT_SERVER" --token="$OPENSHIFT_TOKEN" --insecure-skip-tls-verify - oc project "$CI_PROJECT_NAME-$CI_PROJECT_ID" 2> /dev/null || oc new-project "$CI_PROJECT_NAME-$CI_PROJECT_ID" script: - "oc get services $APP 2> /dev/null || oc new-app . --name=$APP --strategy=docker" - "oc start-build $APP --from-dir=. --follow || sleep 3s && oc start-build $APP --from-dir=. --follow" - "oc get routes $APP 2> /dev/null || oc expose service $APP --hostname=$APP_HOST" review: <<: *deploy stage: review variables: APP: review-$CI_COMMIT_REF_NAME APP_HOST: $CI_PROJECT_NAME-$CI_ENVIRONMENT_SLUG.$OPENSHIFT_DOMAIN environment: name: review/$CI_COMMIT_REF_NAME url: http://$CI_PROJECT_NAME-$CI_ENVIRONMENT_SLUG.$OPENSHIFT_DOMAIN on_stop: stop-review rules: - if: $CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH stop-review: <<: *deploy stage: cleanup script: - oc delete all -l "app=$APP" variables: APP: review-$CI_COMMIT_REF_NAME GIT_STRATEGY: none environment: name: review/$CI_COMMIT_REF_NAME action: stop rules: - if: $CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH when: manual staging: <<: *deploy stage: staging variables: APP: staging APP_HOST: $CI_PROJECT_NAME-staging.$OPENSHIFT_DOMAIN environment: name: staging url: http://$CI_PROJECT_NAME-staging.$OPENSHIFT_DOMAIN rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH production: <<: *deploy stage: production variables: APP: production APP_HOST: $CI_PROJECT_NAME.$OPENSHIFT_DOMAIN environment: name: production url: http://$CI_PROJECT_NAME.$OPENSHIFT_DOMAIN rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH when: manual