{"id":14984592,"url":"https://github.com/xlab-steampunk/spotter-action","last_synced_at":"2025-04-10T21:20:52.315Z","repository":{"id":60693158,"uuid":"533637579","full_name":"xlab-steampunk/spotter-action","owner":"xlab-steampunk","description":"GitHub Action for Steampunk Spotter","archived":false,"fork":false,"pushed_at":"2024-12-19T08:08:24.000Z","size":52,"stargazers_count":4,"open_issues_count":1,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-21T11:44:56.033Z","etag":null,"topics":["actions","ansible","ansible-playbook","ansible-role","automation","continuous-integration","github-actions","linter","sast","spotter","steampunk"],"latest_commit_sha":null,"homepage":"https://steampunk.si/spotter/","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xlab-steampunk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-09-07T06:33:40.000Z","updated_at":"2025-02-25T02:56:20.000Z","dependencies_parsed_at":"2023-11-24T10:46:51.766Z","dependency_job_id":"a344ca49-d289-411a-a053-625d926cbbaa","html_url":"https://github.com/xlab-steampunk/spotter-action","commit_stats":{"total_commits":74,"total_committers":3,"mean_commits":"24.666666666666668","dds":"0.22972972972972971","last_synced_commit":"e0bf1136f3731a789d7d3f7419cacfcc1c7533be"},"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xlab-steampunk%2Fspotter-action","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xlab-steampunk%2Fspotter-action/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xlab-steampunk%2Fspotter-action/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xlab-steampunk%2Fspotter-action/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xlab-steampunk","download_url":"https://codeload.github.com/xlab-steampunk/spotter-action/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248298892,"owners_count":21080426,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["actions","ansible","ansible-playbook","ansible-role","automation","continuous-integration","github-actions","linter","sast","spotter","steampunk"],"created_at":"2024-09-24T14:09:18.639Z","updated_at":"2025-04-10T21:20:52.299Z","avatar_url":"https://github.com/xlab-steampunk.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GitHub Action for Steampunk Spotter\nA GitHub Action for scanning your Ansible content with [Steampunk Spotter].\n\n## Table of Contents\n- [Introduction](#introduction)\n- [Prerequisites](#prerequisites)\n- [Usage](#usage)\n  - [Inputs](#inputs)\n  - [Outputs](#outputs)\n  - [Environment variables](#environment-variables)\n- [Next Steps](#next-steps)\n- [Acknowledgement](#acknowledgement)\n\n## Introduction\n[Steampunk Spotter] is an Ansible Playbook Platform that scans, analyzes,\nenhances, and provides insights for your playbooks.\n\nThis GitHub Action allows you to use [steampunk-spotter] CLI within GitHub\nCI/CD workflows.\n\n## Prerequisites\nYou will need to create a [new Steampunk Spotter account] to be able to use\nthis action.\n\n## Usage\nTo integrate [Steampunk Spotter] with your GitHub CI/CD pipeline, you have to\nspecify the name of this repository with a tag number as a step within your\nYAML workflow file.\n\nFor example, inside your `.github/workflows/ci.yml` file:\n\n```yaml\nsteps:\n- uses: actions/checkout@master\n- uses: xlab-steampunk/spotter-action@\u003cversion\u003e\n```\n\n### Inputs\nThe action accepts the following inputs:\n\n| Name                    | Required | Default | Description                                                                                                                                                                        |\n|-------------------------|----------|---------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `endpoint`              | no       | /       | Steampunk Spotter API endpoint (instead of default https://api.spotter.steampunk.si/api).                                                                                          |\n| `api_token`             | no       | /       | Steampunk Spotter API token (can be generated in the user settings within the Spotter App).                                                                                        |\n| `username`              | no       | /       | Steampunk Spotter username (this is an old auth method, use API token if possible).                                                                                                |\n| `password`              | no       | /       | Steampunk Spotter password (this is an old auth method, use API token if possible).                                                                                                |\n| `timeout`               | no       | /       | Steampunk Spotter API timeout (in seconds).                                                                                                                                        |\n| `config`                | no       | /       | Path to JSON/YAML configuration file.                                                                                                                                              |\n| `paths`                 | no       | .       | List of paths to Ansible content files to be scanned. If not specified, the whole repository is scanned.                                                                           |\n| `project_id`            | no       | /       | ID of an existing target project in the app, where the scan result will be stored. If not specified, the first project of the user's first organization (in the app) will be used. |\n| `exclude_values`        | no       | false   | Omits parsing and uploading values from Ansible playbooks.                                                                                                                         |\n| `exclude_metadata`      | no       | false   | Omits collecting and uploading metadata (i.e., file names, line and column numbers).                                                                                               |\n| `display_level`         | no       | hint    | Displays check results with specified level or greater (e.g., warning will show all warnings and errors, but suppress hints). Available options: hint, warning, error.             |\n| `no_docs_url`           | no       | false   | Omits documentation URLs from the output.                                                                                                                                          |\n| `no_scan_url`           | no       | true    | Omits scan URL from the output.                                                                                                                                                    |\n| `ansible_version`       | no       | /       | Ansible version to use for scanning. If not specified, all Ansible versions are considered for scanning.                                                                           |\n| `profile`               | no       | /       | Sets profile with selected set of checks to be used for scanning.                                                                                                                  |\n| `skip_checks`           | no       | /       | Skips checks with specified IDs. IDs should be comma-separated, space-separated or newline-separated and can be found in the check catalog within the Spotter App.                 |\n| `enforce_checks`        | no       | /       | Enforce checks with specified IDs. IDs should be comma-separated, space-separated or newline-separated and can be found in the check catalog within the Spotter App.               |\n| `custom_policies_path`  | no       | /       | Path to the file or folder with custom OPA policies written in Rego Language (enterprise feature).                                                                                 |\n| `custom_policies_clear` | no       | /       | Clears OPA policies for custom Spotter checks after scanning (enterprise feature).                                                                                                 |\n| `debug`                 | no       | /       | Enable debug output.                                                                                                                                                               |\n| `sarif_file`            | no       | /       | Sets the name of the SARIF file and triggers the creation of the SARIF report.                                                                                                     |\n\n### Outputs\nThe action produces the following outputs:\n\n* `output`: Scan results from scanning your Ansible content using the `spotter scan` command.\n\n### Environment variables\nThe action will take into account the following environment variables:\n\n* `SPOTTER_ENDPOINT`: Steampunk Spotter API endpoint (instead of default\n  https://api.spotter.steampunk.si/api).\n* `SPOTTER_TOKEN`: Steampunk Spotter API token (can be generated in the\n   user settings within the Spotter App);\n* `SPOTTER_USERNAME`: Steampunk Spotter username;\n* `SPOTTER_PASSWORD`: Steampunk Spotter password.\n\nWe encourage you to authenticate by setting `SPOTTER_TOKEN` instead of old\n`SPOTTER_USERNAME` and `SPOTTER_PASSWORD` environment variables.\n\n### Examples\nHere are some examples of how to use this GH Action.\n\nMinimal example that scans the whole repository would look like this:\n\n```yaml\nname: Minimal CI/CD workflow for Steampunk Spotter\non: [push]\njobs:\n  run:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v3\n      - uses: xlab-steampunk/spotter-action@\u003cversion\u003e\n        env:\n          SPOTTER_TOKEN: ${{ secrets.SPOTTER_TOKEN }}\n```\n\nA more complex example with multiple action inputs is the following:\n\n```yaml\nname: More complex CI/CD workflow for Steampunk Spotter\non: [push]\njobs:\n  run:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v3\n\n      - name: Scan Ansible content with different inputs\n        uses: xlab-steampunk/spotter-action@\u003cversion\u003e\n        with:\n          endpoint: https://api.spotter.steampunk.si/api\n          api_token: ${{ secrets.SPOTTER_TOKEN }}\n          config: config.yaml\n          paths: playbook.yaml\n          exclude_values: true\n          exclude_metadata: true\n          display_level: error\n          no_docs_url: true\n          ansible_version: 2.16\n          profile: full\n          skip_checks: E001,E903[fqcn=sensu.sensu_go.user]\n          enforce_checks: E1300,E1301\n          debug: true\n```\n\n### Next steps\nPlease refer to the [Steampunk Spotter Documentation] for a more comprehensive usage.\n\n## Acknowledgement\nThis GitHub Action was created by [XLAB Steampunk], IT automation specialist\nand leading expert in building Enterprise Ansible Collections.\n\n[Steampunk Spotter]: https://steampunk.si/spotter/\n[steampunk-spotter]: https://pypi.org/project/steampunk-spotter/\n[new Steampunk Spotter account]: https://spotter.steampunk.si\n[Steampunk Spotter Documentation]: https://spotter.steampunk.si/docs/\n[XLAB Steampunk]: https://steampunk.si/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxlab-steampunk%2Fspotter-action","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxlab-steampunk%2Fspotter-action","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxlab-steampunk%2Fspotter-action/lists"}