@loblaw/backstage-plugin-gitlab

[![Version](https://img.shields.io/npm/v/@loblaw/backstage-plugin-gitlab.svg)](https://www.npmjs.com/package/@loblaw/backstage-plugin-gitlab) ![Contributions welcome](https://img.shields.io/badge/contributions-welcome-orange.svg) [![Downloads](https://img

Stats

StarsIssuesVersionUpdatedCreatedSize
@loblaw/backstage-plugin-gitlab
1470.1.16a month ago4 months agoMinified + gzip package size for @loblaw/backstage-plugin-gitlab in KB

Readme

Backstage Gitlab Plugin

Version Contributions welcome Downloads License Stars Badge Maintenance

Build Status

Language Repo Size Hits

Website: https://gitlab.com/

Contributors Languages Pipeline Status Merge Request Information

Setup

  1. If you have a standalone app (you didn't clone this repo), then do
# From your Backstage root directory
cd packages/app
yarn add @loblaw/backstage-plugin-gitlab
  1. Add the EntityGitlabContent extension to the entity page in your app:
// In packages/app/src/components/catalog/EntityPage.tsx

import { isGitlabAvailable, EntityGitlabContent } from '@loblaw/backstage-plugin-gitlab';
// Farther down at the serviceEntityPage declaration
const serviceEntityPage = (
<EntityLayout>
    {/* Place the following section where you want the tab to appear */}
    <EntityLayout.Route if={isGitlabAvailable} path="/gitlab" title="Gitlab">
       <EntityGitlabContent />
    </EntityLayout.Route>
  1. Add integration: In app-config.yaml add the integration for gitlab:

    integrations:
    gitlab:
     - host: gitlab.com
       token: ${GITLAB_TOKEN}
    
  2. Add proxy config:

  '/gitlabci':
    target: '${GITLAB_URL}/api/v4'
    allowedMethods: ['GET']
    headers:
      PRIVATE-TOKEN: '${GITLAB_TOKEN}'
  • Default GitLab URL: https://gitlab.com
  • GitLab Token should be with of scope read_api and can be generated from this URL
  1. Add a gitlab.com/project-id annotation to your respective catalog-info.yaml files, on the format
# Example catalog-info.yaml entity definition file
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
  # ...
  annotations:
      gitlab.com/project-id: 'project-id' #1234. This must be in quotes and can be found under Settings --> General
      or
      gitlab.com/project-slug: 'project-slug' # group_name/project_name
spec:
  type: service
  # ...

Note: spec.type can take values in ['website','library','service'] but to render GitLab Entity, Catalog must be of type service

Features

  • List top 20 builds for a project
  • List top 20 Merge Requests for a project
  • View Contributors for a project
  • View Languages used for a project
  • View Pipeline status for a project
  • Works for both project and personal tokens
  • Pagination for builds
  • Pagination for Merge Requests
  • Merge Requests Statistics

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.