Skip to content

harness-community/drone-findfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

drone-findfiles

A plugin to search for files using relative or absolute paths and filter based on Ant style pattern.

To learn how to utilize Drone plugins in Harness CI, please consult the provided documentation.

Usage

The following settings changes this plugin's behavior.

  • glob: Ant style pattern to search for files. For example, **/*.txt searches for all .txt files in directories.
  • excludes (optional): Pattern to exclude files from the search result. For example, **/*.zip excludes files with zip extension from the result.
  • dir (optional) : Directory in which to perform the search, if not specificed use the current directory.

Output

The search result is output as a JSON with the following properties.

  • name: The file name.
  • path: The complete path to the file.
  • isDirectory: A boolean to indicate if the path refer to a directory or not.
  • length: The length in bytes of the file.
  • lastModified: The last modified formatted as RFC3339.

Below is an example of the output when run the plugin using this code repository directory.

[
    {
        "name": "main.go",
        "path": "drone-findfiles/main.go",
        "isDirectory": false,
        "length": 1130,
        "lastModified": "2024-09-12T19:45:00Z"
    },
    {
        "name": "pipeline.go",
        "path": "drone-findfiles/plugin/pipeline.go",
        "isDirectory": false,
        "length": 5424,
        "lastModified": "2024-09-12T19:45:00Z"
    },
    {
        "name": "plugin.go",
        "path": "drone-findfiles/plugin/plugin.go",
        "isDirectory": false,
        "length": 3444,
        "lastModified": "2024-09-12T19:45:00Z"
    },
    {
        "name": "plugin_test.go",
        "path": "drone-findfiles/plugin/plugin_test.go",
        "isDirectory": false,
        "length": 9838,
        "lastModified": "2024-09-12T19:45:00Z"
    }
]

The plugin uses the Drone environment variable DRONE_OUTPUT to write the search result.

Step Definition

Below is an example to use the plugin inside a Harness CI pipeline.

- step:
    type: Plugin
    name: Find Files
    identifier: Find_Files
    spec:
      connectorRef: harness-docker-connector
      image: harness-community/drone-findfiles:linux-amd64
      settings:
        glob: "**/*.go"

To use the output JSON inside the Harness pipeline use the expression <+steps.STEP_ID.output.outputVariables.FILES_INFO> where the STEP_ID is the identifier from the find files plugin.

You can use the expression and inspect each attribute using jq tool inside a Run step.

files_info='<+steps.Find_Files.output.outputVariables.FILES_INFO>'

echo "Path"
echo $files_info | jq '.[].path'

Building

Build the plugin binary:

scripts/build.sh

Testing

Execute the plugin from your current working directory:

PLUGIN_GLOB="**/*.go" \
PLUGIN_EXCLUDES="**/*_test.go" \
DRONE_OUTPUT="drone_output.properties" \
go run main.go

About

No description, website, or topics provided.

Resources

License

Apache-2.0, Unknown licenses found

Licenses found

Apache-2.0
LICENSE
Unknown
LICENSE.md

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published