{"id":44664684,"url":"https://github.com/exivity/actions","last_synced_at":"2026-02-15T00:17:18.097Z","repository":{"id":37095632,"uuid":"239759693","full_name":"exivity/actions","owner":"exivity","description":"⚡ Public GitHub Actions used at Exivity for CI/CD","archived":false,"fork":false,"pushed_at":"2026-02-13T14:45:43.000Z","size":92357,"stargazers_count":2,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-02-13T23:20:54.752Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/exivity.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-02-11T12:45:06.000Z","updated_at":"2026-02-13T14:45:48.000Z","dependencies_parsed_at":"2023-02-19T08:31:25.512Z","dependency_job_id":"3584c6ae-869a-454c-b544-347679081172","html_url":"https://github.com/exivity/actions","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/exivity/actions","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exivity%2Factions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exivity%2Factions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exivity%2Factions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exivity%2Factions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/exivity","download_url":"https://codeload.github.com/exivity/actions/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exivity%2Factions/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29461617,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T22:42:09.113Z","status":"ssl_error","status_checked_at":"2026-02-14T22:42:05.053Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2026-02-15T00:17:15.266Z","updated_at":"2026-02-15T00:17:18.091Z","avatar_url":"https://github.com/exivity.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# @exivity/actions\n\n**Common actions**\n\nThese were originally built for use with the Exivity CI/CD workflows, but can be\napplied outside of the context of the Exivity repositories.\n\n- [`build-push-image`] ⚠️ **DEPRECATED** This action is deprecated and will be\n  removed in a future version. Please migrate to `docker-build-push`\n- [`docker-build-push`](#docker-build-push)\n- [`commit-status`](#commit-status)\n- [`dispatch-workflow`](#dispatch-workflow)\n- [`enable-automerge`](#enable-automerge)\n- [`init-ssh`](#init-ssh)\n- [`postgres`](#postgres)\n- [`process-binary`](#process-binary)\n- [`purge-ghcr`](#purge-ghcr)\n- [`push-to-central-repo`](#push-to-central-repo)\n- [`rabbitmq`](#rabbitmq)\n- [`rcedit`](#rcedit)\n- [`retag-image`](#retag-image)\n- [`review`](#review)\n- [`semantic-pull-request`](#semantic-pull-request)\n- [`sign-file`](#sign-file)\n- [`slack`](#slack)\n- [`sync-defaults`](#sync-defaults)\n- [`virustotal`](#virustotal)\n\n**Exivity specific actions**\n\nThese probably don't make much sense outside the context of the Exivity CI/CD\nworkflows.\n\n- [`accept`](#accept)\n- [`db`](#db)\n- [`get-artefacts`](#get-artefacts)\n- [`release`](#release)\n- [`put-artefacts`](#put-artefacts)\n\n---\n\n# `docker-build-push`\n\nBuilds a container image and pushes it to a Docker registry. It uses the branch\nname as the image tag and attaches some simple _opencontainers_ image labels.\nThe actions also writes a `metadata.json` file containing some basic information\nabout the image: component name, version (semver tag or git sha) and timestamp.\nThis file needs to be manually copied into the image in the Dockerfile if\nneeded.\n\n## Example\n\n```yaml\n- uses: exivity/actions/docker-build-push@main\n```\n\n## Inputs\n\n| name         | required | default          | description                                                                                                                                    |\n| ------------ | -------- | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |\n| `namespace`  |          | Repository owner | The namespace of the image repository                                                                                                          |\n| `name`       |          | Repository name  | The name of the image repository                                                                                                               |\n| `dockerfile` |          | `\"./Dockerfile\"` | Path to the Dockerfile                                                                                                                         |\n| `registry`   |          | `\"ghcr.io\"`      | Registry to use, e.g. `\"ghcr.io\"` (default) or `\"docker.io\"` (for Docker Hub)                                                                  |\n| `user`       |          | `github.actor`   | Username for the Docker registry                                                                                                               |\n| `password`   |          | `github.token`   | Password for the Docker registry                                                                                                               |\n| `useSSH`     | false    | `false`          | Whether to use SSH for Git operations                                                                                                          |\n| `secrets`    | false    |                  | Secrets for Docker build like `id=npmrc,src=$HOME/.npmrc`                                                                                      |\n| `target`     | false    |                  | Specify a stage to build from the Dockerfile                                                                                                   |\n| `platforms`  | false    | `linux/amd64`    | Platforms for multi-platform builds. Requires docker buildx to be installed and configured, see https://github.com/exivity/setup-buildx-action |\n\n# `commit-status`\n\nWrites a\n[commit status](https://docs.github.com/en/rest/reference/commits#commit-statuses).\n\n## Example\n\n```yaml\n- uses: exivity/actions/commit-status@main\n  with:\n    context: auto-success\n```\n\n## Inputs\n\n| name          | required | default          | description                                                                        |\n| ------------- | -------- | ---------------- | ---------------------------------------------------------------------------------- |\n| `owner`       |          | Repository owner | The owner of the repo                                                              |\n| `repo`        |          | Repository name  | The repo to write the commit status for                                            |\n| `sha`         |          | Current sha      | Sha of commit to write the status for                                              |\n| `state`       |          | `\"success\"`      | The commit status state, can be `\"error\"`, `\"failure\"`, `\"pending\"` or `\"success\"` |\n| `context`     | ✅       |                  | A string label to differentiate this status from the status of other systems       |\n| `description` |          |                  | A short description of the status                                                  |\n| `target_url`  |          |                  | The target URL to associate with this status                                       |\n| `gh-token`    |          | `github.token`   | A GitHub token with write access to the component                                  |\n\n# `dispatch-workflow`\n\nTriggers another workflow run. The target workflow must\n[define the `on: workflow_dispatch` trigger](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflow_dispatch).\n\nThe workflow should either be defined by ID or workflow filename. Look up the ID\nof a workflow by calling the GitHub API at:\n\n```\nGET https://api.github.com/repos/{owner}/{repo}/actions/workflows\n```\n\n## Example\n\n```yaml\n- uses: exivity/actions/dispatch-workflow@main\n  with:\n    workflow:\n    gh-token: ${{ secrets.GITHUB_PAT }}\n```\n\n## Inputs\n\n| name       | required | default          | description                                                                               |\n| ---------- | -------- | ---------------- | ----------------------------------------------------------------------------------------- |\n| `owner`    |          | Repository owner | The owner of the target repo                                                              |\n| `repo`     |          | Repository name  | The target repo to dispatch the workflow in                                               |\n| `ref`      |          | Current ref      | The ref to dispatch the workflow on                                                       |\n| `workflow` | ✅       |                  | The workflow (by ID or filename) to dispatch                                              |\n| `inputs`   |          |                  | The inputs encoded as JSON string (of type `Record\u003cstring, string\u003e`)                      |\n| `gh-token` | ✅       |                  | A GitHub PAT with write access to the target repository. The default token can't be used. |\n\n# `enable-automerge`\n\nEnable GitHub automerge for the current PR.\n\n_Based on original work from\n[alexwilson/enable-github-automerge-action](https://github.com/alexwilson/enable-github-automerge-action)_\n\n## Example\n\n```yaml\n- uses: exivity/actions/enable-automerge@main\n  if: ${{ github.actor == 'dependabot[bot]' }}\n```\n\n## Inputs\n\n| name           | required | default              | description                                                                                                            |\n| -------------- | -------- | -------------------- | ---------------------------------------------------------------------------------------------------------------------- |\n| `merge-method` |          | Default merge method | Merge method to use. Leave empty to use repository's default merge method. One of `\"MERGE\"`, `\"SQUASH\"` or `\"REBASE\"`. |\n| `gh-token`     |          | `github.token`       | GitHub token with write access to the repository                                                                       |\n\n# `init-ssh`\n\nUse a private key and prime the known_hosts file with pre-loaded keys for\ngithub.com, gitlab.com and bitbucket.org.\n\n## Example\n\n```yaml\n- uses: exivity/actions/init-ssh@main\n  with:\n    private-key: ${{ secrets.PRIVATE_KEY }}\n```\n\nWhere the `PRIVATE_KEY` secret contains your private key:\n\n```\n-----BEGIN RSA PRIVATE KEY-----\nkey contents\n-----END RSA PRIVATE KEY-----\n```\n\n## Inputs\n\n| name          | required | default | description              |\n| ------------- | -------- | ------- | ------------------------ |\n| `private-key` | ✅       |         | The full SSH private key |\n\n# `postgres`\n\nStarts a PostgreSQL server\n\n## Example\n\n```yaml\n- uses: exivity/actions/postgres@main\n  with:\n    mode: docker\n```\n\n## Inputs\n\n| name       | required | default      | description                                                                                                                                                                                           |\n| ---------- | -------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `mode`     |          | `\"host\"`     | Whether to run PostgreSQL as a Docker container or start the server installed on the host. Either `\"docker\"` or `\"host\"`                                                                              |\n| `version`  |          | `\"14.0\"`     | The PostgreSQL version to use. Only affects Docker mode (host mode always uses default version). Make sure to use a string type to avoid truncation. Available versions: `\"14.0\"`, `\"13.0\"`, `\"12.3\"` |\n| `password` |          | `\"postgres\"` | The password for the default `postgres` user in de database, currently only works with host mode                                                                                                      |\n\n# `process-binary`\n\nA composite action running [`rcedit`](#rcedit), [`sign-file`](#sign-file) and\n[`virustotal`](#virustotal) (in that order).\n\n## Example\n\n```yaml\n- uses: exivity/actions/process-binary@main\n  with:\n    path: build/foo.exe\n    certificate-base64: ${{ secrets.CODESIGN_CERTIFICATE_BASE64 }}\n    certificate-password: ${{ secrets.CODESIGN_CERTIFICATE_PASSWORD }}\n    virustotal-api-key: ${{ secrets.VIRUSTOTAL_API_KEY }}\n```\n\n## Inputs\n\nSee individual actions for inputs.\n\n# `purge-ghcr`\n\nDelete a package version from GitHub Container Registry if a branch or tag is\ndeleted. This is useful to clean dangling versions from ghcr.io for images built\nwith [`docker-build-push`]. See\n[.github repository](https://github.com/exivity/.github#purge-ghcr) for example\nusage.\n\n## Example\n\nFull example workflow:\n\n```yaml\nname: purge-ghcr\n\non: delete\n\njobs:\n  purge-ghcr:\n    runs-on: ubuntu-24.04\n    steps:\n      - uses: exivity/actions/purge-ghcr@main\n        with:\n          gh-token: ${{ secrets.GITHUB_PAT }}\n```\n\n## Inputs\n\n| name       | required | default          | description                                                                                                           |\n| ---------- | -------- | ---------------- | --------------------------------------------------------------------------------------------------------------------- |\n| `org`      |          | Repository owner | The org who owns the package                                                                                          |\n| `name`     |          | Repository name  | The package name                                                                                                      |\n| `gh-token` |          | `github.token`   | The GitHub token with admin permissions in the organization and admin permissions to the container you want to delete |\n\n# `push-to-central-repo`\n\nPushes selected files and folders to a central repository with an organized\nstructure. This action is designed to collect files like README.md, templates,\nschema files, and other assets from multiple repositories and organize them in a\ncentralized location.\n\n## Example\n\n```yaml\n- uses: exivity/actions/push-to-central-repo@main\n  with:\n    central-repo-owner: 'your-org'\n    central-repo-name: 'central-assets'\n    files: 'README.md,package.json'\n    folders: 'templates,docs'\n    gh-token: ${{ secrets.GITHUB_TOKEN }}\n```\n\n## Directory Structure\n\nThe action creates the following structure in the central repository:\n\n```\n/\n├── schemas/\n│   ├── repo-a/\n│   │   ├── foo.schema.json\n│   │   └── bar.schema.json\n│   └── repo-b/\n│       └── baz.schema.json\n├── templates/\n│   ├── repo-a/\n│   │   ├── template1.html\n│   │   └── partials/\n│   └── repo-b/\n│       └── widget/\n│           └── index.hbs\n└── README_sources/\n    ├── repo-a/\n    │   └── README.md\n    └── repo-b/\n        └── README.md\n└── files/\n    ├── repo-a/\n    │   └── config.json\n    └── repo-b/\n        └── settings.yaml\n```\n\n## Inputs\n\n| name                  | required | default | description                                              |\n| --------------------- | -------- | ------- | -------------------------------------------------------- |\n| `central-repo-owner`  | ✅       |         | Owner of the central repository                          |\n| `central-repo-name`   | ✅       |         | Name of the central repository                           |\n| `central-repo-branch` |          | `main`  | Branch in central repository to push to                  |\n| `files`               |          |         | Comma-separated list of files to push                    |\n| `folders`             |          |         | Comma-separated list of folders to push                  |\n| `gh-token`            | ✅       |         | GitHub token with write access to the central repository |\n| `dry-run`             |          | `false` | Show what would be done without making changes           |\n\n# `rabbitmq`\n\nStarts a RabbitMQ server in a Docker container.\n\n## Example\n\n```yaml\n- uses: exivity/actions/rabbitmq@main\n```\n\n## Inputs\n\n| name      | required | default   | description                                                         |\n| --------- | -------- | --------- | ------------------------------------------------------------------- |\n| `version` |          | `\"3.8.6\"` | The RabbitMQ version to use. Currently, only `\"3.8.6\"` is supported |\n\n# `rcedit`\n\nEdit resources of a Windows executable\n\n⚠️ Currently only works on 64-bit Windows hosts\n\n## Example\n\n```yaml\n- uses: exivity/actions/rcedit@main\n  with:\n    path: build/foo.exe\n```\n\n## Inputs\n\n| name                        | required | default                           | description                                                                                                          |\n| --------------------------- | -------- | --------------------------------- | -------------------------------------------------------------------------------------------------------------------- |\n| `path`                      | ✅       |                                   | The path to the file to sign, glob patterns allowed                                                                  |\n| `file-description`          |          | `\"Exivity component: $repo@$sha\"` | File description to be presented to users                                                                            |\n| `file-version`              |          |                                   | File's version to change to                                                                                          |\n| `product-name`              |          | `\"Exivity\"`                       | Name of the product with which the file is distributed                                                               |\n| `product-version`           |          |                                   | Product's version to change to                                                                                       |\n| `company-name`              |          | `\"Exivity\"`                       | Company that produced the executable                                                                                 |\n| `comments`                  |          |                                   | Additional information that should be displayed for diagnostic purposes                                              |\n| `internal-filename`         |          |                                   | Internal name of the file. Usually, this string should be the original filename, without the extension               |\n| `legal-copyright`           |          | `\"© 2017 Exivity\"`               | Copyright notices that apply, including the full text of all notices, legal symbols, copyright dates, etc.           |\n| `legal-trademarks1`         |          |                                   | Trademarks and registered trademarks, including the full text of all notices, legal symbols, trademark numbers, etc. |\n| `legal-trademarks2`         |          |                                   | Trademarks and registered trademarks, including the full text of all notices, legal symbols, trademark numbers, etc. |\n| `original-filename`         |          |                                   | Original name of the file, not including a path                                                                      |\n| `icon`                      |          |                                   | Path to the icon file (.ico) to set as the exePath's default icon                                                    |\n| `requested-execution-level` |          |                                   | Requested execution level to change to, must be either asInvoker, highestAvailable, or requireAdministrator          |\n| `application-manifest`      |          |                                   | String path to a local manifest file to use                                                                          |\n\n# `retag-image`\n\nPulls, tags, then pushes an image with multi-arch support. Uses\n`docker buildx imagetools` for proper multi-architecture image copying,\npreserving all architectures in the manifest list.\n\n## Example\n\n```yaml\n- uses: exivity/actions/retag-image@main\n  with:\n    source-tag: main\n    target-tag: release\n    target-user: ${{ secrets.DOCKER_HUB_USER }}\n    target-password: ${{ secrets.DOCKER_HUB_TOKEN }}\n```\n\n## Params\n\n| name               | required | default             | description                                       |\n| ------------------ | -------- | ------------------- | ------------------------------------------------- |\n| `source-registry`  |          | `ghcr.io`           | Source docker registry to use                     |\n| `source-namespace` |          | \u003crepo-owner\u003e        | Source image namespace                            |\n| `source-name`      |          | \u003crepo-name\u003e         | Source image name                                 |\n| `source-tag`       | ✅       |                     | Source image tag                                  |\n| `source-user`      |          | ${{ github.actor }} | Username for source registry (optional)           |\n| `source-password`  |          | ${{ github.token }} | Password for source registry (optional)           |\n| `target-registry`  |          | `docker.io`         | Target docker registry to use                     |\n| `target-namespace` |          | \u003crepo-owner\u003e        | Target image namespace                            |\n| `target-name`      |          | \u003crepo-name\u003e         | Target image name                                 |\n| `target-tag`       | ✅       |                     | Target image tag                                  |\n| `target-user`      |          |                     | Username for target registry (optional)           |\n| `target-password`  |          |                     | Password for target registry (optional)           |\n| `multi-arch`       |          | `true`              | Enable multi-arch support using buildx imagetools |\n\n# `review`\n\nReviews a PR\n\n## Example\n\n```yaml\n- uses: exivity/actions/review@main\n  with:\n    gh-token: ${{ secrets.GITHUB_PAT }}\n    body: Exivity bot approves everything!\n```\n\n## Inputs\n\n| name       | required | default                               | description                                                                                                              |\n| ---------- | -------- | ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| `owner`    |          | Repository owner                      | The owner of the repo                                                                                                    |\n| `repo`     |          | Repository name                       | The repo to review a PR for                                                                                              |\n| `pull`     |          | Latest pull request of current branch | PR number to review                                                                                                      |\n| `event`    |          | `\"APPROVE\"`                           | Choose from `\"APPROVE\"`, `\"REQUEST_CHANGES\"`, `\"COMMENT\"` or `\"PENDING\"`                                                 |\n| `body`     | Maybe    |                                       | The body of the review text, required when using `\"REQUEST_CHANGES\"` or `\"COMMENT\"`                                      |\n| `branch`   |          | Current branch                        | The head branch the pull request belongs to in order to get latest pull request, not needed if `pull` has been specified |\n| `gh-token` |          | `github.token`                        | A GitHub token from the PR reviewer                                                                                      |\n\n# `semantic-pull-request`\n\nEnsures your pull requests title follow the\n[Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) spec.\n\nSee\n[.github repository](https://github.com/exivity/.github#semantic-pull-request)\nfor example usage.\n\n_Based on original work from\n[amannn/action-semantic-pull-request](https://github.com/amannn/action-semantic-pull-request)_\n\n## Example\n\n```yaml\n- uses: exivity/actions/semantic-pull-request@main\n```\n\n## Inputs\n\n| name       | required | default        | description                                     |\n| ---------- | -------- | -------------- | ----------------------------------------------- |\n| `gh-token` |          | `github.token` | GitHub token with read access to the repository |\n\n# `sign-file`\n\nDigitally sign a file\n\n⚠️ Currently only works on Windows hosts\n\n## Example\n\n```yaml\n- uses: exivity/actions/sign-file@main\n  with:\n    path: build/foo.exe\n    certificate-base64: ${{ secrets.CODESIGN_CERTIFICATE_BASE64 }}\n    certificate-password: ${{ secrets.CODESIGN_CERTIFICATE_PASSWORD }}\n```\n\n## Inputs\n\n| name                   | required | default      | description                                                                |\n| ---------------------- | -------- | ------------ | -------------------------------------------------------------------------- |\n| `path`                 | ✅       |              | The path to the file to sign, glob patterns allowed                        |\n| `certificate-base64`   | ✅       |              | The contents of the `.pfx` file (PKCS#12 archive) encoded as base64 string |\n| `certificate-password` | ✅       |              | The password for the `.pfx` file                                           |\n| `method`               |          | `\"signtool\"` | The signature tool to use. Available options: `\"signtool\"`                 |\n\n# `slack`\n\nSend a Slack message to the author of the commit triggering the workflow (if\navailable).\n\n## Example\n\n```yaml\n- uses: exivity/actions/slack@main\n  if: failure()\n  with:\n    status: ${{ job.status }}\n    slack-api-token: ${{ secrets.SLACK_BOT_TOKEN }}\n```\n\n## Inputs\n\n| name               | required | default        | description                                                                                                                                                                      |\n| ------------------ | -------- | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `message`          | Maybe    |                | The message body to send, markdown is supported. Requid when `status` is not set.                                                                                                |\n| `status`           |          |                | Include a status message if set to `\"success\"`, `\"failure\"` or `\"cancelled\"`                                                                                                     |\n| `channel`          |          |                | If provided, send message to this channel instead of commit author. Can be a channel ID, user ID, channel name as `\"#channel-name\"` or a users display name as `\"@display-name\"` |\n| `fallback-channel` |          | `\"#builds\"`    | If a Slack user can't be resolved, use this channel as a fallback.                                                                                                               |\n| `slack-api-token`  | ✅       |                | Slack API token                                                                                                                                                                  |\n| `gh-token`         |          | `github.token` | GitHub token with read access to the repository                                                                                                                                  |\n\n# `sync-defaults`\n\nSyncs the repo settings with org defaults. Override org settings in a local\n`.github/settings.yml` file. See\n[probot/settings](https://github.com/probot/settings#usage) for all available\noptions.\n\nSee [.github repository](https://github.com/exivity/.github#sync-defaults) for\nexample usage.\n\n_Based on original work from\n[probot/settings](https://github.com/probot/settings)_\n\n## Example\n\n```yaml\n- uses: exivity/actions/sync-defaults@main\n  with:\n    gh-token: ${{ secrets.GITHUB_PAT }}\n```\n\n## Inputs\n\n| name       | required | default        | description                                      |\n| ---------- | -------- | -------------- | ------------------------------------------------ |\n| `gh-token` |          | `github.token` | GitHub token with admin access to the repository |\n\n# `virustotal`\n\nAnalyse artefacts with VirusTotal\n\n_Forked from:\n[crazy-max/ghaction-virustotal](https://github.com/crazy-max/ghaction-virustotal)_\n\n## Example\n\nBuild workflow:\n\n```yaml\n- uses: exivity/actions/virustotal@main\n  with:\n    path: build/foo.exe\n    virustotal-api-key: ${{ secrets.VIRUSTOTAL_API_KEY }}\n```\n\nSeparate check workflow:\n\n```yaml\nname: virustotal-check\n\non:\n  workflow_dispatch:\n  schedule:\n    - cron: '0 3 * * *'\n\njobs:\n  check:\n    runs-on: ubuntu-24.04\n    steps:\n      - uses: exivity/actions/virustotal@main\n        with:\n          mode: check\n          virustotal-api-key: ${{ secrets.VIRUSTOTAL_API_KEY }}\n```\n\n## Inputs\n\n| name                 | required | default        | description                                                                                         |\n| -------------------- | -------- | -------------- | --------------------------------------------------------------------------------------------------- |\n| `mode`               |          | `\"analyse\"`    | Whether to analyse artefacts or check the analysis status. Either `\"analyse\"` or `\"check\"`.         |\n| `path`               | Maybe    |                | The path to the file to analyse, glob patterns allowed. Required when `mode` is set to `\"analyse\"`. |\n| `virustotal-api-key` | ✅       |                | The VirusTotal API key                                                                              |\n| `gh-token`           |          | `github.token` | GitHub token used for writing commit status                                                         |\n\n---\n\n# `accept`\n\nTriggers a scaffold repository build using the `workflow_dispatch` event. Does\nnot trigger for the `master` or `main` branch.\n\nIf the current branch includes a Jira key (e.g. EXVT-1000), the scaffold build\nwill try to resolve matching epic branches for other components.\n\nSee [.github repository](https://github.com/exivity/.github#accept) for example\nusage.\n\n## Example\n\n```yaml\n- uses: exivity/actions/accept@main\n  with:\n    gh-token: ${{ secrets.GH_BOT_TOKEN }}\n```\n\n## Inputs\n\n| name              | required | default        | description                                                                                                                                                                                                                                  |\n| ----------------- | -------- | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `scaffold-branch` |          | `\"develop\"`    | The scaffold branch to build.                                                                                                                                                                                                                |\n| `gh-token`        |          | `github.token` | A GitHub token with access to the exivity/scaffold repository.                                                                                                                                                                               |\n| `dry-run`         |          | `false`        | If `true`, scaffold will not build or run any tests.                                                                                                                                                                                         |\n| `filter`          |          |                | If provided, only trigger acceptance tests if files which match this input are modified. Glob patterns allowed. Multiple entries eparated by newline. If provided, and changed files do not match, writes a successful status to the commit. |\n\n# `db`\n\nRuns a PostgreSQL docker container, create a new database, pulls in the `db`\nrepository migrations and runs them.\n\n## Example\n\n```yaml\n- uses: exivity/actions/db@main\n  with:\n    branch: some-feature-branch\n    aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}\n    aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}\n    gh-token: ${{ secrets.GH_BOT_TOKEN }}\n```\n\n## Inputs\n\n| name                    | required | default                                                                          | description                                                                                                                                                                                           |\n| ----------------------- | -------- | -------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `branch`                |          | `\"main\"` or `\"master\"` when it matches the current branch, `\"develop\"` otherwise | The db repository branch to use.                                                                                                                                                                      |\n| `db-name`               |          | `\"exdb-test\"`                                                                    | The db name to create.                                                                                                                                                                                |\n| `mode`                  |          | `\"host\"`                                                                         | Whether to run PostgreSQL as a Docker container or start the server installed on the host. Either `\"host\"` or `\"docker\"`.                                                                             |\n| `version`               |          | `\"14.0\"`                                                                         | The PostgreSQL version to use. Only affects Docker mode (host mode always uses default version). Make sure to use a string type to avoid truncation. Available versions: `\"14.0\"`, `\"13.0\"`, `\"12.3\"` |\n| `aws-access-key-id`     | ✅       |                                                                                  | The AWS access key ID                                                                                                                                                                                 |\n| `aws-secret-access-key` | ✅       |                                                                                  | The AWS secret access key                                                                                                                                                                             |\n| `gh-token`              |          | `github.token`                                                                   | A GitHub token with access to the exivity/db repository.                                                                                                                                              |\n| `password`              |          | `\"postgres\"`                                                                     | The password for the postgres user in de database, currently only works with host mode.                                                                                                               |\n\n# `get-artefacts`\n\nDownload artefacts for the provided component. It will use the S3 _exivity_\nbucket in the _eu-central-1_ region. Artefacts are downloaded with the\n_build/{component}/{sha}[/{platform}][/{prefix}]_ prefix.\n\n## Example\n\n```yaml\n- uses: exivity/actions/get-artefacts@main\n  with:\n    component: db\n    branch: master\n    path: db-artefacts\n    aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}\n    aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}\n    gh-token: ${{ secrets.GH_BOT_TOKEN }}\n```\n\n## Inputs\n\n| name                    | required | default                                                                                         | description                                                                                      |\n| ----------------------- | -------- | ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |\n| `component`             | ✅       |                                                                                                 | Component to download artefacts for                                                              |\n| `sha`                   |          |                                                                                                 | Use specific artefacts sha                                                                       |\n| `branch`                |          | `\"main\"` or `\"master\"` when it matches the current branch, `\"develop\"` otherwise (if available) | If no sha is provided, resolve sha from branch name                                              |\n| `use-platform-prefix`   |          | `false`                                                                                         | If `true`, uses `windows` or `linux` prefix depending on current os.                             |\n| `prefix`                |          |                                                                                                 | If specified, download artefacts from this prefix (appended after platform prefix if specified). |\n| `path`                  |          | `\"../{component}/build\"`                                                                        | Put artefacts in this path                                                                       |\n| `auto-unzip`            |          | `true`                                                                                          | Automatically unzip artefact files                                                               |\n| `aws-access-key-id`     | ✅       |                                                                                                 | The AWS access key ID                                                                            |\n| `aws-secret-access-key` | ✅       |                                                                                                 | The AWS secret access key                                                                        |\n| `gh-token`              |          | `github.token`                                                                                  | A GitHub token with access to the exivity/{component} repository.                                |\n\n# `release`\n\nAction to help releasing Exivity.\n\nThis action controls a _release_ repository which is used to release Exivity.\nWhenever a change occurs in one of the components which is ready to be release,\na pull request is updated in the release repository which contains the upcoming\nversion increase inferred from all pending changes and updates to the\nCHANGELOG.md. Merging this pull request will release a new version of Exivity.\n\nThe `ping` mode is supposed to be used by components, whenever they push to\ntheir production branch. It will trigger a `prepare` workflow containing the\nrelease action in `prepare` mode in the release repository.\n\nThe `prepare` mode is to be used in the release repository. It will pull in\npending changes in all components, update the upcoming version and CHANGELOG.md\nand open a pull request with these changes.\n\nThe `release` mode is to be used in the release repository. It will write a new\nrelease tag in the release repository, plus new tags in all released components.\n\n**⚠️ Important** Make sure to checkout the entire git history in `prepare` and\n`release` mode by using the checkout actions like this:\n\n```yaml\n- uses: actions/checkout@v3\n  with:\n    fetch-depth: 0\n```\n\n## Examples\n\n```yaml\n- uses: exivity/actions/release@main\n  with:\n    mode: ping\n    gh-token: ${{ secrets.GH_BOT_TOKEN }}\n```\n\n```yaml\n- uses: exivity/actions/release@main\n  with:\n    mode: prepare\n    gh-token: ${{ secrets.GH_BOT_TOKEN }}\n```\n\n```yaml\n- uses: exivity/actions/release@main\n  with:\n    mode: release\n    gh-token: ${{ secrets.GH_BOT_TOKEN }}\n```\n\n## Inputs\n\n| name                      | required | default                        | description                                                  |\n| ------------------------- | -------- | ------------------------------ | ------------------------------------------------------------ |\n| `mode`                    |          | `\"ping\"`                       | One of `\"ping\"`, `\"prepare\"` or `\"release\"`                  |\n| `lockfile`                |          | `\"exivity.lock\"`               | Location of lockfile (json)                                  |\n| `changelog`               |          | `\"CHANGELOG.md\"`               | Location of changelog (markdown)                             |\n| `pr-template`             |          | `\"NEW_RELEASE_PR_TEMPLATE.md\"` | Location of new release PR template (markdown)               |\n| `upcoming-release-branch` |          | `\"chore/upcoming-release\"`     | Upcoming release branch name                                 |\n| `release-branch`          |          | `\"main\"`                       | Release branch name                                          |\n| `dry-run`                 |          | `false`                        | If `true`, running this action will have no side-effects     |\n| `gh-token`                |          | `github.token`                 | A GitHub token with write access to all exivity repositories |\n| `jira-username`           | Maybe    |                                | The Jira username (required in prepare and release mode)     |\n| `jira-token`              | Maybe    |                                | The Jira token (required in prepare and release mode)        |\n\nThe `NEW_RELEASE_PR_TEMPLATE.md` file will be used when opening a new pull\nrequest in the prepare step.\n\n# `put-artefacts`\n\nUploads artefacts in the provided directory. It will use the S3 _exivity_ bucket\nin the _eu-central-1_ region. Artefacts are uploaded to the\n_build/{component}/{sha}[/{platform}][/{prefix}]_ prefix.\n\n## Example\n\n```yaml\n- uses: exivity/actions/put-artefacts@main\n  with:\n    path: artefacts\n    aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}\n    aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}\n```\n\n## Inputs\n\n| name                    | required | default   | description                                                                                    |\n| ----------------------- | -------- | --------- | ---------------------------------------------------------------------------------------------- |\n| `use-platform-prefix`   |          | `false`   | If `true`, uses `windows` or `linux` prefix depending on current os.                           |\n| `prefix`                |          |           | If specified, upload artefacts with this prefix (appended after platform prefix if specified). |\n| `path`                  |          | `\"build\"` | Upload artefacts from this path.                                                               |\n| `zip`                   |          | `false`   | Zip artefact files before uploading as `{component_name}.tar.gz`                               |\n| `aws-access-key-id`     | ✅       |           | The AWS access key ID                                                                          |\n| `aws-secret-access-key` | ✅       |           | The AWS secret access key                                                                      |\n\n---\n\n# Development guide\n\nWhen committing code to this repository, make sure to have Node \u0026 Yarn installed\nsince code needs to be compiled in a pre-commit hook.\n\nTo make this easier, use the\n[devcontainer](https://code.visualstudio.com/docs/remote/containers)\nconfiguration included with this repo.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexivity%2Factions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexivity%2Factions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexivity%2Factions/lists"}