This repository contains CI workflows for Certego projects. It also contains the recommended configurations for linters and formatters.
Automatically executed on every PR. Manages tests and lints stuff. To customize for your project.
🔴 Release
Automatically executed on every closed PR to the master branch that matches the regex ^[0-9]+\.[0-9]+\.[0-9]+$
. Manages release stuff. To customize for your project.
They receive input props and call actions.
They execute commands (linters, tests,...)
Actually CI actions commands implement this features:
- Linters & Formatters
- Black
- Isort
- Flake8
- Pylint
- Bandit
- Eslint
- Prettier
- Stylelint
- Tests
- Coverage printing
- License checks
- Doc syntax check
- CodeQL security check
- Django migrations check
- Dockerfile syntax check
- Release and tagging
- Publish on test Pypi
- Publish on Pypi
- Publish on Npm
- Announce release on Twitter
This repository also contains configurations for:
- Dependabot
- Pre-commit hook configurations
See here
Add this repository to your project using git subtree
command:
git subtree add --squash --prefix .github https://github.com/certego/.github.git main && rm -rf .github/{.github,README.md}
Customize options of Pull request automation
Customize linters in configurations folder
Customize dependabot.
Customize CHANGELOG
Update the subtree every time a new release of this repository is rolled. Pay attention,be careful to not lose your changes.
git subtree pull --squash --prefix .github https://github.com/certego/.github main && rm -rf .github/{.github,README.md}
Note: DO NOT squash the commits in which you added/pulled subtree, otherwise git-subtree-dir
info in git log
will be lost
Configure your project to use CI following below instructions.
CI automatically installs and calls code analyzers this way:
pylint --rcfile=.github/configurations/python_linters/.pylintrc
bandit -c .github/configurations/python_linters/.bandit.yaml
flake8 --config .github/configurations/python_linters/.flake8
black --config .github/configurations/python_linters/.black
isort --settings-path .github/configurations/python_linters/.isort.cfg --profile black --filter-files --skip venv
For local installation and customization, see here
Add pre-commit
to your python requirements.
Configure this configuration file in your .github
dir.
From root of your project install:
pre-commit install -c .github/.pre-commit-config.yaml
Pre-commit will add hook .git/hooks/pre-commit
for you.
Add to package.json
these scripts (configure paths), CI automatically installs and calls them:
"config": {
"eslint": ".github/configurations/node_linters/eslint/.eslintrc.json",
"stylelint": ".github/configurations/node_linters/stylelint/.stylelintrc.json",
"prettier": ".github/configurations/node_linters/prettier/.prettierrc.js"
},
"scripts": {
"test": "TZ=UTC jest ./tests --silent",
"test-coverage": "npm test -- --coverage=true",
"lint-config-install": "cd $(dirname $npm_package_config_eslint) && npm i",
"lint": "eslint -c $npm_package_config_eslint 'src/**/*.{js,jsx}' 'tests/**/*.{js,jsx}'",
"lint-fix": "npm run lint -- --fix",
"lint-scss-config-install": "cd $(dirname $npm_package_config_stylelint) && npm i",
"lint-scss": "stylelint --config $npm_package_config_stylelint 'src/scss/**/*.{css,scss}'",
"lint-scss-fix": "npm run lint-scss -- --fix",
"formatter": "prettier --config $npm_package_config_prettier 'src/**/*.{js,jsx}' 'tests/**/*.{js,jsx}' 'src/scss/**/*.{css,scss}' --check",
"formatter-fix": "npm run formatter -- --write"
},
For local installation and customization see here.
To enable pre-commit add this to your package.json
(configure paths, prettier is optional).
Note: starting point of husky install
must be same directory as .git
"scripts": {
"prepare": "cd ./ && husky install .github/.husky"
},
"lint_staged": {
"*.{js,jsx}": ["eslint -c .github/configurations/node_linters/eslint/.eslintrc.json"] //, "prettier --config .github/configurations/node_linters/prettier/.prettierrc.js"],
"*.{css,scss}": ["stylelint --config .github/configurations/node_linters/stylelint/.stylelintrc.json"] // , "prettier --config .github/configurations/node_linters/prettier/.prettierrc.js"]
},
Then execute this command:
npm i -D husky lint-staged && npm run prepare
To contribute to this repository, please see here