https://github.com/jeffque/dep-man
Select stuff updated to send a specific var value to gitlab-ci
https://github.com/jeffque/dep-man
Last synced: about 1 year ago
JSON representation
Select stuff updated to send a specific var value to gitlab-ci
- Host: GitHub
- URL: https://github.com/jeffque/dep-man
- Owner: jeffque
- Created: 2022-10-23T03:04:27.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-10-23T05:27:56.000Z (over 3 years ago)
- Last Synced: 2024-10-18T09:21:11.523Z (over 1 year ago)
- Language: Ruby
- Size: 3.91 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
A intenção aqui é selecionar as paradas baseadas em dependências de coisas
para mandar o argumento via gitlab-ci.
# Placeholder title
A ideia é que esta gem seja usada em um monorepo. Como uma das ferramentas
de gerenciamento de jobs do gitlab-ci é através da inspeção de variáveis de CI,
e eu posso empurrar variáveis de CI via [`git push`](https://docs.gitlab.com/ee/user/project/push_options.html),
isso me fornece um controle preciso de quais projetos fazer o build de dentro
do monorepo ou não. Além de fornecer qual projeto fazer o build, ainda fornece
um mecanismo para que eu possa indicar quais são os projetos e subprojetos que
serão afetados por determinada mudança.
Para isso, é colocado em cada elemento do repositório um `dep-man-object` contendo:
- dependências diretas (lista de diretórios baseados na raiz do repo, ou arquivos)
- valor a ser colocado na variável de ambiente (precisa receber match de `[A-Za-z0-9_]+$`)
- nome do projeto (a priori, idêntico ao do diretório, mas pode ser sobrescrito)
## Exemplo de uso no gitlab-ci
Seja o projeto:
```
project/
├── eron-project
│ └── .gitlab-ci.yml
└── minsk-project
│ └── .gitlab-ci.yml
└── .gitlab-ci.yml
```
Para se fazer o build do projeto `eron-project`, de maneira única, podemos
adicionar uma regra para isso:
```yaml
build-eron-project:
script:
- cd eron-project
- echo 'hello world'
rules:
- if: $WHO_TO_BUILD =~ ".*,eron-project,.*" && $CI_COMMIT_TAG
```
E para gerar o `minsk-project`, de maneira semelhante, poderia fazer:
```yaml
build-minsk-project:
script:
- cd minsk-project
- echo 'hello world'
rules:
- if: $WHO_TO_BUILD =~ ".*,minsk-project,.*" && $CI_COMMIT_TAG
```
A variável a ser empurrada é `WHO_TO_BUILD`, e cada elemento de build é
identificado por um nome único.
# Linguagem de dependência
Vide o objeto `DepManRegistry`:
```rb
DepManRegistry.register do |myNewDepManObj|
myNewDepManObj.deps = [ 'minsk-project' ]
myNewDepManObj.name = 'eron-project'
end
```