0.6.2 • Published 11 months ago

scqs-sheets-stratpoint v0.6.2

Weekly downloads
-
License
ISC
Repository
gitlab
Last release
11 months ago

scqs-sheets-stratpoint

Mainly used during CI/CD, this project integrates Google Sheet API to SCQS, which updates the SCQS sheet for a specific project with the project's unit tests scores, based on Stratpoint's SCQS metrics.

Prerequisites

  • Google Service Account Credentials
  • Google Spread Sheet with Service Account allowed to edit

Usage

Installation

npm i scqs-sheets-stratpoint

Find the scqs-sheets-stratpoint

node ./node_modules/scqs-sheets-stratpoint

or

npx scqs-sheets-stratpoint

Required Options

--score; // numerical score for scqs
--spreadsheetId; // spread sheet where the score will be inputted
--sheetName; // sheet in a spread sheet where the score will be inputted
--column; // the column where the score will go, (e.g A, B, C, D)
--credsString; // the stringified service account credentials
--scqsVersion; // optional parameter to support for the scqs version 2, default value 1

Sample usage V1

npx scqs-sheet-stratpoint --score 25 --spreadsheetId ABCD123 --sheetName Sheet1 --column D --credsString '{"key":"value"}'

Sample usage V2

npx scqs-sheet-stratpoint --scqsVersion 2 --sheetName $SHEETNAME --spreadsheetId $SHEETID --credsString $STRINGIFIED_SERVICE_ACCOUNT_CREDENTIALS --updateValues $DATA

Availale scripts

  1. scqs-sheet-stratpoint - it is used to send data to google spreadsheet
  2. parseScore - it is used to parse the score from the unit test results
  3. pipeline-status - it is used to get the pipeline status metrics from gitlab
  4. code-review - it is used to get the code review metrics from gitlab
  5. dora-metrics - it is used to get the dora metrics from gitlab
  6. sonarqube-metrics - it is used to get the sonarqube metrics for code coverage and code duplication

Sample usage: pipeline status

PIPELINE_STATUS="$( \
  node scqs-sheets-stratpoint/util/pipeline-status.js \
    --private_token='<private_token>' \ # GitHub private token
    --project_id=<project_id> \ # gitlab project id
    --updated_after='<updated_after>' \ # 2024-05-06T00:00:00Z, sprint start date
    --updated_before='updated_before' \ # 2024-05-17T23:59:59Z, sprint end date
    --ref='<branch>' \
    --hostname='<hostname>')"

Sample usage: code review

CODE_REVIEW="$( \
  node scqs-sheets-stratpoint/util/code-review.js \
    --private_token='<private_token>' \ # GitHub private token
    --project_id=<project_id> \ # gitlab project id
    --updated_after='<updated_after>' \ # 2024-05-06T00:00:00Z, sprint start date
    --updated_before='updated_before' \ # 2024-05-17T23:59:59Z, sprint end date
    --hostname='<hostname>')"

SCQS Autopmation script

PIPELINE_STATUS="$( \
  node scqs-sheets-stratpoint/util/pipeline-status.js \
    --private_token='<PRIVATE_TOKEN>' \
    --project_id=11252 \
    --updated_after='2024-05-06T00:00:00Z' \
    --updated_before='2024-05-17T23:59:59Z' \
    --ref='<ENV_BRANCH_NAME>' \
    --hostname='<HOSTNAME>')"

echo "PIPELINE_STATUS: " $PIPELINE_STATUS

IFS=','
read -ra PARSED_STATUS <<< "$PIPELINE_STATUS"

CODE_REVIEW="$( \
  node scqs-sheets-stratpoint/util/code-review.js \
    --private_token='<PRIVATE_TOKEN>' \
    --project_id=11252 \
    --updated_after='2024-05-06T00:00:00Z' \
    --updated_before='2024-05-17T23:59:59Z'  \
    --hostname='<HOSTNAME>')"

echo "CODE_REVIEW: " $CODE_REVIEW
read -ra PARSED_CODE <<< "$CODE_REVIEW"

TEST_COVERAGE="$( \
  node scqs-sheets-stratpoint/util/sonarqube-metrics.js \
    --sonar_project_key='<SONAR_PROJECTT_KEY>' \\
    --sonar_user_token='<SONAR_USER_TOKEN>' \\
    --metric_key='coverage' \
    --sonar_hostname='sonarqube.stratpoint.dev')"

echo "TEST_COVERAGE: " $TEST_COVERAGE
read -ra PARSED_TC <<< "$TEST_COVERAGE"

CODE_DUPLICATION="$( \
  node scqs-sheets-stratpoint/util/sonarqube-metrics.js \
    --sonar_project_key='<SONAR_PROJECTT_KEY>' \\
    --sonar_user_token='<SONAR_USER_TOKEN>' \\
    --metric_key='duplicated_blocks' \
    --sonar_hostname='sonarqube.stratpoint.dev')"

echo "CODE_DUPLICATION: " $CODE_DUPLICATION
read -ra PARSED_CD <<< "$CODE_DUPLICATION"

SCORE="$(bash ./node_modules/scqs-sheets-stratpoint/util/parseScore.sh)"
SPRINT="<SPRINT_NUMBER>"
DATA='[[
  "'$SPRINT'", 
  "'${PARSED_STATUS[0]}'", "'$SCORE'", "'${PARSED_STATUS[0]}'", "'${PARSED_STATUS[1]}'", "'${PARSED_STATUS[2]}'", "'${PARSED_STATUS[3]}'", 
  "'${PARSED_TC[0]}'", "'${PARSED_TC[1]}'", 
  "'${PARSED_CD[0]}'", "'${PARSED_CD[1]}'", 
  "", "", 
  "YES", "5", 
  "YES", "5", 
  "'${PARSED_CODE[0]}'", "'${PARSED_CODE[1]}'", "'${PARSED_CODE[2]}'", "'${PARSED_CODE[3]}'"
]]'

node scqs-sheets-stratpoint/index.js \
  --scqsVersion 2 \
  --sheetName '<spreasheet tab name>' \
  --spreadsheetId '<spreadsheet id>' \
  --updateValues "$DATA" \
  --credsString '<google spreasheet credential>'

Sample usage: dora metrics

DORA_METRICS_DEV="$( \
  node scqs-sheets-stratpoint/util/dora-metrics.js \
    --private_token='<PRIVATE_TOKEN>' \
    --project_id=11252 \
    --updated_after='2024-06-17T00:00:00Z' \
    --updated_before='2024-06-28T23:59:59Z' \
    --ref='develop' \
    --hostname='<HOSTNAME>')"

echo "DORA_METRICS_DEV: " $DORA_METRICS_DEV

IFS=','
read -ra PARSED_DORA_DEV <<< "$DORA_METRICS_DEV"

DORA_METRICS_STAGING="$( \
  node scqs-sheets-stratpoint/util/dora-metrics.js \
    --private_token='<PRIVATE_TOKEN>' \
    --project_id=11252 \
    --updated_after='2024-06-17T00:00:00Z' \
    --updated_before='2024-06-28T23:59:59Z' \
    --ref='staging' \
    --prod_branch='prod' \ # optional parameter, default value prod
    --hostname='<HOSTNAME>')"

echo "DORA_METRICS_STAGING: " $DORA_METRICS_STAGING

IFS=','
read -ra PARSED_DORA_STAGING <<< "$DORA_METRICS_STAGING"

SPRINT="7"
DATE_NOW="$(date +"%B %-d, %Y %H:%M:%S")"
DATA='[
  ["develop", "'${PARSED_DORA_DEV[0]}'", "'${PARSED_DORA_DEV[1]}'", "", "'${PARSED_DORA_DEV[2]}'", "'${PARSED_DORA_DEV[3]}'", "'${SPRINT}'", "'${DATE_NOW}'"],
  ["staging", "'${PARSED_DORA_STAGING[0]}'", "'${PARSED_DORA_STAGING[1]}'", "", "'${PARSED_DORA_STAGING[2]}'", "'${SPRINT}'", "'${DATE_NOW}'"]  
]'

node scqs-sheets-stratpoint/index.js \
  --scqsVersion 2 \
  --sheetName '<SHEET_NAME>' \
  --spreadsheetId '<SPREADSHEET_ID>' \
  --updateValues "<UPDATE_DATA>" \
  --credsString '<google api credential>'

Reference:

Google Spreadsheet basic writing Sonarqube Web API Sonarqube Web API List

0.3.0

1 year ago

0.6.2

11 months ago

0.5.0

12 months ago

0.4.1

1 year ago

0.4.0

1 year ago

0.3.1

1 year ago

0.6.1

11 months ago

0.5.2

12 months ago

0.6.0

12 months ago

0.5.1

12 months ago

0.2.3

1 year ago

0.2.2

1 year ago

0.2.1

1 year ago

0.2.0

1 year ago

0.1.8

1 year ago

0.1.7

2 years ago

0.1.6

3 years ago

0.1.5

3 years ago

0.1.4

3 years ago

0.1.3

3 years ago

0.1.2

3 years ago

0.1.1

3 years ago

0.1.0

3 years ago

2.0.0

3 years ago

1.0.0

3 years ago