-
Notifications
You must be signed in to change notification settings - Fork 0
📕 Tutoriais
- Indice
- Repositórios dentro de um repositório com push automático
- Gerando Certificado SSL auto assinado
- Referências
Guia rápido para aplicar o conceito de sub pastas como repositório e sincronizando automaticamente.
O Git subtree
é uma alternativa ao git submodule
, o conceito aqui é o mesmo, ter um diretório dentro do seu projeto que é um clone/espelho de um outro projeto, tendo comandos como push, commit ou pull sincronizados. Voce pode conferir no desenho abaixo um exemplo de como fica a arquitetura, onde a pasta http é na verdade o repositório
dump-components/php-http.
dumptecnologia/php-framework
| bin
| console
| src
| | Http (esta pasta dentro do projeto é na verdade o repositório dump-components/php-http)
| | Patterns
| | Log
| test
O exemplo foi tirado do nosso repositório dumptecnologia/php-framework que contém essa implementação.
Por padrão, Git subtree
requer comandos adicionais para pode sincronizar ou clonar, para entender como isso funciona, pare um pouquinho e leia o guia básico da subtree, para contornar isso, podemos fazer uma configuração no GitHub Actions para automatizar o processo de sincronização, fazendo com que você de push
no repositório pai e ele atualize os repositórios da subtree
automaticamente. Essa é a mesma ideia que o Laravel usa em seu framework, tendo projetos para cada pacote e um projeto pai gerenciando tudo.
- Adicione uma pasta como um
git subtree
git subtree add --prefix src/Http [email protected]:dump-components/php-http.git main --squash
- De
push
no repositório para atualizar com a informação da novasubtree
git subtree push --prefix src/Http [email protected]:dump-components/php-http.git main
Agora seu repositório tem uma referencia a subtree
,vamos automatizar o processo de push dela usando uma action do github.
- Escreva uma action com as informações da sincronização, essa irá rodar cada vez que o repositório tiver um
push
, a action ira verificar se teve alterações nasubtree
e darágit subtree push
automaticamente.
name: push-sub-repositories
on: [ push ]
jobs:
update-php-http:
name: dump-components/php-http
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- uses: nxtlvlsoftware/[email protected]
with:
repo: 'dump-components/php-http'
path: 'src/Http'
deploy_key: '${{ secrets.PHP_HTTP }}'
force: true
- Necessário gerar uma key na conta utilizada para hospedar as imagens
- Vá até o menu:
- Account Settings
- Security
- Na tela aparecerá
- Access Tokens
- Clique em New Access Token
- Coloque uma descrição e informe a permissão de leitura, escrita e deleção.
- Access Tokens
- Vá até o menu:
- Com o token em mãos vá até o github
- No repositório que você quer automatizar o build/push
- Precisamos criar as variáveis de ambiente
- DOCKER_USERNAME => username do DockerHub
- DOCKER_PASSWORD => token
- Precisamos criar as variáveis de ambiente
- No repositório que você quer automatizar o build/push
- Crie o arquivo YML abaixo na pasta .github/workflows
- Agora quando subirmos uma tag branch o deploy e push vai começar automaticamente
name: Publish Docker image
on:
push:
tags:
- '*.*.*'
jobs:
push_to_registry:
name: Push Docker image to Docker Hub
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Check out the repo
uses: actions/checkout@v3
- name: Set env
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
- name: Log in to Docker Hub
uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
with:
images: dumptec/php-fpm
- name: Build and push Docker image | BASE
uses: docker/build-push-action@v3
env:
TAG: ${{ steps.meta.outputs.tags }}
with:
context: ./Dockerfiles/base/
push: true
tags: |
${{ secrets.DOCKER_USERNAME }}/php-fpm:base-${{ env.RELEASE_VERSION }}
${{ secrets.DOCKER_USERNAME }}/php-fpm:base-latest
labels: ${{ steps.meta.outputs.labels }}
openssl genrsa -des3 -out rootCA.key 2048
pass=badpass
- Use o comando abaixo e preencha os campos
- Country Name (2 letter code) [AU]
- State or Province Name (full name) [Some-State]:
- Locality Name (eg, city) []:
- Organization Name (eg, company) [Internet Widgits Pty Ltd]:
- Organizational Unit Name (eg, section) []:
- Common Name (e.g. server FQDN or YOUR name) []:
- Email Address []:
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 3650 -out rootCA.pem
Crie o arquivo abaixo, preenchendo os campos de acordo com a necessidade
[req]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn
[dn]
C=BR
ST=RS
L=RS
O=Dump tech
OU=Technology
[email protected]
CN = localhost
Crie o arquivo abaixo, preenchendo os campos de acordo com a necessidade
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = myexample.com
DNS.2=sub.myexample.com
DNS.3=myexample1.com
DNS.4=localhost
O comando abaixo utiliza o arquivo server.csf.cnf para gerar a key
openssl req -new -sha256 -nodes -out server.csr -newkey rsa:2048 -keyout server.key -config server.csr.cnf
O comando abaixo utiliza o arquivo v3.ext para gerar o certificado
openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 500 -sha256 -extfile v3.ext
Copyright © 2022 Dump Serviços em Tecnologia LTDA | Termos de uso