Skip to content

GitLab Next

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
GitLab FOSS
GitLab FOSS
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
    • Iterations
  • Merge Requests 0
    • Merge Requests 0
  • Requirements
    • Requirements
    • List
  • Security & Compliance
    • Security & Compliance
    • Dependency List
    • License Compliance
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • Code Review
    • Insights
    • Issue
    • Repository
    • Value Stream
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
  • GitLab.org
  • GitLab FOSSGitLab FOSS
  • Issues
  • #34311

Closed (moved)
Open
Opened Jun 26, 2017 by Job van der Voort@JobV🚀Contributor0 of 3 tasks completed0/3 tasks

Chatops

Description

To achieve chatops through GitLab, the integration points and depth we can provide out of the box is not sufficient. You should be able to manage access, users, rights, VMs, containers, clusters etc etc.

Yet, we believe (and have learned internally) that there is a need for something that is maintained easily as part of GitLab, yet still provides the same depth of customization and power.

To do this, we need to be able to provide support for custom scripts that can be used by our Chatops commands. We can do this through executing these scripts on a Runner.

Because we'll be creating this from our own need and the fact that Cog is not being developed further. Feedback from our own team is vital here.

Would love to get your feedback @pcarranza and team.

Proposal

To be discussed, some ideas:

  • Chatops scripts can be included in a repository under .gitlab/
  • follow a similar pattern / same to the .gitlab-ci.yml. or use the cog style?
  • They should be able to use (protected) variables
  • How would we do relays? Can we use runners for this?

Questions

  • how to execute these?
  • SOLVED is a bot necessary? or do slash commands suffice? Slash commands should suffice. Build on top of existing functionality

Links / references

Documentation blurb

Overview

What is it? Why should someone use this feature? What is the underlying (business) problem? How do you use this feature?

Use cases

Who is this for? Provide one or more use cases.

Feature checklist

Make sure these are completed before closing the issue, with a link to the relevant commit.

  • Feature assurance
  • Documentation
  • Added to features.yml

Others-built bundles (features) used by production team

Bundle Usage Potential alternative
Twitter Tweet status updates during deployments, unplanned outages, and other maintenance operations Use a Slack app, such as BirdyBot
PagerDuty PagerDuty Use direct Slack-PagerDuty integration
net ? ?
format ? ?
consul ? ?
operable Manage Cog itself Not applicable

Custom-built bundles (features) used by production team

Bundle Usage Potential alternative
gitlab-admin (new features blocked) Admin gitlab.com -
chef (blocked) - -
postgres (blocked) Run read-only ad-hoc queries on gitlab.com's database Connect to production database safely in another way. Stream production database updates to another database in near-real time.
swat/swat-staging (blocked) Run Rails console scripts on GitLab.com without directly logging in -
otp (currently blocked) - -
ceph (currently blocked) - -
Any future functionality We need a way to create flexible functionality on top of a platform, and be able to deploy it immediately. It should be de-coupled from monthly releases. A platform solution

Other requirements

Requirement Cog-based design Potential alternative
Fine-grained roles and permissions management allows certain users to do certain production tasks. Fine-grained permissions system in Cog Integrate with GitLab using not-yet-implemented custom roles.
ChatOps when GitLab.com is down Cog bundles Separate GitLab instance (not GitLab.com) or Runners that interacts with GitLab.com
Audit log of commands to investigate and retro on incidents Stored in Cog bundles Expanding the audit log view in GitLab to support ChatOps
Piping multiple commands together (typically implemented with vertical bar character so that you can easily create scripts Cog supports piping Depends on solution

Current proposed design / implementation plan

  • Create a ChatOps platform solution that we can ship with GitLab, probably inside Omnibus.
  • The platform solution should allow GitLab "production support" users to do ChatOps without relying on other tools. These are users who deploy GitLab at the infrastructure level. (Note this applies to external customers and our own GitLab production team.)
  • The platform solution should integrate with Slack as a high priority. Potentially other chat clients in the future.
  • Create a migration strategy to move GitLab production team needs and GitLab release manager needs from the existing Cog-based solution to the new integrated-in-Omnibus solution.
    • To speed up migration and minimize re-work, the platform solution should be developed such that the existing custom-built Cog bundles can be easily converted to the new GitLab-Omnibus-based "bundles". Using JSON has been proposed to aid in this effort.
Edited Sep 22, 2017 by Job van der Voort
Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
None
Due date
None
Reference: gitlab-org/gitlab-foss#34311