Como Criar um Projeto hospedado no GitHub e no Packagist
Ainda tem um terceiro projeto envolvido, o Composer.
O Composer funciona de forma transparente entre ambos, usado pelo Packagist.
Criando um arquivo compojer.json
Projeto em PHP na dobradinha GitHub e Packagist
Ainda tem um terceiro projeto encolvido, o Composer.
O Composer funciona de forma transparente entre ambos
GitHub
- Criar conta
- Criar novo repositório
- Enviar código fonte para o repositório
1) Crie seu projeto em PHP
- Use um código existente
- Crie um novo
- Faça um fork de algum projeto do GitHub e customise
2) Criando a estrutura do seu projeto
2.1) cd /var/www/html
mkdir meu-projeto
cd meu-projeto
composer init
Responder as perguntas
Package name (<vendor>/<name>) [ribafs/meu-projeto]: (apenas tecle enter para aceitar)
Description []: Meu Primeiro projeto com o Packageist
Author [, n to skip]: Ribamar FS <Este endereço de email está sendo protegido de spambots. Você precisa do JavaScript ativado para vê-lo.>
Minimum Stability []: dev
Opções: dev, alpha, beta, RC ou stable
Package Type (e.g. library, project, metapackage, composer-plugin) []: project
License []: MIT
Define your dependencies.
Would you like to define your dependencies (require) interactively [yes]? no
(Nesta primeira etapa - no)
Would you like to define your dev dependencies (require-dev) interactively [yes]? no
{
"name": "ribafs/meu-projeto",
"description": "Meu Primeiro projeto com o Packageist",
"type": "project",
"license": "MIT",
"authors": [
{
"name": "Ribamar FS",
"email": "Este endereço de email está sendo protegido de spambots. Você precisa do JavaScript ativado para vê-lo."
}
],
"minimum-stability": "dev",
"require": {}
}
Do you confirm generation [yes]?
Concluído
Referência sobre o composer - https://getcomposer.org/doc/04-schema.md
A estrutura do projeto deve ficar assim (sugestão/recomendação):
/meu-projeto
/src (código fonte do meu projeto)
/vendor (diretório criado pelo Composer para armazenar as dependências)
composer.json
README.md
index.php
3) Abrigar meu-projeto no GitHub
- Criar uma conta no GitHub - https://github.com/
- Criar um repositório para meu-projeto
Adicionar uma chave SSH
Em seu desktop Linux execute:
cd
ssh-keygen -t rsa -b 4096 -C "Este endereço de email está sendo protegido de spambots. Você precisa do JavaScript ativado para vê-lo."
Enter
Enter
Enter
Checando a senha
ls -al ~/.ssh
Capturando o hash da senha
cat ~/.ssh/id_rsa.pub
Copie a chave mostrada desde ssh-rsa ... até seu e-mail, incluso.
Vá ate'o GitHub, faça login e clique acima em sua foto e Settings
SSH and GPG keys
New SSH key
Entre com um Title (Residência)
E cole na caixa Key abaixo
E clique em Add SSH key
Ao criar um repositório no GitHub ele recebe o estágio de desenvolvimento, com um nome:
master-dev
Nesta fase informamos no composer.json assim:
"minimum-stability": "dev",
Quando considerarmos que já está usável e queremos oferecer para o mundo, então
distribuimos assim:
composer require ribafs/cake-control:dev-master
Ou
editando o composer.json do raiz do aplicativo para adicionar a linha abaixo na seção require:
"ribafs/cake-control": "master-dev"
No Packagist ele aparece como
dev-master
Quando considerar que o projeto está estável crie um Release e dê um número para o mesmo.
Agora pode oferecer duas versões: a estável e a em desenvolvimento, assim:
Dev
composer require ribafs/cake-control:dev-master
Estável
composer require ribafs/cake-control-twbs
Depois que configuramos o Packagist e sincrinizamos as atualizações somente precisamos interagir com
nosso código no GitHub, o Packagist e o Composer ficam transparentes.
4) Enviar meu-projeto para o repositório do GitHub
cd /var/www/html/meu-projeto
git config --global user.email "Este endereço de email está sendo protegido de spambots. Você precisa do JavaScript ativado para vê-lo."
git config --global user.name "Ribamar FS"
git init
git add .
git commit -m "Primeiro commit"
git remote add origin Este endereço de email está sendo protegido de spambots. Você precisa do JavaScript ativado para vê-lo.:ribafs/cake-control.git
git push -f origin master
Para enviar novamente após alterações
remover a pasta .git
e repetir os passos acima
O projeto está agora hospedado no GitHub e pronto para ser abrigado pelo Packagist.
5) Criando o Pacote no Packagist
Acesse https://packagist.org/
Crie uma conta
Faça login
Clique em Submit a Package
Cole a linha a seguir, lembrando que o nome do pacote deve ser em minúsculas, palavras compostas separadas por hífen:
Este endereço de email está sendo protegido de spambots. Você precisa do JavaScript ativado para vê-lo.:ribafs/cake-control.git
E clique em Check
Se retornar correto aceite e faça o submit
6) Atualizações
Cada vez que atualizar o projeto no GitHub precisa atualizar no Packageist
- Vá para sua conta no packagist
- Settings
- My Packages
- Clique no projeto
- Clique em Update (botão verde)
Para tornar automáticas as atualizações
- Vá para seu repositório no GitHub
- Clique em Settings
- Integration & services
- Services - Add service - packagist
- User - ribafs
- Token - o token da sua API (Acesse o site do packagist - login - Profile e copie o token gerado e cole aqui)
- Domain - packagist.org
- Marque Active
Clique em Update service abaixo
Clique acima e à direita em Test service
Caso receba a mensagem "Okay, the test payload is on its way." já poderá ir ao Packagist e abrir seu projeto que não
mais aparecerá a mensagem de que precisa atualizar.
Agora as atualizações foram automatizadas.
Você está pronto para compartilhar seu projeto com o mundo.
Para instalar um plugin (ex.: cake-control), crie um aplicativo em Cake com composer
cd aplicativo
composer require ribafs/cake-control
Mas, desta forma somente será possível após criar um release do projeto no GitHub.
Enquanto não conclue satisfatoriamente seu projeto, poderá divulgar para testes assim:
Editar o composer.json:
Adicionar na seção require-dev a linha
"require-dev": {
"psy/psysh": "@stable",
"cakephp/debug_kit": "~3.2",
"cakephp/bake": "~1.1",
"ribafs/cake-control": "master-dev"
},
Depois executar:
composer update
Ou então diretamente para linha de comando:
composer require ribafs/cake-control:dev-master
Como remover plugin:
Removível somente se bem inicialmente.
composer remove cakephp/localized
Remover manualmente a linha no bootstrap.php e todo o código adicionado ao vendor
além da linha respectiva no composer.json
Referências:
Composer - https://getcomposer.org/doc/03-cli.md
http://blog.jgrossi.com/2013/creating-your-first-composer-packagist-package/
Markdown tutorial - http://www.markdowntutorial.com/ (a linguagem usada pelo GitHub)
Dicas úteis
https://gist.github.com/
Comments fornecido por CComment