Skip to content

Commit

Permalink
Merge pull request #11 from oasisprotocol/mz/ci-lint
Browse files Browse the repository at this point in the history
Setup lint workflow
  • Loading branch information
buberdds authored Mar 5, 2024
2 parents 2075182 + 8752a15 commit f55cda5
Show file tree
Hide file tree
Showing 9 changed files with 370 additions and 2 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ci-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
uses: actions/setup-node@v4
with:
node-version: '20.x'
- uses: pnpm/action-setup@v2.2.4
- uses: pnpm/action-setup@v3
name: Install pnpm
with:
version: 8
Expand Down
73 changes: 73 additions & 0 deletions .github/workflows/ci-lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# NOTE: This name appears in GitHub's Checks API and in workflow's status badge.
name: ci-lint

# Trigger the workflow when:
on:
# A push occurs to one of the matched branches.
push:
branches: [master]
# Or when a pull request event occurs for a pull request against one of the
# matched branches.
pull_request:
branches: [master]

jobs:
lint:
# NOTE: This name appears in GitHub's Checks API.
name: lint
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
# Checkout pull request HEAD commit instead of merge commit.
ref: ${{ github.event.pull_request.head.sha }}
# Fetch all history so gitlint can check the relevant commits.
fetch-depth: '0'
- name: Set up Python 3
uses: actions/setup-python@v4
with:
python-version: '3.x'
- name: Set up Node.js 20
uses: actions/setup-node@v4
with:
node-version: '20.x'
- uses: pnpm/action-setup@v3
name: Install pnpm
with:
version: 8
run_install: false
- name: Set workflow variables
# Id is needed to access output in a next step.
id: vars
run: |
echo "PNPM_CACHE_DIR=$(pnpm store path)" >> "$GITHUB_OUTPUT"
echo "SHORT_SHA=$(git rev-parse --short HEAD)" >> "$GITHUB_OUTPUT"
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ steps.vars.outputs.PNPM_CACHE_DIR }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install
run: pnpm install --frozen-lockfile --ignore-scripts
- name: Install gitlint
run: |
python -m pip install gitlint
- name: Lint documentation
run: |
pnpm lint-docs
# Always run this step so that all linting errors can be seen at once.
if: always()
- name: Lint git commits
run: |
pnpm lint-git
# Always run this step so that all linting errors can be seen at once.
if: always()
- name: ESLint
run: pnpm eslint
# Always run this step so that all linting errors can be seen at once.
if: always()
- name: Validate TypeScript
run: pnpm --filter @oasisprotocol/dapp-voting-frontend checkTs
29 changes: 29 additions & 0 deletions .gitlint
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# gitlint configuration.

# For more information, see:
# https://jorisroovers.com/gitlint/configuration/.

[general]
verbosity = 2
ignore-merge-commits=true
ignore-fixup-commits=false
ignore-squash-commits=false
ignore=body-is-missing
contrib=contrib-disallow-cleanup-commits

[title-max-length]
line-length=72

[body-max-line-length]
line-length=80

[body-min-length]
min-length=20

[title-must-not-contain-word]
words=wip

[ignore-by-author-name]
# Ignore specific line length rules for Dependabot commits.
regex=dependabot
ignore=title-max-length,body-max-line-length
24 changes: 24 additions & 0 deletions .markdownlint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# yaml-language-server: $schema=https://raw.githubusercontent.com/DavidAnson/markdownlint/main/schema/markdownlint-config-schema.json

# markdownlint configuration.

# For more information, see:
# https://github.com/DavidAnson/markdownlint#optionsconfig.

# Enable all rules.
default: true

line-length:
# Line length checking is not strict by default.
strict: true
line_length: 80
# Allow longer lines for code blocks.
code_block_line_length: 100

# Do not always require language specifiers with fenced code blocks since they
# are not part of the Markdown spec.
fenced-code-language: false

# Allow <details> and <section> HTML elements
no-inline-html:
allowed_elements: ['details', 'summary']
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
# voTEE

[![CI build status][github-ci-build-badge]][github-ci-build-link]
[![CI lint status][github-ci-lint-badge]][github-ci-lint-link]

A dApp that let's you vote on all the things related to Oasis.

[github-ci-build-badge]: https://github.com/oasisprotocol/dapp-voting/actions/workflows/ci-build.yml/badge.svg
[github-ci-build-link]: https://github.com/oasisprotocol/dapp-voting/actions?query=workflow:ci-build+branch:master
[github-ci-build-link]: https://github.com/oasisprotocol/dapp-voting/actions?query=workflow:ci-build+branch:master
[github-ci-lint-badge]: https://github.com/oasisprotocol/dapp-voting/actions/workflows/ci-lint.yml/badge.svg
[github-ci-lint-link]: https://github.com/oasisprotocol/dapp-voting/actions?query=workflow:ci-lint+branch:master
1 change: 1 addition & 0 deletions frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"license": "See License in ../LICENSE",
"type": "module",
"scripts": {
"checkTs": "tsc --noEmit",
"dev": "vite",
"build": "tsc && vite build",
"preview": "vite preview"
Expand Down
20 changes: 20 additions & 0 deletions internals/scripts/gitlint.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#!/usr/bin/env node

// @ts-check
// https://github.com/oasisprotocol/oasis-core/blob/50d972df71fed2bcaa88e6ce5430d919ec08087d/common.mk#L171-L180
import { execSync } from 'child_process'

const GIT_ORIGIN_REMOTE = 'origin'
const RELEASE_BRANCH = 'master'
const BRANCH = `${GIT_ORIGIN_REMOTE}/${RELEASE_BRANCH}`
const COMMIT_SHA = execSync(`git rev-parse ${BRANCH}`).toString().trim()

console.log(`*** Running gitlint for commits from ${BRANCH} (${COMMIT_SHA})`)

try {
execSync(`gitlint --commits ${BRANCH}..HEAD`, { stdio: 'inherit' })
} catch (error) {
// We want to keep env browser in eslint config
// eslint-disable-next-line no-undef
process.exit(1)
}
3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
"preinstall": "npx only-allow pnpm",
"prepare": "husky",
"eslint": "eslint . --cache --ext .js,.ts,.tsx --max-warnings 0",
"lint-git": "node ./internals/scripts/gitlint.mjs",
"lint-docs": "markdownlint --ignore '**/node_modules/**' '**/*.md'",
"prettier": "prettier --write . --ignore-path .eslintignore"
},
"license": "See License in LICENSE",
Expand All @@ -26,6 +28,7 @@
"eslint-plugin-react-refresh": "^0.4.5",
"husky": "^9.0.11",
"lint-staged": "^15.2.2",
"markdownlint-cli": "^0.39.0",
"prettier": "^3.2.5"
}
}
Loading

0 comments on commit f55cda5

Please sign in to comment.