{"id":18565019,"url":"https://github.com/greenbone/workflows","last_synced_at":"2025-10-13T01:51:14.508Z","repository":{"id":163498856,"uuid":"638977342","full_name":"greenbone/workflows","owner":"greenbone","description":"Generic reusable GitHub Actions Workflows","archived":false,"fork":false,"pushed_at":"2024-10-25T05:48:45.000Z","size":194,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-10-25T05:50:53.980Z","etag":null,"topics":["actions","automation","base","devops"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/greenbone.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":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-10T13:54:24.000Z","updated_at":"2024-10-25T05:48:48.000Z","dependencies_parsed_at":"2024-01-08T09:27:56.788Z","dependency_job_id":"c57d5f4b-c418-4cc8-b951-db0840af16a2","html_url":"https://github.com/greenbone/workflows","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greenbone%2Fworkflows","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greenbone%2Fworkflows/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greenbone%2Fworkflows/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greenbone%2Fworkflows/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/greenbone","download_url":"https://codeload.github.com/greenbone/workflows/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239293948,"owners_count":19615043,"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","automation","base","devops"],"created_at":"2024-11-06T22:17:25.846Z","updated_at":"2025-10-13T01:51:14.488Z","avatar_url":"https://github.com/greenbone.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"![Greenbone Logo](https://www.greenbone.net/wp-content/uploads/gb_new-logo_horizontal_rgb_small.png)\n\n# Greenbone GitHub Actions Workflows \u003c!-- omit in toc --\u003e\n\nRepository that contains a collection of reusable GitHub Actions workflows for\nGreenbone projects\n\n- [Workflows](#workflows)\n  - [Conventional Commits](#conventional-commits)\n  - [Check Versioning](#check-versioning)\n  - [Lint Python](#lint-python)\n  - [Test Python](#test-python)\n  - [Typing Python](#typing-python)\n  - [CI Python](#ci-python)\n  - [Deploy on PyPI](#deploy-on-pypi)\n  - [Codecov Python](#codecov-python)\n  - [Release Python](#release-python)\n  - [Release 3rd Gen](#release-3rd-gen)\n  - [Release Cloud](#release-cloud)\n  - [Helm Build/Push](#helm-buildpush)\n  - [Deploy docs on GitHub Pages](#deploy-docs-on-github-pages)\n  - [Deploy docs with HTML artifacts (GitHub Pages)](#deploy-docs-with-html-artifacts-github-pages)\n  - [Build and push container images to ghcr.io or docker.io](#build-and-push-container-images-to-ghcr-io-or-docker-io)\n- [Support](#support)\n- [Maintainer](#maintainer)\n- [License](#license)\n\n## Workflows\n\n### Conventional Commits\n\nA workflow for reporting the usage of conventional commits in a GitHub Pull\nRequest.\n\n```yaml\nname: Conventional Commits\n\non:\n  pull_request:\n\npermissions:\n  pull-requests: write\n  contents: read\n\njobs:\n  conventional-commits:\n    name: Conventional Commits\n    uses: greenbone/workflows/.github/workflows/conventional-commits.yml@main\n```\n\nInputs:\n\n| Name | Description | |\n|------|-------------|-|\n| ignore-actors | A comma separated list of users to ignore PRs from | Optional |\n\n### Check Versioning\n\nA workflow to check for consistent versioning in a project.\n\n```yml\nname: Check versioning\n\non:\n  push:\n    branches:\n      - main\n  pull_request:\n\njobs:\n  versioning:\n    uses: greenbone/workflows/.github/workflows/check-version.yml@main\n```\n\n| Name | Description | |\n|------|-------------|-|\n| python-version | Python version to use | Optional (default: `\"3.10\"`) |\n\n### Lint Python\n\nA workflow to lint Python project via pylint.\n\n```yml\nname: Lint Python project\n\non:\n  push:\n    branches:\n      - main\n  pull_request:\n\njobs:\n  linting:\n    uses: greenbone/workflows/.github/workflows/lint-python.yml@main\n```\n\n| Name | Description | |\n|------|-------------|-|\n| python-version | Python version to use | Optional (default: `\"3.10\"`) |\n| lint-packages | Names of the Python packages to be linted | |\n| linter | Linter to use | Optional (default: `\"pylint\"`) |\n\n### Test Python\n\nA workflow to run tests of a Python project.\n\n```yml\nname: Test Python project\n\non:\n  push:\n    branches:\n      - main\n  pull_request:\n\njobs:\n  linting:\n    uses: greenbone/workflows/.github/workflows/test-python.yml@main\n```\n\n| Name | Description | |\n|------|-------------|-|\n| python-version | Python version to use | Optional (default: `\"3.10\"`) |\n| test-command | Command to run the unit tests | Optional (default: `\"python -m unittest -v\"`) |\n\n### Typing Python\n\nA workflow to check the type hints of a Python project via mypy.\n\n```yml\nname: Check type hints\n\non:\n  push:\n    branches:\n      - main\n  pull_request:\n\njobs:\n  linting:\n    uses: greenbone/workflows/.github/workflows/typing-python.yml@main\n```\n\n| Name | Description | |\n|------|-------------|-|\n| python-version | Python version to use | Optional (default: `\"3.10\"`) |\n| mypy-arguments | Additional arguments for mypy | Optional |\n\n### CI Python\n\nA workflow to lint, test and type check Python projects.\n\n```yaml\nname: Check Python project\n\non:\n  push:\n    branches:\n      - main\n  pull_request:\n\njobs:\n  lint-and-test:\n    strategy:\n      matrix:\n        python-version:\n            - \"3.9\"\n            - \"3.10\"\n            - \"3.11\"\n\n    name: Lint and test\n    uses: greenbone/workflows/.github/workflows/ci-python.yml@main\n    with:\n      lint-packages: my-python-package\n      python-version: ${{ matrix.python-version }}\n```\n\nInputs:\n\n| Name | Description | |\n|------|-------------|-|\n| python-version | Python version to use | Optional (default: `\"3.10\"`) |\n| lint-packages | Names of the Python packages to be linted | |\n| mypy-arguments | Additional arguments for mypy | Optional |\n| test-command | Command to run the unit tests | Optional (default: `\"python -m unittest -v\"`) |\n| linter | Linter to use | Optional (default: `\"pylint\"`) |\n\n### Deploy on PyPI\n\nA workflow to deploy a Python package on [PyPI](https://www.pypi.org). It\nrequires a `pypi` [GitHub Environment](https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment).\n\nExample using `secrets.PYPI_TOKEN`:\n\n```yml\nname: Deploy on PyPI\n\non:\n  release:\n    types: [created]\n\njobs:\n  deploy:\n    uses: greenbone/workflows/.github/workflows/deploy-pypi.yml@main\n    secrets: inherit\n```\n\nExample using [trusted publisher](https://docs.pypi.org/trusted-publishers/):\n\n```yml\nname: Deploy on PyPI\n\non:\n  release:\n    types: [created]\n\njobs:\n  deploy:\n    permissions:\n      id-token: write\n    uses: greenbone/workflows/.github/workflows/deploy-pypi.yml@main\n```\n\nSecrets:\n\n| Name       | Description                                          |          |\n| ---------- | ---------------------------------------------------- | -------- |\n| PYPI_TOKEN | Token with permissions to upload the package to PyPI | Optional |\n| pypi-url   | URL to the project on PyPI.org                       | Optional |\n\n### Codecov Python\n\nCalculate coverage and upload it to to [codecov.io](https://codecov.io).\n\n```yml\nname: Code Coverage\n\non:\n  push:\n    branches:\n      - main\n  pull_request:\n\njobs:\n  codecov:\n    name: Upload coverage to codecov.io\n    uses: greenbone/workflows/.github/workflows/codecov-python.yml@main\n    secrets: inherit\n```\n\nSecrets:\n\n| Name | Description | |\n|------|-------------|-|\n| CODECOV_TOKEN | Token for uploading coverage reports to codecov.io | Optional |\n\nInputs:\n\n| Name | Description | |\n|------|-------------|-|\n| python-version | Python version to use | Optional (default: `\"3.10\"`) |\n\n### Release Python\n\nA workflow to create GitHub releases for Python projects.\n\n```yml\nname: Release Python package\n\non:\n  pull_request:\n    types: [closed]\n  workflow_dispatch:\n\njobs:\n  release:\n    name: Create a new CalVer release\n    uses: greenbone/workflows/.github/workflows/release-python.yml@main\n    secrets: inherit\n```\n\nSecrets:\n\n| Name | Description | |\n|------|-------------|-|\n| GREENBONE_BOT | Username of the Greenbone Bot Account | Required |\n| GREENBONE_BOT_TOKEN | Token for creating a GitHub release | Required |\n| GREENBONE_BOT_MAIL | Email Address of the Greenbone Bot Account for git commits | Required |\n| GPG_KEY | GPG key to sign the release files | Optional |\n| GPG_FINGERPRINT | Fingerprint of the GPG key | Required if `GPG_KEY` is set |\n| GPG_PASSPHRASE | Passphrase for the GPG key | Required if `GPG_KEY` is set |\n\nInputs:\n\n| Name | Description | |\n|------|-------------|-|\n| release-type | Type of the release | Optional (default: `\"calendar\"`) |\n\n### Release 3rd Gen\n\n```yml\nname: Release\n\non:\n  pull_request:\n    types: [closed]\n  workflow_dispatch:\n    inputs:\n      release-type:\n        type: choice\n        description: What kind of release do you want to do (pontos --release-type argument)?\n        options:\n          - alpha\n          - patch\n          - minor\n          - major\n          - release-candidate\n      release-version:\n        type: string\n        description: Set an explicit version, that will overwrite release-type. Fails if version is not compliant.\n\njobs:\n  build-and-release:\n    name: Create a new release\n    uses: greenbone/workflows/.github/workflows/release-3rd-gen.yml@main\n    with:\n      release-type: ${{ inputs.release-type }}\n      release-version: ${{ inputs.release-version }}\n    secrets: inherit\n```\n\nSecrets:\n\n| Name | Description | |\n|------|-------------|-|\n| GREENBONE_BOT | Username of the Greenbone Bot Account | Required |\n| GREENBONE_BOT_TOKEN | Token for creating a GitHub release | Required |\n| GREENBONE_BOT_MAIL | Email Address of the Greenbone Bot Account for git commits | Required |\n| GPG_KEY | GPG key to sign the release files | Optional |\n| GPG_FINGERPRINT | Fingerprint of the GPG key | Required if `GPG_KEY` is set |\n| GPG_PASSPHRASE | Passphrase for the GPG key | Required if `GPG_KEY` is set |\n\nInputs:\n\n| Name | Description | |\n|------|-------------|-|\n| release-type | Type of the release | Required if called manually (as `workflow_dispatch`) |\n| release-version | An explicit release version. If not set the release version will be determined from the current tag and the release type | Optional |\n\n### Release Cloud\n\n```yml\nname: Release\n\non:\n  pull_request:\n    types: [closed]\n  workflow_dispatch:\n    inputs:\n      release-type:\n        type: choice\n        description: What kind of release do you want to do (pontos --release-type argument)?\n        options:\n          - alpha\n          - patch\n          - minor\n          - major\n          - release-candidate\n      release-version:\n        type: string\n        description: Set an explicit version, that will overwrite release-type. Fails if version is not compliant.\n\njobs:\n  build-and-release:\n    name: Create a new release\n    uses: greenbone/workflows/.github/workflows/release-3rd-gen.yml@main\n    with:\n      release-type: ${{ inputs.release-type }}\n      release-version: ${{ inputs.release-version }}\n    secrets: inherit\n```\n\nSecrets:\n\n| Name | Description | |\n|------|-------------|-|\n| GREENBONE_BOT | Username of the Greenbone Bot Account | Required |\n| GREENBONE_BOT_TOKEN | Token for creating a GitHub release | Required |\n| GREENBONE_BOT_MAIL | Email Address of the Greenbone Bot Account for git commits | Required |\n| GPG_KEY | GPG key to sign the release files | Optional |\n| GPG_FINGERPRINT | Fingerprint of the GPG key | Required if `GPG_KEY` is set |\n| GPG_PASSPHRASE | Passphrase for the GPG key | Required if `GPG_KEY` is set |\n\nInputs:\n\n| Name | Description | |\n|------|-------------|-|\n| release-type | Type of the release | Required if called manually (as `workflow_dispatch`) |\n| release-version | An explicit release version. If not set the release version will be determined from the current tag and the release type | Optional |\n| versioning-scheme | Versioning scheme to use. | Optional (default: `\"semver\"`) |\n\n### Deploy docs on GitHub Pages\n\nA workflow to generate a Python documentation and deploy it on GitHub Pages.\n\n```yml\nname: Deploy docs to GitHub Pages\n\non:\n  # Runs on pushes targeting the default branch\n  push:\n    branches:\n      - main\n\n  # Allows to run this workflow manually from the Actions tab\n  workflow_dispatch:\n\n# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages\npermissions:\n  contents: read\n  pages: write\n  id-token: write\n\n# Allow one concurrent deployment\nconcurrency:\n  group: \"docs\"\n  cancel-in-progress: true\n\njobs:\n  deploy:\n    uses: greenbone/workflows/.github/workflows/docs-python.yml@main\n```\n\nInputs:\n\n| Name | Description | |\n|------|-------------|-|\n| python-version | Python version to use | Optional (default: `\"3.10\"`) |\n| source | Directory containing the sources for the documentation | Optional (default: `\"docs\"`) |\n| build | Directory containing the build of the documentation | Optional (default: `\"docs/build/html\"`) |\n| environment-name | Name of the deployment environment | Optional (default: `\"github-pages\"`) |\n\n### Deploy docs with HTML artifacts (GitHub Pages)\n\nA workflow publishes preview to GitHub Pages from **HTML build artifacts** with name prefixed \"html-\"(eg: 'html-en/', 'html-de'). \nThis workflow uses a helper script (`gh-pages-helper.sh`) to generate main index.html that leads viewers to the pages of the individual artifact that gets deployed.\n\n```yml\nname: Deploy docs with HTML artifacts (GitHub Pages)\n\non:\n  workflow_call:\n\n# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages\npermissions:\n  contents: read\n  pages: write\n  id-token: write\n\njobs:\n  gh-pages-deploy:      # downloads HTML build artifact, extracts, generates a root index.html, and deploys to github pages for preview.\n```\n\n**Note**:\nTo use this workflow you need:\n- One or more html documentation artifact named html-*.\n- The artifacts must contain a tar.xz file, which again must contain a directory with the html files.\n\n### Build and push 3rd gen container images and related helm chart\n\nA workflow to build and push 3rd gen container images and the related helm chart.\nIn order to have a reasonable container digest transfer to the helm chart release \nwe have to build the container and helm charts in the same workflow.\n\n```yml\nname: Build Container Image Builds\n\non:\n  workflow_dispatch:\n\npermissions:\n  contents: read\n  packages: write\n  id-token: write\n  pull-requests: write\n\njobs:\n  building:\n    name: Build Container Image\n    uses: greenbone/workflows/.github/workflows/helm-container-build-push-3rd-gen.yml@main\n    with:\n      image-url: ${{ vars.IMAGE_REGISTRY }}/${{ github.repository }}\n      helm-chart: ${{ github.repository }}\n      image-labels: |\n        org.opencontainers.image.vendor=Greenbone\n        org.opencontainers.image.base.name=alpine/latest\n    secrets: inherit\n```\n\nInputs:\n\n| Name                      | Description                                                                                      |          |\n|---------------------------|--------------------------------------------------------------------------------------------------|----------|\n| build-context             | Path to image build context. Default is \".\"                                                      | Optional |\n| build-docker-file         | Path to the docker file. Default is \"./Dockerfile\"                                               | Optional |\n| build-args                | Use these build-args for the docker build process. Default is empty                              | Optional |\n| build-secrets             | Use these build-secrets for the docker build process. Default is empty                           | Optional |\n| build-secret-greenbonebot | Set the GREENBONE_BOT_PACKAGES_READ_TOKEN as image build secret. Default is false                | Optional |\n| helm-chart                | The name of the helm chart to update. If not set, no chart update will be done. Default is empty | Optional |\n| init-container            | Update the tag from an init container. Set the parent key from the values.yaml. Default is empty | Optional |\n| init-container-digest     | The init container digest for the helm chart tag. Default is empty                               | Optional |\n| image-labels              | Image labels.                                                                                    | Required |\n| image-url                 | Image url/name without registry. Default is github.repository                                    | Optional |\n| image-platforms           | Image platforms to build for. Default is \"linux/amd64\"                                           | Optional |\n| use-greenbonebot          | Use the greenbonebot token as registry login. Default is false                                   | Optional |\n| notify                    | Enable mattermost notify. Default is true                                                        | Optional |\n| scout                     | Enable docker scout sbom. Default is false                                                       | Optional |\n\nOutputs:\n\n| Name   | Description           |\n|--------|-----------------------|\n| digest | The container digest. |\n\n### Generate an SBOM with trivy and push a cosigned artifact\n\nA workflow to generate an SBOM with trivy.\nThis also cosigns and pushes it to a specified url.\nThe workflow is run on t555555+60ag pushes (releases)\nCurrently only the image scanning is implemented.\n\n```yml\nname: GenerateSBOM with trivy and push artifact \n\non:\n  push:\n    branches: [ main ]\n    tags: [\"v*\"]\n\njobs:\n  generate-and-push-sbom-trivy:\n    # generate and push SBOM only on tag pushes (releases)\n    if: startsWith(github.ref, 'refs/tags/')\n    runs-on:\n      - self-hosted-generic-vm-amd64\n    needs: building\n    steps:\n      - name: Generate and Push SBOM\n        uses: greenbone/workflows/.github/workflows/helm-container-build-push-3rd-gen.yml@main\n        with:\n          image-url: \"${{ vars.IMAGE_REGISTRY}}/${{ github.repository}}:${{ github.ref_name }}\"\n          artifact-url: \"${{ vars.GREENBONE_REGISTRY }}/opensight-management-console-dev/management-console-backend-sbom:${{ github.ref_name }}\"\n```\n\nInputs:\n\n| Name                                | Description                                                                                                                                                      |          |\n|-------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------|\n| image-url                           | Image url/name without registry. Default is github.repository                                                                                                    | Required |\n| artifact-url                        | Where the generated SBOM should be pushed after it is cosigned, with artifact name and registry.                                                                 | Required |\n| sbom-format                         | Format of the SBOM. Default is `cyclonedx`. Options are (trivy): `table`, `json`, `template`, `sarif`, `cyclonedx`, `spdx`, `spdx-json,` `github`, `cosign-vuln` | Optional |\n| output-file-name                    | Tells trivy to save the output into a file. Needs to be done so that the cosign action can sign and upload it. Default is `sbom-file.json`                       | Optional |\n| image-registry-username-secret-name | The name of the registry username secret in which the image is found. This is used by trivy to login into the registry. Default is `GREENBONE_BOT_USERNAME`      | Optional |\n| image-registry-password-secret-name | The name of the registry password secret in which the image is found. This is used by trivy to login into the registry. Default is `GREENBONE_BOT_TOKEN`         | Optional |\n| registry                            | Registry to which the SBOM should be pushed. If not set, it will be evaluated to `GREENBONE_REGISTRY`                                                            | Optional |\n| registry-username-secret-name       | The name of the registry username secret to which the artifact should be pushed. Default is `GREENBONE_REGISTRY_USER`                                            | Optional |\n| registry-password-secret-name       | The name of the registry password secret to which the artifact should be pushed. Default is `GREENBONE_REGISTRY_TOKEN`                                           | Optional |\n| cosign-key-secret-name              | The name of the cosign key secret. Default is `COSIGN_KEY_OPENSIGHT`                                                                                             | Optional |\n| cosign-key-password-secret-name     | The name of the cosign key password secret. Default is `COSIGN_KEY_PASSWORD_OPENSIGHT`                                                                           | Optional |\n\n### Notify Mattermost Feed Deployment\n\nReusable workflow designed for the feed delivery pipeline.\n\n```yml\nname: Notify Mattermost Feed Deployment\n\non:\n  workflow_dispatch:\n\npermissions:\n  contents: read\n  packages: write\n  id-token: write\n\njobs:\n  building:\n    name: Build Container Image\n    uses: greenbone/workflows/.github/workflows/helm-container-build-push-3rd-gen.yml@main\n    ...\n\n  building2:\n    name: Build Container Image\n    uses: greenbone/workflows/.github/workflows/helm-container-build-push-3rd-gen.yml@main\n    ...\n\n  notify:\n    needs:\n      - building\n      - building2\n    # ignore cancelled workflows\n    if: ${{ !cancelled() }}\n    uses: greenbone/workflows/.github/workflows/notify-mattermost-feed-deployment.yml@main\n    with:\n      # We need to check several jobs for an failure status\n      status: ${{ contains(needs.*.result, 'failure') \u0026\u0026 'failure' || 'success' }}\n    secrets: inherit\n```\n\nInputs:\n\n| Name | Description | |\n|------|-------------|-|\n| commit | The commit used by the github checkout action. Default: github.sha | Optional |\n| exit-with-status | Exit this job/workflow with the monitored job status. Options: true or false. Default: true | Optional |\n| highlight | Mattermost highlight. Default: devops | Optional |\n| status | The monitored job, job status. | Required |\n\n### Notify Mattermost 3rd Gen deployment\n\nReusable workflow designed for the 3rd gen deployment pipeline.\n\n```yml\nname: Notify Mattermost 3rd gen\n\non:\n  workflow_dispatch:\n\npermissions:\n  contents: read\n  packages: write\n  id-token: write\n\njobs:\n  building:\n    name: Build Container Image\n    uses: greenbone/workflows/.github/workflows/helm-container-build-push-3rd-gen.yml@main\n    ...\n\n  building2:\n    name: Build Container Image\n    uses: greenbone/workflows/.github/workflows/helm-container-build-push-3rd-gen.yml@main\n    ...\n\n  notify:\n    needs:\n      - building\n      - building2\n    # ignore cancelled workflows\n    if: ${{ !cancelled() }}\n    uses: greenbone/workflows/.github/workflows/notify-mattermost-3rd-gen@main\n    with:\n      # We need to check several jobs for an failure status\n      status: ${{ contains(needs.*.result, 'failure') \u0026\u0026 'failure' || 'success' }}\n    secrets: inherit\n```\n\nInputs:\n\n| Name | Description | |\n|------|-------------|-|\n| commit | The commit used by the github checkout action. Default: github.sha | Optional |\n| exit-with-status | Exit this job/workflow with the monitored job status. Options: true or false. Default: true | Optional |\n| highlight | Mattermost highlight. Default: channel | Optional |\n| status | The monitored job, job status. | Required |\n\n### Notify Mattermost QM\n\nReusable workflow designed for QM.\n\n```yml\nname: Notify Mattermost QM\n\non:\n  workflow_dispatch\n\njobs:\n  building:\n    ...\n  building2:\n    ...\n  notify:\n    needs:\n      - building\n      - building2\n    # ignore cancelled workflows\n    if: ${{ !cancelled() }}\n    uses: greenbone/workflows/.github/workflows/notify-mattermost-qm@main\n    with:\n      # We need to check several jobs for an failure status\n      status: ${{ contains(needs.*.result, 'failure') \u0026\u0026 'failure' || 'success' }}\n    secrets: inherit\n```\n\nInputs:\n\n| Name | Description | |\n|------|-------------|-|\n| commit | The commit used by the github checkout action. Default: github.sha | Optional |\n| exit-with-status | Exit this job/workflow with the monitored job status. Options: true or false. Default: true | Optional |\n| highlight | Mattermost highlight. Default: channel | Optional |\n| status | The monitored job, job status. | Required |\n\n## Support\nFor any question on the usage of the workflows please use the\n[Greenbone Community Forum](https://forum.greenbone.net/). If you\nfound a problem with the software, please\n[create an issue](https://github.com/greenbone/workflows/issues)\non GitHub.\n\n## Maintainer\n\nThis project is maintained by [Greenbone AG](https://www.greenbone.net/).\n\n## License\n\nCopyright (C) 2023 [Greenbone AG](https://www.greenbone.net/)\n\nLicensed under the [GNU General Public License v3.0 or later](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgreenbone%2Fworkflows","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgreenbone%2Fworkflows","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgreenbone%2Fworkflows/lists"}