mirror of
https://github.com/hashicorp/setup-terraform.git
synced 2025-12-24 12:17:09 +00:00
feat: add post-job step for cleaning temp dir
This commit is contained in:
parent
69c00852f1
commit
f6ec85149b
3 changed files with 54 additions and 0 deletions
11
README.md
11
README.md
|
|
@ -75,6 +75,15 @@ steps:
|
|||
- run: echo ${{ steps.plan.outputs.exitcode }}
|
||||
```
|
||||
|
||||
Temporary directory could be deleted after all steps by setting the `cleanup_workspace` variable to `true`:
|
||||
|
||||
```yaml
|
||||
steps:
|
||||
- uses: hashicorp/setup-terraform@v3
|
||||
with:
|
||||
cleanup_workspace: true
|
||||
```
|
||||
|
||||
Outputs can be used in subsequent steps to comment on the pull request:
|
||||
|
||||
> **Notice:** There's a limit to the number of characters inside a GitHub comment (65535).
|
||||
|
|
@ -254,6 +263,8 @@ The action supports the following inputs:
|
|||
- `terraform_wrapper` - (optional) Whether to install a wrapper to wrap subsequent calls of
|
||||
the `terraform` binary and expose its STDOUT, STDERR, and exit code as outputs
|
||||
named `stdout`, `stderr`, and `exitcode` respectively. Defaults to `true`.
|
||||
- `cleanup_workspace` - (optional) The Terraform binary file is downloaded to a temporary directory.
|
||||
This parameter will be used to clean that directory. Defaults to `true`.
|
||||
|
||||
## Outputs
|
||||
|
||||
|
|
|
|||
|
|
@ -17,9 +17,15 @@ inputs:
|
|||
description: 'Whether or not to install a wrapper to wrap subsequent calls of the `terraform` binary and expose its STDOUT, STDERR, and exit code as outputs named `stdout`, `stderr`, and `exitcode` respectively. Defaults to `true`.'
|
||||
default: 'true'
|
||||
required: false
|
||||
cleanup_workspace:
|
||||
description: 'The Terraform binary file is downloaded to a temporary directory. This parameter will be used to clean that directory. Defaults to `true`.'
|
||||
default: 'false'
|
||||
required: false
|
||||
runs:
|
||||
using: 'node20'
|
||||
main: 'dist/index.js'
|
||||
post: 'dist/cleanup.js'
|
||||
post-if: cleanup_workspace
|
||||
branding:
|
||||
icon: 'terminal'
|
||||
color: 'purple'
|
||||
|
|
|
|||
37
dist/cleanup.js
vendored
Normal file
37
dist/cleanup.js
vendored
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
/**
|
||||
* Copyright (c) HashiCorp, Inc.
|
||||
* SPDX-License-Identifier: MPL-2.0
|
||||
*/
|
||||
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
// Retrieve environment variables and parameters
|
||||
const terraformCliPath = process.env.TERRAFORM_CLI_PATH;
|
||||
|
||||
// Function to recursively delete a directory
|
||||
const deleteDirectoryRecursive = function(directoryPath) {
|
||||
if (fs.existsSync(directoryPath)) {
|
||||
fs.readdirSync(directoryPath).forEach((file) => {
|
||||
const curPath = path.join(directoryPath, file);
|
||||
if (fs.lstatSync(curPath).isDirectory()) {
|
||||
// Recurse
|
||||
deleteDirectoryRecursive(curPath);
|
||||
} else {
|
||||
// Delete file
|
||||
fs.unlinkSync(curPath);
|
||||
}
|
||||
});
|
||||
fs.rmdirSync(directoryPath);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
// Check if cleanup is required
|
||||
if (terraformCliPath) {
|
||||
console.log(`Cleaning up directory: ${terraformCliPath}`);
|
||||
deleteDirectoryRecursive(terraformCliPath);
|
||||
console.log('Cleanup completed.');
|
||||
} else {
|
||||
console.log('No cleanup required.');
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue