{"id":37176322,"url":"https://github.com/mattermost/ops-tool","last_synced_at":"2026-01-14T20:34:32.185Z","repository":{"id":38402294,"uuid":"505421565","full_name":"mattermost/ops-tool","owner":"mattermost","description":"An abstract tool for DevOps which streamlines day to day operations.","archived":true,"fork":false,"pushed_at":"2023-05-13T10:20:01.000Z","size":633,"stargazers_count":6,"open_issues_count":7,"forks_count":1,"subscribers_count":21,"default_branch":"main","last_synced_at":"2025-09-15T01:29:00.511Z","etag":null,"topics":["chatops","go","golang","hackaton-summer-2022","hacktoberfest","mattermost"],"latest_commit_sha":null,"homepage":"","language":"Go","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/mattermost.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":"2022-06-20T11:56:31.000Z","updated_at":"2024-05-27T10:43:38.000Z","dependencies_parsed_at":"2024-06-19T19:06:52.717Z","dependency_job_id":"5a04e8c2-8307-4e95-bba3-11ff157f832c","html_url":"https://github.com/mattermost/ops-tool","commit_stats":{"total_commits":40,"total_committers":4,"mean_commits":10.0,"dds":0.525,"last_synced_commit":"b9267aa46cc12ec7510c520895d0fe1cd00f5ad7"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/mattermost/ops-tool","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattermost%2Fops-tool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattermost%2Fops-tool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattermost%2Fops-tool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattermost%2Fops-tool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mattermost","download_url":"https://codeload.github.com/mattermost/ops-tool/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattermost%2Fops-tool/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28434475,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T18:57:19.464Z","status":"ssl_error","status_checked_at":"2026-01-14T18:52:48.501Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["chatops","go","golang","hackaton-summer-2022","hacktoberfest","mattermost"],"created_at":"2026-01-14T20:34:31.295Z","updated_at":"2026-01-14T20:34:32.177Z","avatar_url":"https://github.com/mattermost.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ops-tool\nAn abstract tool for DevOps which streamlines day to day operations. It allow teams to implement custom workflows, dialogs, integrations and bind that pipeline to Mattermost slash commands. See `commands ` folder for sample integrations. For more information check `doc` folder.\n\nIt will allow to integrate many providers and workflows by using configuration files. Ie.\n\n![Ops Tool Providers](doc/assets/readme_providers.png)\n\nFor every provider it is possible to register different commands by only using configuration files.\n\n![GitLab Commnds](doc/assets/readme_gitlab_commands.png)\n\nSee documents how to configure provider and register commands. Sample configuration:\n\n```yaml\n- command: \"version\"\n  name: \"Get GitLab Version\"\n  description: \"Gets gitlab version. `gitlab version check` will do upgrade check!\"\n  exec: \n    - scripts/gitlab/gitlab_version.sh\n  response:\n    type: \"ephemeral\"\n    colors:\n    - color: \"#ff0000\"\n      status: \"upgrade\"\n    - color: \"#00ff00\"\n      status: \"ok\"\n    template: |\n      {{ if eq .Status \"upgrade\" }}\n      [GitLab](https://git.internal.mattermost.com) version is {{ .Data.version }}. Please upgrade to {{ .Data.latest }}.[Change Notes]({{ .Data.change_notes_url }})\n      {{ else }}\n      [GitLab](https://git.internal.mattermost.com) version is {{ .Data.version }}. {{ if .Data.latest }} Upgrade is not needed! {{ end }}\n      {{ end }}  \n\n```\n\nSample command output: `/ops gitlab version check`\n\n![GitLab Version Check](doc/assets/readme_gitlab_version_check.png)\n\n## Architecture Example\n\nIn the following example, several Mattermost clients, are invoking `/ops` commands, to interact with remote APIs accessed by the ops-tool. \n\n![Ops Tool Architecture Example](doc/assets/diagram.png)\n\n## Get Involved\n\n- [Join the discussion on ~Developers: DevOps](https://community.mattermost.com/core/channels/build)\n\n## Developing\n\n### Environment Setup\n\nEssentials:\n\n1. Install [Go](https://golang.org/doc/install)\n2. Install [jq](https://stedolan.github.io/jq/download/)\n\nOptionals:\n\nFor local installations public tunnel is not needed. For cloud Mattermost servers :\n\n1. Public tunnel to expose local endpoints to the internet if needed. ie. [Ngrok](https://ngrok.com/).\n\n\nSee `config.sample.yaml` for sample and read documentation how to configure the tool.\n\n### Configuration\n\n1. Create a [Bot account](https://developers.mattermost.com/integrate/admin-guide/admin-bot-accounts/).\n2. If Public tunnel is needed, configure your tunnel.\n3. Create [Slash command](https://developers.mattermost.com/integrate/admin-guide/admin-slash-commands/). Enter `\u003cBASE_URL\u003e/hook` to `Request URL`  and select `POST` as request method.\n\n    ![image](doc/assets/readme_slash_command.png)\n4. Create a [Incoming Webhook](https://developers.mattermost.com/integrate/admin-guide/admin-webhooks-incoming/). Do not select lock to this channel. It will be used for dialog and forms.\n2. Define command group configuration locations at configuration file in `commands` sections. \n3. Define scheduled command definitions in configuration.\n4. Define commands at commands folder.\n5. Prepared scripts at scripts folder.\n\nSee documentation for detailed configuration and command reference.\n\n### Running\n\nTo execute locally:\n\n```shell\nmake go-run\n```\n\n### Testing\n\nRunning all tests:\n\n```shell\nmake test\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmattermost%2Fops-tool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmattermost%2Fops-tool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmattermost%2Fops-tool/lists"}