-
Notifications
You must be signed in to change notification settings - Fork 25
Feature/block96 Undo the changes made in case of pipeline generation failure #108
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from 11 commits
e2477ef
a5c193c
bea7817
1206935
61df1f4
85731af
1562b7a
7182244
c94f718
4a5107f
e817cc9
fa45009
339682c
e0cdc15
3ae8b43
0012ee0
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -152,11 +152,18 @@ function createNewBranch { | |
| echo -e "${green}Creating the new branch: ${sourceBranch}..." | ||
| echo -ne ${white} | ||
|
|
||
| # Create the new branch. | ||
| cd "${localDirectory}" | ||
|
|
||
| # store current branch into a variable (only used for rollback/undo) | ||
| originalBranch=$(git branch --show-current) | ||
|
|
||
| [ $? != "0" ] && echo -e "${red}The local directory: '${localDirectory}' cannot be found, please check the path." && exit 1 | ||
|
|
||
| # Create the new branch. | ||
| git checkout -b ${sourceBranch} | ||
|
|
||
| # set undo-stage (clear local branches) | ||
| undoStage=1 | ||
| } | ||
|
|
||
| function copyYAMLFile { | ||
|
|
@@ -201,14 +208,30 @@ function commitCommonFiles { | |
|
|
||
| git commit -m "Adding the source YAML" | ||
| git push -u origin ${sourceBranch} | ||
|
|
||
| # clean up remote-branches | ||
| undoStage=2 | ||
| } | ||
|
|
||
| function createPipeline { | ||
| echo -e "${green}Generating the pipeline from the YAML template..." | ||
| echo -ne ${white} | ||
|
|
||
| # Create Azure Pipeline | ||
| az pipelines create --name $pipelineName --yml-path "${pipelinePath}/${yamlFile}" --skip-first-run true | ||
|
|
||
| pipelineResult=$(az pipelines create --name $pipelineName --yml-path "${pipelinePath}/${yamlFile}" --skip-first-run true) || { | ||
| # if the script fails, clean pollution | ||
| echo "There was an error creating the pipeline! Please check if you specified the name and got all settings right!" | ||
|
|
||
| undoPreviousSteps | ||
|
|
||
| exit 127 | ||
| } | ||
|
|
||
| pipelineId=$(echo "$pipelineResult" | python -c "import sys, json; print(json.load(sys.stdin)['id'])") | ||
|
|
||
| # pipeline got created successfully | ||
| undoStage=3 | ||
| } | ||
|
|
||
| # Function that adds the variables to be used in the pipeline. | ||
|
|
@@ -218,7 +241,15 @@ function addCommonPipelineVariables { | |
| echo "Skipping creation of the variable artifactPath as the flag has not been used." | ||
| else | ||
| # Add the extra artifact to store variable. | ||
| az pipelines variable create --name "artifactPath" --pipeline-name "$pipelineName" --value "${artifactPath}" | ||
| $(az pipelines variable create --pipeline-name "$pipelineName" --value "${artifactPath}") || { | ||
| # if the variable-creation fails, clean up | ||
|
|
||
| echo "There was an error creating the pipeline-artifact-path variable!. Exiting" | ||
|
|
||
| undoPreviousSteps | ||
|
|
||
| exit 127 | ||
| } | ||
| fi | ||
| } | ||
|
|
||
|
|
@@ -272,8 +303,63 @@ function createPR { | |
| fi | ||
| } | ||
|
|
||
| function removeLocalBranches { | ||
| # visit the directory and switch to the branch which was present before | ||
| cd "${localDirectory}" | ||
|
|
||
| git checkout $originalBranch | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. SC2154: originalBranch is referenced but not assigned. Reply with "@sonatype-lift help" for info about LiftBot commands. When talking to LiftBot, you need to refresh the page to see its response. Click here to get to know more about LiftBot commands. Was this a good recommendation? |
||
|
|
||
| # delete branch | ||
| git branch -D ${sourceBranch} | ||
| } | ||
|
|
||
| function removeRemoteBranches { | ||
| cd "${localDirectory}" | ||
|
|
||
| # update list of remotes | ||
| git fetch | ||
|
|
||
| # delete mapped remote-branch | ||
| git push origin --delete ${sourceBranch} | ||
| } | ||
|
Comment on lines
+169
to
+177
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think you have to delete the pull request created by the |
||
|
|
||
| function removePipeline { | ||
| az pipelines delete --id ${pipelineId} | ||
| } | ||
|
|
||
| function undoPreviousSteps { | ||
| # undo all actions taken | ||
|
|
||
| if [ ${undoStage} -gt 2 ]; then | ||
| echo "Removing pipeline with id: ${pipelineId}" | ||
| removePipeline | ||
| fi | ||
|
|
||
| if [ ${undoStage} -gt 1 ]; then | ||
| echo "Removing all remote branches!" | ||
|
|
||
| removeRemoteBranches | ||
| fi | ||
|
|
||
| if [ ${undoStage} -gt 0 ]; then | ||
| echo "Removing all local branches!" | ||
|
|
||
| removeLocalBranches | ||
| fi | ||
| } | ||
|
|
||
| if [[ "$help" == "true" ]]; then help; fi | ||
|
|
||
| # check if the .pipeline-directory already existed | ||
| pipelinesDirectoryAlreadyExists=false | ||
|
|
||
| if [ -d "./.pipelines" ]; then | ||
| pipelinesDirectoryAlreadyExists=true | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. SC2034: pipelinesDirectoryAlreadyExists appears unused. Verify use (or export if used externally). (at-me in a reply with Was this a good recommendation? |
||
| fi; | ||
|
|
||
| # Undo-Level for the script. Used to clean up the resources in case of a failure | ||
| undoStage=0 | ||
|
|
||
| importConfigFile | ||
|
|
||
| checkInstallations | ||
|
|
@@ -282,11 +368,15 @@ obtainHangarPath | |
|
|
||
| createNewBranch | ||
|
|
||
| copyYAMLFile | ||
| copyYAMLFile | ||
|
|
||
| copyCommonScript | ||
|
|
||
| type copyScript &> /dev/null && copyScript | ||
| type copyScript &> /dev/null && copyScript || { | ||
|
BenjaminE98 marked this conversation as resolved.
|
||
| undoPreviousSteps | ||
|
|
||
| exit 127 | ||
| } | ||
|
|
||
| commitCommonFiles | ||
|
|
||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SC2091: Remove surrounding $() to avoid executing output (or use eval if intentional).
(at-me in a reply with
helporignore)Was this a good recommendation?
[ 🙁 Not relevant ] - [ 😕 Won't fix ] - [ 😑 Not critical, will fix ] - [ 🙂 Critical, will fix ] - [ 😊 Critical, fixing now ]