Skip to content

This adds a commit message checker, which should fail on this commit … #115

This adds a commit message checker, which should fail on this commit …

This adds a commit message checker, which should fail on this commit … #115

Workflow file for this run

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