Integração contínua
Guarde um token como segredo, entregue-o ao Composer por meio de COMPOSER_AUTH e, opcionalmente, envie o arquivo lock para o seu painel de dependências.
1. Um token para CI
Crie-o em Configurações → Tokens do Composer (ou, para uma equipe, nos tokens do Composer da organização: ele continua funcionando quando pessoas saem). Limite-o aos pacotes que o projeto usa e às faixas de IP dos seus runners, e defina uma data de expiração. Salve-o como um segredo chamado METEORGPL_TOKEN.
O repositório entra uma única vez no composer.json do projeto:
composer config repositories.meteorgpl composer https://composer.meteorgpl.com
GitHub Actions
- name: Install PHP dependencies
env:
COMPOSER_AUTH: '{"http-basic":{"composer.meteorgpl.com":{"username":"token","password":"${{ secrets.METEORGPL_TOKEN }}"}}}'
run: composer install --no-interaction --prefer-dist
- name: Report composer.lock to the dependency dashboard
if: github.ref == 'refs/heads/main'
run: curl -fsS -u "token:${{ secrets.METEORGPL_TOKEN }}" -F [email protected] https://meteorgpl.com/api/projects/<project-id>/lock
GitLab CI
install:
image: composer:2
variables:
COMPOSER_AUTH: '{"http-basic":{"composer.meteorgpl.com":{"username":"token","password":"$METEORGPL_TOKEN"}}}'
script:
- composer install --no-interaction --prefer-dist
Bitbucket Pipelines
- step:
image: composer:2
script:
- export COMPOSER_AUTH='{"http-basic":{"composer.meteorgpl.com":{"username":"token","password":"'"$METEORGPL_TOKEN"'"}}}'
- composer install --no-interaction --prefer-dist
CircleCI
- run:
name: composer install
command: |
export COMPOSER_AUTH='{"http-basic":{"composer.meteorgpl.com":{"username":"token","password":"'"$METEORGPL_TOKEN"'"}}}'
composer install --no-interaction --prefer-dist
Cache e builds reproduzíveis
Dists são imutáveis: mantenha em cache o diretório de cache do Composer entre as execuções (composer config cache-dir). Faça commit do composer.lock; toda versão publicada continua disponível, então as instalações são reproduzíveis até que uma versão seja retirada.
Implantar a cada nova versão
Um webhook (Configurações → Webhooks) pode disparar um fluxo de trabalho quando um pacote que você usa ganha uma nova versão — por exemplo, um repository_dispatch que executa composer update e abre um pull request.