1+ version : " 1.0"
2+ stages :
3+ - clone
4+ - prepare
5+ - build
6+ - release
7+ steps :
8+
9+ main_clone :
10+ title : ' Cloning main repository...'
11+ stage : clone
12+ type : git-clone
13+ repo : ${{CF_REPO_OWNER}}/${{CF_REPO_NAME}}
14+ revision : ${{CF_BRANCH}}
15+ git : ${{GIT_CONTEXT}}
16+
17+ prepare_env_vars :
18+ title : ' Preparing environment variables...'
19+ stage : prepare
20+ image : codefreshio/ci-helpers
21+ working_directory : ${{main_clone}}
22+ commands :
23+ - cf_export SERVICE_VERSION=$(yq r service.yaml version)
24+ - cf_export IMAGE_NAME=codefresh/cf-deploy-kubernetes
25+
26+ validate_version :
27+ title : ' Validating the service version...'
28+ stage : prepare
29+ image : codefreshio/ci-helpers
30+ fail_fast : false
31+ commands :
32+ - |
33+ err() { echo -e "\e[31m$@\e[0m" ; return 1 ; }
34+ ok() { echo -e "\e[32m$@\e[0m" ; return 0 ; }
35+
36+ current_version=${SERVICE_VERSION}
37+ last_version=$(git describe --abbrev=0 --tags)
38+ echo "Current version is $current_version, last version - $last_version"
39+ semver-cli greater $current_version $last_version && ok "Version check ok" || err "Please the update the version in the service.yaml file"
40+
41+ build_image :
42+ title : " Building the image..."
43+ stage : build
44+ type : build
45+ working_directory : ${{main_clone}}
46+ dockerfile : ./Dockerfile
47+ build_arguments :
48+ - COMPOSE_VERSION=${{COMPOSE_VERSION}}
49+ image_name : ${{IMAGE_NAME}}
50+ tag : ${{CF_BRANCH_TAG_NORMALIZED}}
51+
52+ approve_existing_version_update :
53+ type : pending-approval
54+ stage : release
55+ title : " Are you sure you want to update already existing image version?"
56+ description : |
57+ "Used for reverting changes without raising the service version"
58+ when :
59+ branch :
60+ only : [master]
61+ steps :
62+ - name : validate_version
63+ on :
64+ - failure
65+
66+ release :
67+ type : parallel
68+ stage : release
69+ steps :
70+
71+ add_git_tag :
72+ title : " Adding Git tag..."
73+ stage : release
74+ image : codefreshio/ci-helpers
75+ commands :
76+ - source /get-token/get-gh-token.sh
77+ - |
78+ curl --fail -X POST -d '{"ref": "refs/tags/${{SERVICE_VERSION}}","sha": "${{CF_REVISION}}"}' -H "Content-Type: application/json" -H "Authorization: token ${GITHUB_TOKEN}" https://api.github.com/repos/${{CF_REPO_OWNER}}/${{CF_REPO_NAME}}/git/refs
79+ when :
80+ branch :
81+ only : [master]
82+ steps :
83+ - name : validate_version
84+ on :
85+ - success
86+
87+ push_image_prod :
88+ type : push
89+ title : " Pushing the image to the public registry..."
90+ stage : release
91+ image_name : ' ${{IMAGE_NAME}}'
92+ registry : " ${{REGISTRY_INTEGRATION}}"
93+ candidate : " ${{build_image}}"
94+ tags :
95+ - " ${{SERVICE_VERSION}}"
96+ - " latest"
97+ when :
98+ branch :
99+ only : [master]
0 commit comments