Skip to content

Commit cbcb23c

Browse files
authored
added field with check box to delete temp folder generated while running packer build task. (#21029)
* initialchanges * modified changes in custom templates * cleaned up the code * modified code as per suggestions * modified delete temp folder variable name * fixed space issue * fixed white space issue
1 parent 810ab30 commit cbcb23c

14 files changed

+124
-14
lines changed

Tasks/PackerBuildV1/DefaultTemplates/custom.linux.template.json

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@
1515
"package_path": "{{env `package_path`}}",
1616
"package_name": "{{env `package_name`}}",
1717
"capture_name_prefix": "{{env `capture_name_prefix`}}",
18-
"skip_clean": "{{env `skip_clean`}}"
18+
"skip_clean": "{{env `skip_clean`}}",
19+
"delete_temp_folder": "{{env `delete_temp_folder`}}"
1920
},
2021
"builders": [{
2122
"type": "azure-arm",
@@ -60,6 +61,17 @@
6061
"/deployTemp/{{user `package_name`}}/{{user `script_relative_path`}} {{user `script_arguments`}}"
6162
]
6263
},
64+
{
65+
"type": "shell",
66+
"execute_command": "chmod +x {{ .Path }}; {{ .Vars }} sudo -E sh '{{ .Path }}'",
67+
"inline": [
68+
"echo delete_temp_folder: {{user `delete_temp_folder`}}",
69+
"if [ \"{{user `delete_temp_folder`}}\" = \"true\" ]; then",
70+
" echo 'Removing /deployTemp if exists...'",
71+
" rm -rf /deployTemp && echo '/deployTemp deleted'",
72+
"fi"
73+
]
74+
},
6375
{
6476
"type": "shell",
6577
"execute_command": "chmod +x {{ .Path }}; {{ .Vars }} sudo -E sh '{{ .Path }}'",

Tasks/PackerBuildV1/DefaultTemplates/custom.managed.linux.template.json

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616
"package_name": "{{env `package_name`}}",
1717
"capture_name_prefix": "{{env `capture_name_prefix`}}",
1818
"skip_clean": "{{env `skip_clean`}}",
19-
"managed_image_name": "{{env `managed_image_name`}}"
19+
"managed_image_name": "{{env `managed_image_name`}}",
20+
"delete_temp_folder": "{{env `delete_temp_folder`}}"
2021
},
2122
"builders": [{
2223
"type": "azure-arm",
@@ -58,7 +59,17 @@
5859
"chmod +x /deployTemp/{{user `package_name`}}/{{user `script_relative_path`}}",
5960
"/deployTemp/{{user `package_name`}}/{{user `script_relative_path`}} {{user `script_arguments`}}"
6061
]
61-
},
62+
},{
63+
"type": "shell",
64+
"execute_command": "chmod +x {{ .Path }}; {{ .Vars }} sudo -E sh '{{ .Path }}'",
65+
"inline": [
66+
"echo delete_temp_folder: {{user `delete_temp_folder`}}",
67+
"if [ \"{{user `delete_temp_folder`}}\" = \"true\" ]; then",
68+
" echo 'Removing /deployTemp if exists...'",
69+
" rm -rf /deployTemp && echo '/deployTemp deleted'",
70+
"fi"
71+
]
72+
},
6273
{
6374
"type": "shell",
6475
"execute_command": "chmod +x {{ .Path }}; {{ .Vars }} sudo -E sh '{{ .Path }}'",

Tasks/PackerBuildV1/DefaultTemplates/custom.managed.windows.template.json

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@
1515
"package_path": "{{env `package_path`}}",
1616
"package_name": "{{env `package_name`}}",
1717
"capture_name_prefix": "{{env `capture_name_prefix`}}",
18-
"managed_image_name": "{{env `managed_image_name`}}"
18+
"managed_image_name": "{{env `managed_image_name`}}",
19+
"delete_temp_folder": "{{env `delete_temp_folder`}}"
1920
},
2021
"builders": [{
2122
"type": "azure-arm",
@@ -60,6 +61,13 @@
6061
"C:\\DeployTemp\\{{user `package_name`}}\\{{user `script_relative_path`}} {{user `script_arguments`}}"
6162
]
6263
},
64+
{
65+
"type": "windows-shell",
66+
"inline": [
67+
"cmd /c \"echo run_deploy_script: {{user `delete_temp_folder`}}\"",
68+
"cmd /c \" if '{{user `delete_temp_folder`}}' == 'true' if exist c:\\\\DeployTemp rd /s /q c:\\\\DeployTemp\""
69+
]
70+
},
6371
{
6472
"type": "powershell",
6573
"inline": [

Tasks/PackerBuildV1/DefaultTemplates/custom.windows.template.json

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
"script_arguments": "{{env `script_arguments`}}",
1515
"package_path": "{{env `package_path`}}",
1616
"package_name": "{{env `package_name`}}",
17-
"capture_name_prefix": "{{env `capture_name_prefix`}}"
17+
"capture_name_prefix": "{{env `capture_name_prefix`}}",
18+
"delete_temp_folder": "{{env `delete_temp_folder`}}"
1819
},
1920
"builders": [{
2021
"type": "azure-arm",
@@ -61,6 +62,13 @@
6162
"C:\\DeployTemp\\{{user `package_name`}}\\{{user `script_relative_path`}} {{user `script_arguments`}}"
6263
]
6364
},
65+
{
66+
"type": "windows-shell",
67+
"inline": [
68+
"cmd /c \"echo run_deploy_script: {{user `delete_temp_folder`}}\"",
69+
"cmd /c \" if '{{user `delete_temp_folder`}}' == 'true' if exist c:\\\\DeployTemp rd /s /q c:\\\\DeployTemp\""
70+
]
71+
},
6472
{
6573
"type": "powershell",
6674
"inline": [

Tasks/PackerBuildV1/DefaultTemplates/default.linux.template.json

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717
"package_path": "",
1818
"package_name": "",
1919
"capture_name_prefix": "",
20-
"skip_clean":""
20+
"skip_clean":"",
21+
"delete_temp_folder": ""
2122
},
2223
"builders": [{
2324
"type": "azure-arm",
@@ -64,6 +65,17 @@
6465
"/deployTemp/{{user `package_name`}}/{{user `script_relative_path`}} {{user `script_arguments`}}"
6566
]
6667
},
68+
{
69+
"type": "shell",
70+
"execute_command": "chmod +x {{ .Path }}; {{ .Vars }} sudo -E sh '{{ .Path }}'",
71+
"inline": [
72+
"echo delete_temp_folder: {{user `delete_temp_folder`}}",
73+
"if [ \"{{user `delete_temp_folder`}}\" = \"true\" ]; then",
74+
" echo 'Removing /deployTemp if exists...'",
75+
" rm -rf /deployTemp && echo '/deployTemp deleted'",
76+
"fi"
77+
]
78+
},
6779
{
6880
"type": "shell",
6981
"execute_command": "chmod +x {{ .Path }}; {{ .Vars }} sudo -E sh '{{ .Path }}'",

Tasks/PackerBuildV1/DefaultTemplates/default.managed.linux.template.json

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@
1818
"package_name": "",
1919
"capture_name_prefix": "",
2020
"skip_clean": "",
21-
"managed_image_name": ""
21+
"managed_image_name": "",
22+
"delete_temp_folder": ""
2223
},
2324
"builders": [{
2425
"type": "azure-arm",
@@ -60,7 +61,17 @@
6061
"chmod +x /deployTemp/{{user `package_name`}}/{{user `script_relative_path`}}",
6162
"/deployTemp/{{user `package_name`}}/{{user `script_relative_path`}} {{user `script_arguments`}}"
6263
]
63-
},
64+
},{
65+
"type": "shell",
66+
"execute_command": "chmod +x {{ .Path }}; {{ .Vars }} sudo -E sh '{{ .Path }}'",
67+
"inline": [
68+
"echo delete_temp_folder: {{user `delete_temp_folder`}}",
69+
"if [ \"{{user `delete_temp_folder`}}\" = \"true\" ]; then",
70+
" echo 'Removing /deployTemp if exists...'",
71+
" rm -rf /deployTemp && echo '/deployTemp deleted'",
72+
"fi"
73+
]
74+
},
6475
{
6576
"type": "shell",
6677
"execute_command": "chmod +x {{ .Path }}; {{ .Vars }} sudo -E sh '{{ .Path }}'",

Tasks/PackerBuildV1/DefaultTemplates/default.managed.windows.template.json

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717
"package_path": "",
1818
"package_name": "",
1919
"capture_name_prefix": "",
20-
"managed_image_name": ""
20+
"managed_image_name": "",
21+
"delete_temp_folder": ""
2122
},
2223
"builders": [{
2324
"type": "azure-arm",
@@ -61,6 +62,13 @@
6162
"C:\\DeployTemp\\{{user `package_name`}}\\{{user `script_relative_path`}} {{user `script_arguments`}}"
6263
]
6364
},
65+
{
66+
"type": "windows-shell",
67+
"inline": [
68+
"cmd /c \"echo run_deploy_script: {{user `delete_temp_folder`}}\"",
69+
"cmd /c \" if '{{user `delete_temp_folder`}}' == 'true' if exist c:\\\\DeployTemp rd /s /q c:\\\\DeployTemp\""
70+
]
71+
},
6472
{
6573
"type": "powershell",
6674
"inline": [

Tasks/PackerBuildV1/DefaultTemplates/default.windows.template.json

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616
"script_arguments": "",
1717
"package_path": "",
1818
"package_name": "",
19-
"capture_name_prefix": ""
19+
"capture_name_prefix": "",
20+
"delete_temp_folder": ""
2021
},
2122
"builders": [{
2223
"type": "azure-arm",
@@ -65,6 +66,13 @@
6566
"C:\\DeployTemp\\{{user `package_name`}}\\{{user `script_relative_path`}} {{user `script_arguments`}}"
6667
]
6768
},
69+
{
70+
"type": "windows-shell",
71+
"inline": [
72+
"cmd /c \"echo run_deploy_script: {{user `delete_temp_folder`}}\"",
73+
"cmd /c \" if '{{user `delete_temp_folder`}}' == 'true' if exist c:\\\\DeployTemp rd /s /q c:\\\\DeployTemp\""
74+
]
75+
},
6876
{
6977
"type": "powershell",
7078
"inline": [

Tasks/PackerBuildV1/Strings/resources.resjson/en-US/resources.resjson

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939
"loc.input.help.deployScriptPath": "Specify the relative path to powershell script(for Windows) or shell script(for Linux) which deploys the package. This script should be contained in the package path selected above. Supports minimatch pattern. Example path: deploy/**/scripts/windows/deploy.ps1",
4040
"loc.input.label.deployScriptArguments": "Deployment script arguments",
4141
"loc.input.help.deployScriptArguments": "Specify the arguments to be passed to deployment script.",
42+
"loc.input.label.canDeleteTempFolder": "Delete temp folder",
43+
"loc.input.help.canDeleteTempFolder": "This option allows you to remove temporary folder",
4244
"loc.input.label.additionalBuilderParameters": "Additional Builder parameters",
4345
"loc.input.help.additionalBuilderParameters": "In auto generated Packer template mode the task creates a Packer template with an Azure builder. This builder is used to generate a machine image. You can add keys to the Azure builder to customize the generated Packer template. For example setting ssh_tty=true in case you are using a CentOS base image and you need to have a tty to run sudo.<br/>To view/edit the additional parameters in a grid, click on “…” next to text box.",
4446
"loc.input.label.skipTempFileCleanupDuringVMDeprovision": "Skip temporary file cleanup during deprovision",

Tasks/PackerBuildV1/src/constants.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ export var BuiltinBaseImageInputName = "baseImage";
1717
export var CustomImageUrlInputName = "customImageUrl";
1818
export var CustomImageOsTypeInputName = "customImageOSType";
1919
export var ManagedImageInputName = "isManagedImage";
20+
export var canDeleteTempFolderInputName = "canDeleteTempFolder";
2021
export var ManagedImageNameInputName = "managedImageName";
2122
export var ImagePublisherInputName = "imagePublisher";
2223
export var ImageOfferInputName = "imageOffer";
@@ -41,6 +42,7 @@ export var TemplateVariableCapturePrefixName = "capture_name_prefix";
4142
export var TemplateVariableScriptRelativePathName = "script_relative_path";
4243
export var TemplateVariableScriptArgumentsName = "script_arguments";
4344
export var TemplateVariablePackagePathName = "package_path";
45+
export var TemplateVariableDeleteFolderName = "delete_temp_folder";
4446
export var TemplateVariablePackageName = "package_name";
4547
export var TemplateVariableSubscriptionIdName = "subscription_id";
4648
export var TemplateVariableClientIdName = "client_id";

Tasks/PackerBuildV1/src/taskInputTemplateVariablesProvider.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ export default class TaskInputTemplateVariablesProvider implements definitions.I
4343
if(taskParameters.isManagedImage){
4444
this._templateVariables.set(constants.TemplateVariableManagedImageName, taskParameters.managedImageName)
4545
}
46+
if(taskParameters.canDeleteTempFolder){
47+
this._templateVariables.set(constants.canDeleteTempFolderInputName, taskParameters.canDeleteTempFolderInputName);
48+
}
4649

4750
if(taskParameters.baseImageSource === constants.BaseImageSourceCustomVhd) {
4851
this._templateVariables.set(constants.TemplateVariableImageUrlName, taskParameters.customBaseImageUrl);
@@ -61,8 +64,10 @@ export default class TaskInputTemplateVariablesProvider implements definitions.I
6164
// user deployment script specific variables
6265
var deployScriptPath = taskParameters.deployScriptPath;
6366
var packagePath = taskParameters.packagePath;
67+
var deletefoldername = taskParameters.canDeleteTempFolderInputName;
6468
this._templateVariables.set(constants.TemplateVariableScriptRelativePathName, deployScriptPath);
6569
this._templateVariables.set(constants.TemplateVariablePackagePathName, packagePath);
70+
this._templateVariables.set(constants.TemplateVariableDeleteFolderName, deletefoldername);
6671
this._templateVariables.set(constants.TemplateVariablePackageName, path.basename(packagePath));
6772
if(!utils.IsNullOrEmpty(taskParameters.deployScriptArguments)) {
6873
this._templateVariables.set(constants.TemplateVariableScriptArgumentsName, taskParameters.deployScriptArguments);

Tasks/PackerBuildV1/src/taskParameters.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ export default class TaskParameters {
2020
public builtinBaseImage: string;
2121
public customBaseImageUrl: string;
2222
public isManagedImage: boolean;
23+
public canDeleteTempFolder: boolean;
2324
public managedImageName: string;
25+
public canDeleteTempFolderInputName: string;
2426
public imagePublisher: string;
2527
public imageOffer: string;
2628
public imageSku: string;
@@ -55,10 +57,13 @@ export default class TaskParameters {
5557
this.storageAccount = tl.getInput(constants.StorageAccountInputName, true);
5658
this.location = tl.getInput(constants.LocationInputName, true);
5759
this.isManagedImage = tl.getBoolInput(constants.ManagedImageInputName, false);
58-
60+
this.canDeleteTempFolder = tl.getBoolInput(constants.canDeleteTempFolderInputName, false);
5961
if (this.isManagedImage) {
6062
this.managedImageName = tl.getInput(constants.ManagedImageNameInputName, true);
6163
}
64+
if (this.canDeleteTempFolder) {
65+
this.canDeleteTempFolderInputName = tl.getInput(constants.canDeleteTempFolderInputName, true);
66+
}
6267

6368
this.baseImageSource = tl.getInput(constants.BaseImageSourceInputName, true);
6469
if (this.baseImageSource === constants.BaseImageSourceDefault) {
@@ -135,4 +140,4 @@ export default class TaskParameters {
135140
const endpoint = await new AzureRMEndpoint(connectedService).getEndpoint();
136141
return endpoint;
137142
}
138-
}
143+
}

Tasks/PackerBuildV1/task.json

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"author": "Microsoft Corporation",
1515
"version": {
1616
"Major": 1,
17-
"Minor": 255,
17+
"Minor": 257,
1818
"Patch": 0
1919
},
2020
"demands": [],
@@ -93,6 +93,7 @@
9393
"defaultValue": true,
9494
"groupName": "AzureDetails"
9595
},
96+
9697
{
9798
"name": "managedImageName",
9899
"type": "string",
@@ -216,6 +217,14 @@
216217
"defaultValue": "",
217218
"helpMarkDown": "Specify the arguments to be passed to deployment script.",
218219
"groupName": "DeploymentInputs"
220+
}, {
221+
"name": "canDeleteTempFolder",
222+
"type": "boolean",
223+
"label": "Delete temp folder",
224+
"required": true,
225+
"helpMarkDown": "This option allows you to remove temporary folder",
226+
"defaultValue": false,
227+
"groupName": "DeploymentInputs"
219228
},
220229
{
221230
"name": "additionalBuilderParameters",

Tasks/PackerBuildV1/task.loc.json

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"author": "Microsoft Corporation",
1515
"version": {
1616
"Major": 1,
17-
"Minor": 255,
17+
"Minor": 257,
1818
"Patch": 0
1919
},
2020
"demands": [],
@@ -217,6 +217,15 @@
217217
"helpMarkDown": "ms-resource:loc.input.help.deployScriptArguments",
218218
"groupName": "DeploymentInputs"
219219
},
220+
{
221+
"name": "canDeleteTempFolder",
222+
"type": "boolean",
223+
"label": "ms-resource:loc.input.label.canDeleteTempFolder",
224+
"required": true,
225+
"helpMarkDown": "ms-resource:loc.input.help.canDeleteTempFolder",
226+
"defaultValue": false,
227+
"groupName": "DeploymentInputs"
228+
},
220229
{
221230
"name": "additionalBuilderParameters",
222231
"type": "multiLine",

0 commit comments

Comments
 (0)