scqs-sheets-stratpoint
v0.6.2
Published
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.
Downloads
454
Readme
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
- scqs-sheet-stratpoint - it is used to send data to google spreadsheet
- parseScore - it is used to parse the score from the unit test results
- pipeline-status - it is used to get the pipeline status metrics from gitlab
- code-review - it is used to get the code review metrics from gitlab
- dora-metrics - it is used to get the dora metrics from gitlab
- 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