Validating PR #72, opened by PritamIT2023 #40
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 : PR Guardrails | |
run-name: > | |
Validating PR #${{ github.event.pull_request.number }}, opened by ${{ github.actor }} | |
on: pull_request | |
jobs: | |
branchname: | |
name: Validate branch name | |
runs-on: ubuntu-latest | |
steps: | |
- name: Validate source branch name | |
uses: actions-ecosystem/action-regex-match@v2 | |
id: branch_name_validation | |
with: | |
text: ${{ github.event.pull_request.head.ref }} | |
regex: '^WRPD-(feature|bugfix|release|ci|enhancement|hotfix|refactor|deps|docs|experimental|security)?-[0-9]+$|^main$|^development$' | |
- name: Print invalid branch name message | |
if: ${{ steps.branch_name_validation.outputs.match == '' }} | |
run: | | |
echo ❌ ${{ github.event.pull_request.head.ref }} is not a valid branch name. | |
exit 1 | |
- name: Print valid branch name message | |
run: | | |
echo ✅ ${{ github.event.pull_request.head.ref }} is a valid branch name. | |
commitlint: | |
name: Validate commit messages | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out branch | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Use Node.js | |
uses: actions/setup-node@v3 | |
with: | |
cache: 'npm' | |
- name: Setup Wrappid npm registry | |
run: | | |
npm config set @wrappid:registry https://npm.pkg.github.com/wrappid | |
npm config set //npm.pkg.github.com/:_authToken ${{ secrets.WRAPPID_REGISTRY_TOKEN }} | |
- name: Install commitlint | |
run: | | |
npm ci | |
npm install [email protected] | |
- name: Print versions | |
run: | | |
git --version | |
node --version | |
npm --version | |
npx commitlint --version | |
- name: Run commitlint | |
run: > | |
npx commitlint | |
--from ${{ github.event.pull_request.head.sha }}~${{ github.event.pull_request.commits }} | |
--to ${{ github.event.pull_request.head.sha }} | |
--verbose | |
codelint-app: | |
name: Validate app code style | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out branch | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Use Node.js | |
uses: actions/setup-node@v3 | |
with: | |
cache: 'npm' | |
registry-url: https://npm.pkg.github.com/wrappid | |
token: ${{secrets.WRAPPID_REGISTRY_TOKEN}} | |
- name: Setup Wrappid npm registry | |
run: | | |
npm config set @wrappid:registry https://npm.pkg.github.com/wrappid | |
npm config set //npm.pkg.github.com/:_authToken ${{ secrets.WRAPPID_REGISTRY_TOKEN }} | |
- name: Install ESLint | |
run: | | |
npm ci | |
env: | |
NODE_AUTH_TOKEN: ${{secrets.WRAPPID_REGISTRY_TOKEN}} | |
- name: Print versions | |
run: | | |
node --version | |
npm --version | |
npx eslint --version | |
- name: Find added/changed files | |
id: git_diff | |
run: | | |
echo Searching for files added/changed in ${{ github.event.pull_request.head.ref }}, since the last commit in ${{ github.event.pull_request.base.ref }} | |
echo "FILES_TO_LINT=$(git diff --name-only --diff-filter=AM --recursive ${{ github.event.pull_request.head.sha }}..${{ github.event.pull_request.base.sha }} ./app/*.{js,jsx,ts,tsx} | xargs)" >> $GITHUB_OUTPUT | |
- name: Run ESLint for app | |
run: | | |
npm run code:lint:app ${{ steps.git_diff.outputs.FILES_TO_LINT }} | |
codelint-service: | |
name: Validate service code style | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out branch | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Use Node.js | |
uses: actions/setup-node@v3 | |
with: | |
cache: 'npm' | |
registry-url: https://npm.pkg.github.com/wrappid | |
token: ${{secrets.WRAPPID_REGISTRY_TOKEN}} | |
- name: Setup Wrappid npm registry | |
run: | | |
npm config set @wrappid:registry https://npm.pkg.github.com/wrappid | |
npm config set //npm.pkg.github.com/:_authToken ${{ secrets.WRAPPID_REGISTRY_TOKEN }} | |
- name: Install ESLint | |
run: | | |
npm ci | |
env: | |
NODE_AUTH_TOKEN: ${{secrets.WRAPPID_REGISTRY_TOKEN}} | |
- name: Print versions | |
run: | | |
node --version | |
npm --version | |
npx eslint --version | |
- name: Find added/changed files | |
id: git_diff | |
run: | | |
echo Searching for files added/changed in ${{ github.event.pull_request.head.ref }}, since the last commit in ${{ github.event.pull_request.base.ref }} | |
echo "FILES_TO_LINT=$(git diff --name-only --diff-filter=AM --recursive ${{ github.event.pull_request.head.sha }}..${{ github.event.pull_request.base.sha }} ./service/*.{js,jsx,ts,tsx} | xargs)" >> $GITHUB_OUTPUT | |
- name: Run ESLint for service | |
run: | | |
npm run code:lint:service ${{ steps.git_diff.outputs.FILES_TO_LINT }} | |
unit_tests: | |
name: Run unit test cases | |
runs-on: ubuntu-latest | |
needs: [branchname, commitlint, codelint-app, codelint-service] | |
steps: | |
- name: Check out branch | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Run unit test cases | |
run: echo "Ran unit test cases" | |
e2e_tests: | |
name: Run E2E test cases | |
runs-on: ubuntu-latest | |
needs: unit_tests | |
steps: | |
- name: Check out branch | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Use Node.js | |
uses: actions/setup-node@v3 | |
with: | |
cache: 'npm' | |
- name: Setup Wrappid npm registry | |
run: | | |
npm config set @wrappid:registry https://npm.pkg.github.com/wrappid | |
npm config set //npm.pkg.github.com/:_authToken ${{ secrets.WRAPPID_REGISTRY_TOKEN }} | |
- name: Install node_modules | |
run: npm ci | |
- name: Run test cases | |
run: | | |
npm ci | |
npm test | |
echo "Ran test cases" |