3.1.0 • Published 2 months ago

@govbr-ds/config-tools v3.1.0

Weekly downloads
-
License
MIT
Repository
gitlab
Last release
2 months ago

GovBR-DS - Config Tools

Objetivo

Compartilhar os padrões de commit e release entre os projetos do GovBR-DS.

Importante

Os exemplos abaixo estão usando o pnpm (consulte a documentação da ferramenta para mais detalhes). Caso prefira utilizar o npm só é necessário substituir os comandos pnpm pelos npm equivalentes.

Como instalar

  1. Instale os seguintes pacotes:

    pnpm add -D @govbr-ds/config-tools husky lint-staged prettier @commitlint/cz-commitlint

Commitlint

Configurações para o Commitlint.

  1. Crie um arquivo commitlint.config.js na raiz do seu projeto e e importe a configuração:

    module.exports = {
      extends: ['./node_modules/@govbr-ds/commit-config/src/commitlint.cjs'],
    }

    Para sobrescrever alguam configuração siga o padrão do Commitlint.

  2. Inclua o seguinte código no seu package.json

    "scripts": {
        ...
        "commit": "git-cz",
        ...
    },
    ...
    "config": {
        ...
        "commitizen": {
          "path": "@commitlint/cz-commitlint"
        }
        ...
    }
  3. Conforme a documentação do Husky inclua o hook commit-msg com o código abaixo:

    pnpm exec -- commitlint --edit $1
  4. Sugerimos usar o estágio abaixo no .gitlab-ci.yml para fazer as validações no gitlab.com

    Commits:
      stage: Qualidade
      artifacts:
        when: always
        paths:
          - report-commitlint.txt
        expire_in: 1 week
        expose_as: 'Commitlint Report'
      script:
        - pnpm dlx commitlint-gitlab-ci -x ./src/commitlint.cjs > report-commitlint.txt
      rules:
        - when: always

Semantic Release

Configurações para o Semantic Release.

  1. Crie um arquivo release.config.js na raiz do seu projeto e importe os plugins que deseja usar:

    const { branches, commitAnalyzer, releaseNotesGenerator, changelog, gitlab, git } = require('./node_modules/@govbr-ds/commit-config/src/semantic-release.cjs')
    
    module.exports = {
      branches: branches,
      plugins: [
        commitAnalyzer,
        releaseNotesGenerator,
        changelog,
        gitlab,
        git,
        ...
      ],
    }

    Para sobrescrever alguma configuração siga o padrão do Semantic Release. A ordem definida será a ordem de execução!

  2. Sugerimos usar o estágio abaixo no .gitlab-ci.yml para gerar as releaes gitlab.com

    Semantic Release:
      stage: Release
      before_script:
        - pnpm config set //registry.npmjs.org/:_authToken ${NPM_TOKEN}
      script:
        - pnpm exec semantic-release
      rules:
        - if: '$CI_COMMIT_BRANCH == "main" || $CI_COMMIT_BRANCH == "next" || $CI_COMMIT_REF_NAME =~ /\\d.(\\d|x).(\\d|x)(-alpha)?$/ || $CI_COMMIT_REF_NAME =~ /alpha$/'
          when: manual

Markdown lint

Configurações para o Markdownlint e também usamos o Markdownlint-cli.

  1. Crie um arquivo .markdownlint.yml na raiz do seu projeto e extenda a configuração:

    extends: './node_modules/@govbr-ds/config-tools/src/markdownlint.yml'
  2. Crie um arquivo .markdownlintignore na raiz do seu projeto e inclua os arquivos e pastas que deseja ignorar da validação de markdown:

    CHANGELOG.MD
    /node_modules

    Quando o CHANGELOG.md é gerado automaticamente é recomendável o excluir da validação.

  3. Inclua o seguinte código no seu package.json

    "scripts": {
        ...
        "lint:md": "markdownlint -d --fix **/*.md",
        ...
    },
    ...
    "lint-staged": {
      "*.md": [
        "prettier --write",
        "markdownlint -d --fix **/*.md"
      ]
    },
  4. Conforme a documentação do Husky inclua o hook pre-commit com o código abaixo:

    pnpm exec -- lint-staged
  5. Sugerimos usar o estágio abaixo no .gitlab-ci.yml para fazer as validações no gitlab.com

    Markdown:
      stage: Qualidade
      artifacts:
        when: always
        paths:
          - report-markdownlint.txt
        expire_in: 1 week
        expose_as: 'Markdownlint Report'
      script:
        - pnpm exec markdownlint '**/*.md' -o report-markdownlint.txt
      rules:
        - when: always

gitlab-ci.yml

Para usar o pnpm no gitlab-ci.yml usamos o seguinte código para cuidar dos preparativos:

Instalar dependências:
  stage: Dependências
  script:
    - apk --no-cache add git
    - npm i -g pnpm
    - pnpm install
  rules:
    - when: always

Como contribuir?

Antes de abrir um Merge Request tenha em mente algumas informações:

  • Esse é um projeto opensource e contribuições são bem-vindas.
  • Para facilitar a aprovação da sua contribuição, escolha um título curto, simples e explicativo para o MR, e siga os padrões da nossa wiki.
  • Quer contribuir com o projeto? Confira o nosso guia como contribuir.

Reportar bugs/necessidades

Você pode usar as issues para nos informar os problemas que tem enfrentado ao usar nossa biblioteca ou mesmo o que gostaria que fizesse parte do projeto. Por favor use o modelo que mais se encaixa na sua necessidade e preencha com o máximo de detalhes possível.

Nos comprometemos a responder a todas as issues

Precisa de ajuda?

Por favor não crie issues para fazer perguntas...

Use nossos canais abaixo para obter tirar suas dúvidas:

Padrão de commits

Para mais informações sobre o padrão de commits consulte a nossa Wiki.

Licença

Nesse projeto usamos a licença MIT.