Package: gitlab_evaluate
EvaluateEvaluate is a script that can be run to gather information about all projects of a GitLabInstanceGroup (including sub-groups)This information is useful to the GitLab Professional Services (PS) team to accurately scope migration services.[[TOC]]Contributions / SupportThis tool is maintained by the Professional Services team and is not included in your GitLab Support if you have a license. For support questions please createan issuefrom ourEvaluate support issue template.Use CaseGitLab PS plans to share this script with a Customer to run against their GitLab instance or group. Then the customer can send back the output files to enable GitLab engagement managers to scope engagements accurately. There is asingle file generated.Install Methodpip InstallRequires at least Python 3.8.pipinstallgitlab-evaluateDocker ContainerDocker containers with evaluate installedare also available to use.Local Usage# Spin up containerdockerrun--nameevaluate-itregistry.gitlab.com/gitlab-org/professional-services-automation/tools/utilities/evaluate:latest/bin/bash# In docker shellevaluate-ci-readiness<-r|--repo><git-repo-url>
evaluate-gitlab-t<access-token-with-api-scope>-shttps://gitlab.example.comUsageSystem level data gatheringEvaluate is meant to be run by anOWNER(ideally systemADMINISTRATOR) of a GitLab instance to gather data about every project on the instance or group (including sub-groups).A GitLabOWNER(ideally systemADMINISTRATOR) should provision an access token withapiscope:Personal access tokenfor instanceGroup access tokenfor groupInstallgitlab-evaluatefrom theInstallsection above,Run :point_down:For evaluating a GitLab instanceevaluate-gitlab-t<access-token-with-api-scope>-shttps://gitlab.example.comFor evaluating a GitLab group (including sub-groups)evaluate-gitlab-t<access-token-with-api-scope>-shttps://gitlab.example.com-g42This should create a file calledevaluate_repost.xlsxFor more information on these files, seereading the outputIf you're coordinating a GitLab PS engagement, email these files to the GitLab account team.To gather CI data from a single repo# For evaluating a single git repo's CI readinessevaluate-ci-readiness--repo<git-repo-url># -r for shortCommand help screenusage: evaluate-gitlab [-h] [-t TOKEN] [-s SOURCE] [-f FILENAME] [-o] [-i] [-p PROCESSES] [-g GROUP_ID]

optional arguments:
  -h, --help            show this help message and exit
  -t TOKEN, --token TOKEN
                        Personal Access Token: REQ'd
  -s SOURCE, --source SOURCE
                        Source URL: REQ'd
  -f FILENAME, --filename FILENAME
                        XLSX Output File Name. If not set, will default to 'evaluate_report.xlsx'
  -o, --output          Output Per Project Stats to screen
  -i, --insecure        Set to ignore SSL warnings.
  -p PROCESSES, --processes PROCESSES
                        Number of processes. Defaults to number of CPU cores
  -g GROUP_ID, --group GROUP_ID
                        Group ID. Evaluate all group projects (including sub-groups)usage: evaluate-ci-readiness [-h] [-r REPO]

optional arguments:
  -h, --help            show this help message and exit
  -r REPO, --repo REPO  Git Repository To Clone (ex: https://username:password@repo.comExample GitLab CI job using evaluate ci readiness scriptevaluate node-js:stage:testscript:-evaluate-ci-readiness --repo=https://github.com/nodejs/node.gitartifacts:paths:-node.csvTotest, consider standing up a local docker container of GitLab. Provision an access token withapiscope andOWNER(ideally systemADMINISTRATOR) privileges. Create multiple projects with varying number of commits, pipelines, merge requests, issues. Consider importing an open source repo or usingGPTto add projects to the system.DesignDesign for the script can be foundhereProject ThresholdsBelow are the thresholds we will use to determine whether a project can be considered for normal migration or needs to have special steps taken in order to migrateProject DataProject Size - 20GBPipelines - 5,000 maxIssues - 5,000 total (not just open)Merge Requests - 5,000 total (not just merged)Container images - 20GB per projectPackages - Any packages presentRepository DataRepository Size - 5GBCommits - 50KBranches - 1KTags - 5K