Monitoring development maturity in Cortex with GitLab
GitLab is the open DevOps platform. It’s widely used to plan, develop, test, secure, and collaborate throughout the software development lifecycle.
By configuring GitLab into Cortex, you’ll be able to:
- Import GitLab services
- View commits within the context of the service timeline
- Create Scorecard rules specific to GitLab
To get started, see our documentation for adding GitLab to Cortex.
Once you’ve configured GitLab in Cortex, you’ll be able to import your GitLab services into Cortex. It’s simple - just create a new service and you’ll see the list of services. You can then select which you want to import into Cortex.
GitLab commits in the service timeline
Each service has a timeline - It combines your Git commits for the service with other events, such as Pagerduty incidents, Sentry issues, and Snyk vulnerabilities. This is particularly powerful during an incident when you want to see various events in order and need to quickly find the root cause of the problem.
If you just want to see the commits, you can also look at the Git tab.
Additionally, you’ll also be able to enforce best practices for development maturity in Scorecards through the various Git rules that we have. You can check:
- If service has Git repo attached
- If file exists in Git
- If Git file contents match a regular expression
- How many required approvals are needed to merge
- Percentage of successful builds
- If repository has a cortex.yaml file
- Has CI pipeline attached
- Git commit freshness
- Number of vulnerabilities
- Number of vulnerabilities for custom filters like severity level and scan type
These rules can help ensure that teams are confirming basic development best practices, like code coverage, checking in lockfiles, READMEs, package versions, as well as ownership and other types of rules using other integrations. Some example rules for such a Scorecard are:
- owners.count > 2 - Catch organizational risk by detecting orphaned services
- git.fileExists(“package-lock.json”)- Developers should be checking in lockfiles to ensure repeatable builds.
- sonarqube.metric(“coverage”) > 80.0 - Set a threshold that’s achievable, so there’s an incentive to actually try. This also serves secondarily as a check that the service is hooked up to Sonarqube and reporting frequently
- git.lastCommit.freshness < duration(“P30D”)- Services that are committed to infrequently, counterintuitively, are actually at more risk. This is because people who are familiar with the service may leave the team, tribal knowledge accumulates, and from a technical standpoint, the service may be running old/outdated versions of your platform tooling.
- git.fileExists(*Test.java”)- Use a wildcard search to make sure there are unit tests enabled
- git.numRequiredApprovals >= 1 - Ensure that a rigorous PR process is in place for the repo, and PRs must be approved by at least one user before merging
- git.fileContents(“circleci/config.yml”).matches(“.*npm test.*”) - Enforce that a CI pipeline exists, and there is a testing step defined in the pipeline
- git.vulnerabilities(severity=["CRITICAL"], scan_types=["SAST"]) < 5 - Catch critical vulnerabilities from different types of scans.
In our reports view, you’ll be able to get a quick overview of how all services are doing. If you notice that a lot of services are failing, worry not! You can create an Initiative and prioritize certain rules to be focused on. Cortex will send each service owner their action items as the target date approaches, making it extremely easy to set attainable goals and accelerate progress towards best practices.
Start using Cortex & GitLab today
Using GitLab within Cortex will allow you to set best standards for development maturity and monitor service status in real time. Visit our documentation to integrate GitLab with Cortex. If you're new to Cortex, set up a demo with our team to get started.