commitlint/plugins: make recent test pass #1863
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: CI | |
on: [push, pull_request] | |
jobs: | |
build: | |
name: Build | |
runs-on: ubuntu-22.04 | |
container: | |
image: "ubuntu:22.04" | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Install required dependencies | |
run: | | |
apt update | |
apt install --yes sudo | |
sudo apt install --yes --no-install-recommends git | |
# workaround for https://github.com/actions/runner/issues/2033 | |
- name: ownership workaround | |
run: git config --global --add safe.directory '*' | |
- name: Setup .NET | |
run: | | |
# We need to install `ca-certificates`, otherwise we get these errors in the CI: | |
# Unable to load the service index for source https://api.nuget.org/v3/index.json. | |
# The SSL connection could not be established, see inner exception. | |
# The remote certificate is invalid because of errors in the certificate chain: UntrustedRoot | |
apt install --yes --no-install-recommends ca-certificates | |
apt install --yes --no-install-recommends dotnet6 | |
- name: Compile the conventions solution | |
run: dotnet build --configuration Release conventions.sln | |
- name: Compile F# scripts | |
run: dotnet fsi scripts/compileFSharpScripts.fsx | |
file-conventions-tests: | |
name: Run FileConventions-lib unit tests | |
needs: build | |
runs-on: ubuntu-22.04 | |
container: | |
image: "ubuntu:22.04" | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Install required dependencies | |
run: | | |
apt update | |
apt install --yes sudo | |
- name: Setup .NET | |
run: | | |
# We need to install `ca-certificates`, otherwise we get these errors in the CI: | |
# Unable to load the service index for source https://api.nuget.org/v3/index.json. | |
# The SSL connection could not be established, see inner exception. | |
# The remote certificate is invalid because of errors in the certificate chain: UntrustedRoot | |
apt install --yes --no-install-recommends ca-certificates | |
apt install --yes --no-install-recommends dotnet6 | |
- name: Run tests to validate F# scripts | |
run: dotnet test src/FileConventions.Test/FileConventions.Test.fsproj | |
commitlint-plugins-tests: | |
name: Run commitlint-related tests | |
needs: build | |
runs-on: ubuntu-22.04 | |
container: | |
image: "ubuntu:22.04" | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Install required dependencies | |
run: | | |
apt update | |
apt install --yes sudo | |
sudo apt install --yes --no-install-recommends git ca-certificates | |
sudo apt install --yes --no-install-recommends npm curl | |
# need to update nodejs because with ubuntu's default nodejs version we would get this error: | |
# error @jest/core@29.4.1: The engine "node" is incompatible with this module. Expected version "^14.15.0 || ^16.10.0 || >=18.0.0". Got "12.22.9" | |
sudo npm install --global n | |
sudo n lts | |
- name: Print versions | |
run: | | |
git --version | |
node --version | |
npm --version | |
- name: Install yarn | |
run: | | |
npm install --global yarn | |
yarn add --dev jest typescript ts-jest @types/jest | |
- name: Install commitlint | |
run: | | |
npm install conventional-changelog-conventionalcommits | |
npm install commitlint@latest | |
- name: Print versions | |
run: | | |
git --version | |
node --version | |
npm --version | |
npx commitlint --version | |
yarn --version | |
- name: Run typescript compiler | |
# This step is needed because jest would swallow any compiler error | |
# and just declare test as failed without any explanation. | |
run: npx tsc | |
- name: Run tests to validate our plugins | |
run: yarn jest | |
sanity-check: | |
name: Sanity check | |
needs: | |
- file-conventions-tests | |
- commitlint-plugins-tests | |
runs-on: ubuntu-22.04 | |
container: | |
image: "ubuntu:22.04" | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
steps: | |
- name: Install required dependencies | |
run: | | |
apt update && apt install --yes sudo | |
sudo apt install --yes --no-install-recommends git | |
sudo apt install --yes --no-install-recommends npm curl | |
# need to update nodejs because with ubuntu's default nodejs version we would get this error: | |
# ``` | |
# + npx commitlint --from HEAD~1 --to HEAD --verbose | |
# /__w/conventions/conventions/node_modules/typescript/lib/typescript.js:139 | |
# for (let i = startIndex ?? 0; i < array.length; i++) { | |
# ^ | |
# | |
# SyntaxError: Unexpected token '?' | |
# at wrapSafe (internal/modules/cjs/loader.js:915:16) | |
# ... | |
# ``` | |
sudo npm install --global n | |
sudo n lts | |
- uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
# needed because of commit-lint, see https://github.com/conventional-changelog/commitlint/issues/3376 | |
fetch-depth: 0 | |
# workaround for https://github.com/actions/runner/issues/2033 | |
- name: ownership workaround | |
run: git config --global --add safe.directory '*' | |
- name: Print versions | |
run: | | |
git --version | |
node --version | |
npm --version | |
- name: Validate current commit (last commit) with commitlint | |
if: github.event_name == 'push' | |
run: ./commitlint.sh --from HEAD~1 --to HEAD --verbose | |
- name: Validate PR commits with commitlint | |
if: github.event_name == 'pull_request' | |
run: | | |
./commitlint.sh --verbose \ | |
--from ${{ github.event.pull_request.head.sha }}~${{ github.event.pull_request.commits }} \ | |
--to ${{ github.event.pull_request.head.sha }} | |
- name: Setup .NET | |
run: | | |
# We need to install `ca-certificates`, otherwise we get these errors in the CI: | |
# Unable to load the service index for source https://api.nuget.org/v3/index.json. | |
# The SSL connection could not be established, see inner exception. | |
# The remote certificate is invalid because of errors in the certificate chain: UntrustedRoot | |
apt install --yes --no-install-recommends ca-certificates | |
apt install --yes --no-install-recommends dotnet6 | |
- name: Check all files end with EOL | |
run: dotnet fsi scripts/eofConvention.fsx | |
- name: Check all .fsx scripts have shebang | |
run: dotnet fsi scripts/shebangConvention.fsx | |
- name: Check all F# scripts have execute permission | |
run: dotnet fsi scripts/executableConvention.fsx | |
- name: Check there are no mixed line-endings in any files | |
run: dotnet fsi scripts/mixedLineEndings.fsx | |
- name: Check there are no unpinned GitHubActions image versions | |
run: dotnet fsi scripts/unpinnedGitHubActionsImageVersions.fsx | |
- name: Check there are no unpinned nuget package reference versions in .NET project files | |
run: dotnet fsi scripts/unpinnedNugetPackageReferenceVersionsInProjects.fsx | |
- name: Check there are no unpinned nuget package reference versions in F# scripts | |
run: dotnet fsi scripts/unpinnedNugetPackageReferenceVersionsInFSharpScripts.fsx | |
- name: Check there are no unpinned versions in `dotnet tool install` commands | |
run: dotnet fsi scripts/unpinnedDotnetToolInstallVersions.fsx | |
- name: Check commits 1 by 1 | |
if: github.event_name == 'pull_request' | |
run: dotnet fsi scripts/checkCommits1by1.fsx | |
- name: Check there are no inconsistent versions GitHubCI files | |
run: dotnet fsi scripts/inconsistentVersionsInGitHubCI.fsx | |
- name: Check there are no inconsistent versions in nuget package references of F# scripts | |
run: dotnet fsi scripts/inconsistentVersionsInFSharpScripts.fsx | |
- name: Check there are no non-verbose flags in scripts and CI YML files | |
run: dotnet fsi scripts/nonVerboseFlagsInGitHubCIAndScripts.fsx | |
- name: Sanity check nuget packages of .NET projects | |
run: | | |
dotnet restore | |
dotnet fsi scripts/sanityCheckNuget.fsx | |
- name: Install prettier | |
run: npm install prettier@2.8.3 | |
- name: Change file permissions | |
# We need this step so we can change the files using `npx prettier --write` in the next step. | |
# Otherwise we get permission denied error in the CI. | |
run: sudo chmod 777 --recursive . | |
- name: Run "prettier" to check the style of our TypeScript and YML code | |
run: | | |
sudo npx prettier --quote-props=consistent --write './**/*.ts' | |
sudo npx prettier --quote-props=consistent --write './**/*.yml' | |
# Since we changed file modes in the previous step we need the following command to | |
# make git ignore mode changes in files and doesn't include them in the git diff command. | |
git config core.fileMode false | |
# Since after installing commitlint dependencies package.json file changes, we need to | |
# run the following command to ignore package.json file | |
git restore package.json | |
git diff --exit-code | |
- name: FSharpLint | |
run: | | |
dotnet new tool-manifest | |
dotnet tool install dotnet-fsharplint --version 0.23.7--date20240109-1215.git-a263185 | |
dotnet dotnet-fsharplint lint conventions.sln | |
- name: fantomless | |
run: | | |
dotnet tool install fantomless-tool --version 4.7.997-prerelease | |
dotnet fantomless --recurse . | |
git diff --exit-code |