{"id":23398814,"url":"https://github.com/mbround18/gh-reusable","last_synced_at":"2026-04-30T09:37:55.190Z","repository":{"id":219664609,"uuid":"749588966","full_name":"mbround18/gh-reusable","owner":"mbround18","description":"A collection of reusable GitHub Actions and Workflows designed to streamline your CI/CD pipelines and automate common tasks. Easily integrate these actions and workflows into your projects to enhance efficiency and maintain consistency across your repositories.","archived":false,"fork":false,"pushed_at":"2026-04-29T10:33:03.000Z","size":375,"stargazers_count":1,"open_issues_count":15,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-29T12:24:40.702Z","etag":null,"topics":["actions","cicd","pipeline"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mbround18.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["mbround18"],"patreon":"mbround18","open_collective":null,"ko_fi":"mbround18","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":["https://paypal.me/MichaelBruno"]}},"created_at":"2024-01-29T01:28:30.000Z","updated_at":"2026-04-26T07:30:17.000Z","dependencies_parsed_at":"2025-03-10T05:19:05.173Z","dependency_job_id":"dd4205e2-8923-4df7-a7b8-158d941df762","html_url":"https://github.com/mbround18/gh-reusable","commit_stats":null,"previous_names":["mbround18/gh-reusable"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/mbround18/gh-reusable","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbround18%2Fgh-reusable","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbround18%2Fgh-reusable/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbround18%2Fgh-reusable/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbround18%2Fgh-reusable/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mbround18","download_url":"https://codeload.github.com/mbround18/gh-reusable/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbround18%2Fgh-reusable/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32460781,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T22:27:22.272Z","status":"online","status_checked_at":"2026-04-30T02:00:05.929Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["actions","cicd","pipeline"],"created_at":"2024-12-22T09:49:32.954Z","updated_at":"2026-04-30T09:37:55.171Z","avatar_url":"https://github.com/mbround18.png","language":"Python","funding_links":["https://github.com/sponsors/mbround18","https://patreon.com/mbround18","https://ko-fi.com/mbround18","https://paypal.me/MichaelBruno"],"categories":[],"sub_categories":[],"readme":"# GH Reusable Actions and Workflows\n\nWelcome to the **GH Reusable** repository! This repository contains a collection of reusable GitHub Actions and Workflows designed to streamline your CI/CD pipelines and automate common tasks in your projects.\n\n## Overview\n\n- **Reusable Actions**: Located in `actions/\u003caction-name\u003e`. Each action is self-contained and comes with its own `README.md` detailing its purpose and usage.\n- **Reusable Workflows**: Located in `.github/workflows/\u003cworkflow-name\u003e`. These are predefined workflows that can be included in your repositories.\n\n\u003e **Note**: Any workflow prefixed with `test-` is intended for internal testing purposes and should **not** be used outside this repository.\n\n## Getting Started\n\n### Using Reusable Actions\n\nTo use any of the actions provided:\n\n1. **Review the Action**: Navigate to `actions/\u003caction-name\u003e/README.md` to understand the action's functionality and required inputs.\n2. **Reference the Action**: In your workflow file, use the `uses` keyword to include the action:\n\n   ```yaml\n   steps:\n     - name: Use Reusable Action\n       uses: mbround18/gh-reusable/actions/\u003caction-name\u003e@v0.0.5\n       with:\n         # action inputs\n   ```\n\n   Replace `\u003caction-name\u003e` with the name of the action and `v0.0.5` with the tag or commit SHA you wish to use.\n\n### Using Reusable Workflows\n\nTo include a reusable workflow:\n\n1. **Reference the Workflow**: In your workflow file, use the `uses` keyword under `jobs`:\n\n   ```yaml\n   jobs:\n     my_job:\n       uses: mbround18/gh-reusable/.github/workflows/\u003cworkflow-name\u003e.yaml@v0.0.5\n       with:\n         # workflow inputs\n   ```\n\n   Replace `\u003cworkflow-name\u003e` with the workflow's filename (excluding any `test-` prefixed workflows) and `v0.0.5` with the desired tag or commit SHA.\n\n\u003c!-- GENERATED:GITHUB-CATALOG:START --\u003e\n\u003ch3\u003eReusable Workflows\u003c/h3\u003e\n\u003ctable\u003e\n    \u003ctr\u003e\n        \u003cth\u003eName\u003c/th\u003e\n        \u003cth\u003eDescription\u003c/th\u003e\n        \u003cth\u003eWorkflow Name\u003c/th\u003e\n        \u003cth\u003eUsage\u003c/th\u003e\n    \u003c/tr\u003e\n            \u003ctr\u003e\n            \u003ctd\u003eRust Build and Test\u003c/td\u003e\n            \u003ctd\u003e\n                \u003cdetails\u003e\n                    \u003csummary\u003eClick to see example.\u003c/summary\u003e\n                \u003cpre\u003e\n\u003ccode\u003e\njobs:\n  example:\n    uses: mbround18/gh-reusable/.github/workflows/rust-build-n-test.yml@v0.0.1\n    with:\n      components: \u0026#34;clippy rustfmt\u0026#34; # Optional, Comma-separated list of Rust components to install (e.g., rustfmt, clippy).\n      target: \u0026#34;\u0026#34;                   # Optional, Comma-separated list of additional Rust compilation targets.\n      toolchain: \u0026#34;stable\u0026#34;          # Optional, Rust toolchain to use (e.g., stable, nightly, beta).\n    \u003c/code\u003e\n                \u003c/pre\u003e\n                \u003c/details\u003e\n            \u003c/td\u003e\n        \u003c/tr\u003e\n            \u003ctr\u003e\n            \u003ctd\u003eDocker Release Workflow\u003c/td\u003e\n            \u003ctd\u003e\n                \u003cdetails\u003e\n                    \u003csummary\u003eClick to see example.\u003c/summary\u003e\n                \u003cpre\u003e\n\u003ccode\u003e\njobs:\n  example:\n    uses: mbround18/gh-reusable/.github/workflows/docker-release.yaml@v0.0.1\n    with:\n      image: \u0026#34;mbround18/example\u0026#34;      # Required, Image Name\n      canary_label: \u0026#34;canary\u0026#34;          # Optional, \n      compose: \u0026#34;false\u0026#34;                # Optional, Want us to pull information from a docker-compose file?\n      context: \u0026#34;.\u0026#34;                    # Optional, Build context\n      dockerfile: \u0026#34;./Dockerfile\u0026#34;      # Optional, Dockerfile\n      dockerhub_username: \u0026#34;mbround18\u0026#34; # Optional, Who to log into dockerhub as.\n      ghcr: \u0026#34;false\u0026#34;                   # Optional, Release to GHCR?\n      ghcr_username: \u0026#34;mbround18\u0026#34;      # Optional, Who to log into ghcr as.zs\n      semver_prefix: \u0026#34;\u0026#34;               # Optional, Prefixer for semver, use this if you publish multiple artifacts like example-0.0.0\n      working-directory: \u0026#34;.\u0026#34;          # Optional, Working directory for the action\n    \u003c/code\u003e\n                \u003c/pre\u003e\n                \u003c/details\u003e\n            \u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/table\u003e\n\n\u003ch3\u003eReusable Actions\u003c/h3\u003e\n\u003ctable\u003e\n    \u003ctr\u003e\n        \u003cth\u003eName\u003c/th\u003e\n        \u003cth\u003eDescription\u003c/th\u003e\n        \u003cth\u003eUsage\u003c/th\u003e\n    \u003c/tr\u003e\n            \u003ctr\u003e\n            \u003ctd\u003esetup-rust\u003c/td\u003e\n            \u003ctd\u003eSets up Rust toolchains, components, and additional CLI tools as needed.\u003c/td\u003e\n            \u003ctd class=\"highlight highlight-source-yaml\"\u003e\n                \u003cdetails\u003e\n                    \u003csummary\u003eClick here to see usage example.\u003c/summary\u003e\n                    \u003cpre\u003e\n\u003ccode\u003e\nsteps:\n  - name: Use setup-rust action\n    uses: mbround18/gh-reusable/actions/setup-rust\n    with:\n      crates: \u0026#34;\u0026#34;          # Required, Comma-separated list of CLI crates to install (e.g., trunk, wasm-bindgen).\n      components: \u0026#34;\u0026#34;      # Optional, Comma-separated list of Rust components to install (e.g., rustfmt, clippy).\n      target: \u0026#34;\u0026#34;          # Optional, Comma-separated list of additional Rust compilation targets.\n      toolchain: \u0026#34;stable\u0026#34; # Optional, Rust toolchain to use (e.g., stable, nightly, beta).\n    \u003c/code\u003e\n                    \u003c/pre\u003e\n                \u003c/details\u003e\n            \u003c/td\u003e\n        \u003c/tr\u003e\n            \u003ctr\u003e\n            \u003ctd\u003esemver\u003c/td\u003e\n            \u003ctd\u003eIncrements the base or last tag by the increment or version, supports custom prefixes like chart-name-1.2.3.\u003c/td\u003e\n            \u003ctd class=\"highlight highlight-source-yaml\"\u003e\n                \u003cdetails\u003e\n                    \u003csummary\u003eClick here to see usage example.\u003c/summary\u003e\n                    \u003cpre\u003e\n\u003ccode\u003e\nsteps:\n  - name: Use semver action\n    uses: mbround18/gh-reusable/actions/semver\n    with:\n      base: \u0026#34;\u0026#34;                     # Optional, Base version to start from. If not provided, the last matching tag will be used.\n      increment: \u0026#34;patch\u0026#34;           # Optional, Increment value (major, minor, patch). If not provided, will infer from PR or commit labels.\n      major-label: \u0026#34;major\u0026#34;         # Optional, Label to identify a major increment (default: \u0026#39;major\u0026#39;).\n      minor-label: \u0026#34;minor\u0026#34;         # Optional, Label to identify a minor increment (default: \u0026#39;minor\u0026#39;).\n      patch-label: \u0026#34;patch\u0026#34;         # Optional, Label to identify a patch increment (default: \u0026#39;patch\u0026#39;).\n      prefix: \u0026#34;\u0026#34;                   # Optional, Optional prefix used to filter and build tag versions. Example: \u0026#39;chart-name-\u0026#39; -\u0026gt; chart-name-1.2.3\n      token: \u0026#34;${{ github.token }}\u0026#34; # Optional, GitHub token for authentication with GraphQL API.\n    \u003c/code\u003e\n                    \u003c/pre\u003e\n                \u003c/details\u003e\n            \u003c/td\u003e\n        \u003c/tr\u003e\n            \u003ctr\u003e\n            \u003ctd\u003einstall-cli\u003c/td\u003e\n            \u003ctd\u003eDownload and install a CLI from a GitHub release into GITHUB_ACTION_PATH/bin.\u003c/td\u003e\n            \u003ctd class=\"highlight highlight-source-yaml\"\u003e\n                \u003cdetails\u003e\n                    \u003csummary\u003eClick here to see usage example.\u003c/summary\u003e\n                    \u003cpre\u003e\n\u003ccode\u003e\nsteps:\n  - name: Use install-cli action\n    uses: mbround18/gh-reusable/actions/install-cli\n    with:\n      asset: \u0026#34;\u0026#34;                           # Required, Asset file name pattern with %VERSION% placeholder (e.g., \u0026#39;cli-%VERSION%-linux-amd64.tar.gz\u0026#39;).\n      repository: \u0026#34;\u0026#34;                      # Required, GitHub repository in the format \u0026#39;owner/repo\u0026#39; (e.g., \u0026#39;trunk-rs/trunk\u0026#39;).\n      github-token: \u0026#34;${{ github.token }}\u0026#34; # Optional, GitHub token for API requests.\n      override-name: \u0026#34;\u0026#34;                   # Optional, Optional. Rename the CLI binary to this name.\n      version: \u0026#34;latest\u0026#34;                   # Optional, Version of the release to install (default is latest).\n    \u003c/code\u003e\n                    \u003c/pre\u003e\n                \u003c/details\u003e\n            \u003c/td\u003e\n        \u003c/tr\u003e\n            \u003ctr\u003e\n            \u003ctd\u003egraphql\u003c/td\u003e\n            \u003ctd\u003eExecutes a GraphQL query or mutation using provided inputs\u003c/td\u003e\n            \u003ctd class=\"highlight highlight-source-yaml\"\u003e\n                \u003cdetails\u003e\n                    \u003csummary\u003eClick here to see usage example.\u003c/summary\u003e\n                    \u003cpre\u003e\n\u003ccode\u003e\nsteps:\n  - name: Use graphql action\n    uses: mbround18/gh-reusable/actions/graphql\n    with:\n      query: \u0026#34;\u0026#34;                             # Required, Inline GraphQL query/mutation or a path to a file containing the query\n      token: \u0026#34;\u0026#34;                             # Required, GitHub token for authenticating the API call\n      args: \u0026#34;\u0026#34;                              # Optional, Comma or newline separated key=value pairs for query variables\n      url: \u0026#34;https://api.github.com/graphql\u0026#34; # Optional, GraphQL endpoint URL; defaults to GitHub GraphQL API\n    \u003c/code\u003e\n                    \u003c/pre\u003e\n                \u003c/details\u003e\n            \u003c/td\u003e\n        \u003c/tr\u003e\n            \u003ctr\u003e\n            \u003ctd\u003egithub-catalog\u003c/td\u003e\n            \u003ctd\u003eGenerates a GitHub catalog of reusable workflows and actions, and inserts HTML tables into README.md.\u003c/td\u003e\n            \u003ctd class=\"highlight highlight-source-yaml\"\u003e\n                \u003cdetails\u003e\n                    \u003csummary\u003eClick here to see usage example.\u003c/summary\u003e\n                    \u003cpre\u003e\n\u003ccode\u003e\nsteps:\n  - name: Use github-catalog action\n    uses: mbround18/gh-reusable/actions/github-catalog\n    with:\n      token: \u0026#34;${{ github.token }}\u0026#34; # Required, GitHub token with write access to the repository\n    \u003c/code\u003e\n                    \u003c/pre\u003e\n                \u003c/details\u003e\n            \u003c/td\u003e\n        \u003c/tr\u003e\n            \u003ctr\u003e\n            \u003ctd\u003eensure-repository\u003c/td\u003e\n            \u003ctd\u003eEnsures the repository that the action or workflow is running on is a known element.\u003c/td\u003e\n            \u003ctd class=\"highlight highlight-source-yaml\"\u003e\n                \u003cdetails\u003e\n                    \u003csummary\u003eClick here to see usage example.\u003c/summary\u003e\n                    \u003cpre\u003e\n\u003ccode\u003e\nsteps:\n  - name: Use ensure-repository action\n    uses: mbround18/gh-reusable/actions/ensure-repository\n    with:\n      repository: \u0026#34;mbround18/gh-reusable\u0026#34; # Required, Specific repository (eg: mbround18/gh-reusable)\n    \u003c/code\u003e\n                    \u003c/pre\u003e\n                \u003c/details\u003e\n            \u003c/td\u003e\n        \u003c/tr\u003e\n            \u003ctr\u003e\n            \u003ctd\u003edocker-facts\u003c/td\u003e\n            \u003ctd\u003eExtracts dockerfile, context, and build args from docker-compose.yml\u003c/td\u003e\n            \u003ctd class=\"highlight highlight-source-yaml\"\u003e\n                \u003cdetails\u003e\n                    \u003csummary\u003eClick here to see usage example.\u003c/summary\u003e\n                    \u003cpre\u003e\n\u003ccode\u003e\nsteps:\n  - name: Use docker-facts action\n    uses: mbround18/gh-reusable/actions/docker-facts\n    with:\n      image: \u0026#34;\u0026#34;        # Required, Base image name (e.g., mbround18/steamcmd)\n      canary_label: \u0026#34;\u0026#34; # Optional, Label to trigger canary pushes\n      context: \u0026#34;\u0026#34;      # Optional, Default context path if not found in compose\n      dockerfile: \u0026#34;\u0026#34;   # Optional, Default Dockerfile path if not found in compose\n    \u003c/code\u003e\n                    \u003c/pre\u003e\n                \u003c/details\u003e\n            \u003c/td\u003e\n        \u003c/tr\u003e\n            \u003ctr\u003e\n            \u003ctd\u003edocker-build\u003c/td\u003e\n            \u003ctd\u003eBuild Docker images with build arguments, secrets, and multi-platform support\u003c/td\u003e\n            \u003ctd class=\"highlight highlight-source-yaml\"\u003e\n                \u003cdetails\u003e\n                    \u003csummary\u003eClick here to see usage example.\u003c/summary\u003e\n                    \u003cpre\u003e\n\u003ccode\u003e\nsteps:\n  - name: Use docker-build action\n    uses: mbround18/gh-reusable/actions/docker-build\n    with:\n      context: \u0026#34;.\u0026#34;               # Required, Build context directory\n      dockerfile: \u0026#34;./Dockerfile\u0026#34; # Required, Path to the Dockerfile relative to the context\n      image: \u0026#34;mbround18/test\u0026#34;    # Required, Name of the image to be built\n      version: \u0026#34;latest\u0026#34;          # Required, Image tag version\n      canary_label: \u0026#34;\u0026#34;           # Optional, Label to trigger canary pushes\n      platforms: \u0026#34;linux/amd64\u0026#34;   # Optional, Comma separated list of target platforms (e.g., linux/amd64,linux/arm64)\n      push: \u0026#34;false\u0026#34;              # Optional, Whether to push the image\n      registries: \u0026#34;\u0026#34;             # Optional, Comma separated list of registries to re-tag the image with\n    \u003c/code\u003e\n                    \u003c/pre\u003e\n                \u003c/details\u003e\n            \u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/table\u003e\n\n\u003c!-- GENERATED:GITHUB-CATALOG:STOP --\u003e\n\n## Contributing\n\nWe welcome contributions! To contribute:\n\n1. **Fork the Repository**: Click the \"Fork\" button at the top-right corner of this page.\n2. **Create a Branch**: Use a descriptive name for your branch (e.g., `feature/new-action` or `fix/issue-123`).\n3. **Make Changes**: Implement your feature or fix and update/add documentation as needed.\n4. **Submit a Pull Request**: Open a pull request with a clear description of your changes.\n\n## License\n\nThis project is licensed under the [BSD 3-Clause License](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmbround18%2Fgh-reusable","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmbround18%2Fgh-reusable","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmbround18%2Fgh-reusable/lists"}