Skip to main content

Hook to validate branch name and issue

Project description

Nabla nabla-hooks

Nabla custom git hooks

License Gitter

Jenkins build Status Travis Build Status Quality Gate Status GitHub pull requests

This project intend to be uses by all Nabla products

Table of contents

// spell-checker:disable

// spell-checker:enable

Initialize

direnv allow
pyenv install 3.8.10
pyenv local 3.8.10
python -m pipenv install --dev --ignore-pipfile
direnv allow
pre-commit install

Requirements

This hooks requires the following to run:

See requirements.txt for mandatory packages.

This pre-commit hooks requires the following to run:

Install nabla-hooks as a developer

Using virtualenv

Install python 3.8 and virtualenv

virtualenv --no-site-packages /opt/ansible/env38 -p python3.8
source /opt/ansible/env38/bin/activate

Install python 3.8 and pyenv

curl -L https://pyenv.run | bash
echo 'export PATH="~/.pyenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
source ~/.bashrc

pyenv install 3.8.10

and integrate it with direnv

#pip3.8 install -r hooks/requirements.txt -r requirements.testing.txt
pipenv check
python -m pipenv install --dev
python -m pipenv install --dev --ignore-pipfile

Install nabla-hooks to use it

Using Pip

pip install nabla-hooks

From Source

pip install git+https://github.com/AlbanAndrieu/nabla-hooks.git

Add .pre-commit-config.yaml in you git project

  1. create .pre-commit-config.yaml in you git project

example .pre-commit-config.yaml as following:

-   repo: https://github.com/AlbanAndrieu/nabla-hooks.git
    rev: v1.0.3
    hooks:
    - id: git-branches-check

Testing locally

-   repo: local
    hooks:
    -   id: git-branches-check
        name: GIT branches check
        description: Check for old stale and already merged branches from the current repo with user friendly messages and colors
        entry: pre_commit_hooks/git-branches-check.sh
        language: script
        types: [shell]
        always_run: true
        verbose: true
        args: [--max=1, --verbose]

$ pre-commit try-repo . git-branches-check --verbose

  1. Install in your repo

Run pre-commit install pre-commit install -f --install-hooks

  1. enjoy it

Run pre-commit run --all-files

Run SKIP=flake8 git commit -am 'Add key' Run git commit -am 'Add key' --no-verify

Override global environment variable

Login

See jira

With user/pass
export JIRA_USER=aandrieu
export JIRA_PASSWORD=XXX
export JIRA_URL=https://localhost/jira
export JIRA_CERT_PATH=/etc/ssl/certs/NABLA-CA-1.crt
export JIRA_CERT_PATH=/etc/ssl/certs/ca-certificates.crt
With email/token
export JIRA_USER=alban.andrieu@free.fr
export JIRA_PASSWORD=XXX # the token you generated
export JIRA_URL==https://localhost/jira
export JENKINS_URL=https://localhost/jenkins/
export JENKINS_USER=aandrieu
export JENKINS_USER_TOKEN=XXX

The Templates Directories

See git-hooks-using-python

Local

First time run

cp -r hooks/* .git/hooks/` or `rm -Rf ./.git/hooks/ && ln -s ../hooks ./.git/hooks && git checkout repo hooks/

Global

We have two directories that interest us:

The /usr/share/git-core/templates/ directory on Linux and C:/Program Files (x86)/Git/share/git-core/templates/ directory on Windows (Note that on 32bit machines msysGit is installed by default on 'C:/Program Files/…') in which the default hooks are being copied from. If you installed Git using another configuration the installation might reside in a different folder. Adjust the path accordingly.

The .git/hooks/ directory is the directory in which the hooks templates are being copied to.

The hooked are being copied from the [...]/share/git-core/templates/ directory. There are other types of templates but they are out of scope for this post.

Note: If you change the templates directory the hooks directory must be a subdirectory of the templates directory. Do not set the templates directory to the desired hooks directory instead.

Run

git config --global --get init.templatedir
rm -Rf .git/hooks
git config --global init.templatedir /workspace/users/albandrieu30/nabla-hooks/

Package nabla-hooks as a developer

See setup-cfg

Build a source distribution (a tar archive of all the files needed to build and install the package):

python3 setup.py sdist Builds wheels: python3 setup.py bdist_wheel Build from source: python3 setup.py build And install: /opt/ansible/env38/bin/python3 setup.py install

sudo python setup.py develop pip install . pip install -e ./

Upload a source distribution

See api-tokens

rm -Rf dist/
python3 setup.py sdist bdist_wheel
# Check package
twine check dist/*
nano $HOME/.pypirc
export TWINE_PASSWORD=pypi-
python3 -m twine upload --repository nabla-hooks dist/* --verbose

All in one

python setup.py register sdist upload

Uploaded nabla-hooks

Test nabla-hooks as a developer

shell usage

python

from hooks import get_msg
match_msg

versioneer

versioneer

versioneer install
#check with
python setup.py version
python setup.py install

Test

tox --notest
tox -e py  # Run tox using the version of Python in PATH
tox py38

From root directory

pytest --cache-clear --setup-show hooks/test/test_pytest.py
pytest --cache-clear --setup-show test/package.py

Poetry

poetry install
poetry env info
poetry shell
poetry run pytest
poetry build
#poetry publish --build

Pdm

pdm

pdm init
pdm run flake8

Update README.md

npm install --save markdown-toc
markdown-toc README.md -i
markdown-toc CHANGELOG.md -i
pre-commit install
git add README.md
pre-commit run markdown-toc

Check syntax remark-lint

npm run lint-md

npm-groovy-lint groovy formatting for Jenkinsfile

Tested with nodejs 12 and 16 on ubuntu 20 and 21 (not working with nodejs 11 and 16)

npm install -g npm-groovy-lint@8.2.0
npm-groovy-lint --format
ll .groovylintrc.json

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nabla-hooks-0.1.0.tar.gz (47.4 kB view hashes)

Uploaded Source

Built Distribution

nabla_hooks-0.1.0-py2.py3-none-any.whl (29.6 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page