This adds a commit message checker, which should fail on this commit … #115
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Flex CI | |
on: | |
push: | |
branches: ["release/9.1", "develop", "master", "feature/PubSub"] | |
pull_request: | |
branches: ["release/9.1", "develop", "master", "feature/PubSub"] | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
debug_build_and_test: | |
env: | |
CROWDIN_API_KEY: ${{ secrets.FLEX_CROWDIN_API }} | |
name: Build Debug and run Tests | |
runs-on: windows-latest | |
steps: | |
- name: Checkout Files | |
uses: actions/checkout@v4 | |
id: checkout | |
- name: Download 461 targeting pack | |
uses: suisei-cn/actions-download-file@818d6b7dc8fe73f2f924b6241f2b1134ca1377d9 # 1.6.0 | |
id: downloadfile # Remember to give an ID if you need the output filename | |
with: | |
url: "https://download.microsoft.com/download/F/1/D/F1DEB8DB-D277-4EF9-9F48-3A65D4D8F965/NDP461-DevPack-KB3105179-ENU.exe" | |
target: public/ | |
- name: Install targeting pack | |
shell: cmd | |
working-directory: public | |
run: NDP461-DevPack-KB3105179-ENU.exe /q | |
- name: Setup dotnet | |
uses: actions/setup-dotnet@v3 | |
with: | |
dotnet-version: | | |
2.1.x | |
3.1.x | |
5.0.x | |
- name: Warn of commit message violations | |
id: commit_message_check | |
shell: bash | |
run: | | |
# This script checks that the commit message is formatted according to the standard: | |
# - First line: no more than 62 chars and not ending with period (or if it is the | |
# only line: no more than 70 chars) | |
# - Second line: empty | |
# - Following lines: no more than 70 chars | |
FIRSTLINE_LEN=62 | |
LINE_LEN=70 | |
ERRORHEADER="⚠️ [POLICY] Your commit message is not formatted correctly." | |
OutputError() | |
{ | |
echo $ERRORHEADER >> $GITHUB_STEP_SUMMARY | |
echo $1 >> $GITHUB_STEP_SUMMARY | |
} | |
# git strips trailing whitespace in the commit message prior to calling this hook | |
COUNT=0 | |
cat "$1" | grep --invert-match -E "^#" | while read LINE | |
do | |
COUNT=$((COUNT + 1)) | |
LEN=$(echo "$LINE" | tr -d "\r\n" | wc -c) # don't count \r\n | |
case "$COUNT" in | |
1) | |
if [ $(cat "$1" | sed '/^Change-Id: /d;/^\s*$/d' | wc -l) -gt 1 ]; then | |
THIS_LINE_LEN=$FIRSTLINE_LEN | |
MSG="The first line (subject) should be no more than $FIRSTLINE_LEN characters." | |
else | |
THIS_LINE_LEN=$LINE_LEN | |
MSG="The first line (subject) should be no more than $LINE_LEN characters if it is the only line." | |
fi | |
if [ $LEN -gt $THIS_LINE_LEN ]; then | |
OutputError "$MSG" 1 | |
elif [ "${LINE:$LEN-1}" = "." ]; then | |
OutputError "The first line (subject) should not end with a period." 2 | |
fi | |
2) | |
if [ $LEN -gt 0 ]; then | |
OutputError "The second line should be empty." 3 | |
fi | |
*) | |
if [ $LEN -gt $LINE_LEN ]; then | |
OutputError "Subsequent lines (body) should be no more than $LINE_LEN characters." 4 | |
fi | |
esac | |
done | |
- name: Prepare for build | |
shell: cmd | |
working-directory: Build | |
run: build64.bat /t:WriteNonlocalDevelopmentPropertiesFile | |
- name: Build Debug and run tests | |
id: build_and_test | |
shell: powershell | |
run: | | |
cd Build | |
.\build64.bat /t:remakefw-jenkins /p:action=test /p:desktopNotAvailable=true ^| tee-object -FilePath build.log | |
- name: Scan Debug Build Output | |
shell: powershell | |
working-directory: Build | |
run: | | |
$results = Select-String -Path "build.log" -Pattern "^\s*[1-9][0-9]* Error\(s\)" | |
if ($results) { | |
foreach ($result in $results) { | |
Write-Host "Found errors in build.log $($result.LineNumber): $($result.Line)" -ForegroundColor red | |
} | |
exit 1 | |
} else { | |
Write-Host "No errors found" -ForegroundColor green | |
exit 0 | |
} | |
- name: Capture Test Results | |
shell: powershell | |
working-directory: Build | |
run: .\NUnitReport /a ^| tee-object -FilePath test-results.log | |
- name: Report Test Results | |
uses: sillsdev/[email protected] | |
with: | |
log-path: Build/test-results.log | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: build-logs | |
path: Build/*.log |