
Automatize sites de implantação e muito mais com esta ação do GitHub. É grátis!
Coloque o seguinte em Your_Project/.github/workflows/main.yml
on : push
name : Publish Website
jobs :
web-deploy :
name : Deploy Website Every Commit
runs-on : ubuntu-latest
steps :
- name : ? Get Latest Code
uses : actions/checkout@v3
- name : Sync Files
uses : SamKirkland/web-deploy@v1
with :
target-server : example.com
remote-user : username
private-ssh-key : ${{ secrets.SSH_KEY }}
destination-path : ~/destinationFolder/ActionsBlank workflow file ou Set up a workflow yourself , se você não vir essas opções criar manualmente um arquivo yaml Your_Project/.github/workflows/main.ymlsecrets em seu projeto. Para adicionar um secret , vá à guia Settings em seu projeto, selecione Secrets . Adicione um novo Secret para private-ssh-key As teclas podem ser adicionadas diretamente ao seu arquivo de configuração .yML ou referenciadas no armazenamento do seu projeto Secrets .
Para adicionar um secret , vá à guia Settings em seu projeto, selecione Secrets . Eu recomendo fortemente que você armazene sua private-ssh-key como um segredo.
| Nome -chave | Obrigatório? | Exemplo | Padrão | Descrição |
|---|---|---|---|---|
target-server | Sim | example.com | Servidor de destino para implantar | |
destination-path | Sim | ~/folderOnServerThatAlreadyExists/ | Caminho no servidor para implantar. Já deve existir. | |
remote-user | Sim | username | Usuário ssh para fazer login como | |
private-ssh-key | Sim | -----BEGIN RSA PRIVATE KEY----- ...... | Chave privada SSH. Deve ser especificado como um segredo. | |
source-path | Não | ./myFolderToPublish/ | ./ | Caminho para fazer upload no servidor, deve terminar com a barra de arrasto / |
ssh-port | Não | 12345 | 22 | Porta ssh para usar. A maioria dos hosts altera isso do padrão. Esta não é a porta dos seus sites. |
rsync-options | Não | Veja a seção rsync-options abaixo | --archive --verbose --compress --human-readable --progress --delete-after --exclude=.git* --exclude=.git/ --exclude=README.md --exclude=readme.md --exclude=.gitignore | NOTA: Se a personalização, você deve redirecionar os padrões (assumindo que os desejam). Argumentos RSYNC personalizados, este campo é passado diretamente para o script RSYNC. |
rsync-optionsArgumentos personalizados, este campo é passado diretamente para o script RSYNC. Veja o manual do RSYNC para todas as opções. Você pode usar quantos argumentos quiser, separá -los com um espaço
Abaixo está uma lista incompleta de args comumente usados:
| Opção | Descrição |
|---|---|
--archive | Uma maneira rápida de dizer que você quer recursão e preservar quase tudo |
--dry-run | Não carrega ou exclui nada, mas diz o que seria carregado/excluir se isso fosse uma implantação real |
--stats | Imprima estatísticas detalhadas sobre a transferência de arquivo, permitindo que você diga a eficácia do algoritmo Delta-Transfer da RSYNC para seus dados |
--links | Quando os links simbólicos forem encontrados, recrie o símbolo do destino |
--compress | Comprime os dados do arquivo conforme enviado para a máquina de destino, o que reduz a quantidade de dados que estão sendo transmitidos |
--human-readable | Bytes de saída em um formato mais legível pelo homem (k, m, g) |
--itemize-changes | Lista detalhada das alterações que estão sendo feitas em cada arquivo, incluindo alterações de atributo |
--delete-after | Ao excluir um arquivo no Github, ele também será excluído no servidor. Os arquivos são excluídos no final de uma implantação para minimizar o tempo de inatividade. |
--max-size '200K' | Ignore os arquivos de sincronização nesse limite. O valor é um número seguido por "k", "m" ou "g" |
--exclude 'file.txt' | Exclui os arquivos da implantação. Suporta Glob Pattterns (Ex: *.jpg ). Você pode ter vários exclusão! |
--include 'file.txt' | Inclui arquivos, mesmo que fosse excluído. Suporta Glob Pattterns (Ex: *.jpg ). Você pode ter vários inclui! |
Veja o manual do RSYNC para todas as opções
Certifique -se de ter um script NPM chamado 'Build'. Esta configuração deve funcionar para a maioria dos sites construídos de nós.
on : push
name : Publish Website
jobs :
web-deploy :
name : Deploy Website Every Commit
runs-on : ubuntu-latest
steps :
- name : ? Get Latest Code
uses : actions/checkout@v3
- name : ? Install Packages
- uses : actions/setup-node@v3
with :
node-version : 18
cache : " npm "
- run : npm ci
- name : ? Build
run : npm run build
- name : Sync Files
uses : SamKirkland/web-deploy@v1
with :
target-server : example.com
remote-user : username
private-ssh-key : ${{ secrets.SSH_KEY }}
destination-path : ~/destinationFolder/ OPUTS Uma lista de arquivos que serão criados/modificados para sincronizar sua fonte sem fazer nenhuma alteração real
on : push
name : Publish Website Dry Run
jobs :
web-deploy :
name : Deploy Website Every Commit
runs-on : ubuntu-latest
steps :
- name : ? Get Latest Code
uses : actions/checkout@v3
- name : Sync Files
uses : SamKirkland/web-deploy@v1
with :
target-server : example.com
remote-user : username
private-ssh-key : ${{ secrets.SSH_KEY }}
ssh-port : 22
destination-path : ~/destinationFolder/
rsync-options : --dry-run --archive --verbose --compress --delete-after --human-readable --exclude=.git* --exclude=.git/ --exclude=README.md --exclude=readme.md --exclude=.gitignoreQuer outro exemplo? Deixe -me saber criando um problema do github
Se você apreciar esta ação do Github, dê um ou exiba um dos crachás abaixo. Sinta -se à vontade para editar o texto ou a cor.
[ < img alt = " Deployed with web deploy " src = " https://img.shields.io/badge/Deployed With-web deploy-%3CCOLOR%3E?style=for-the-badge&color=0077b6 " > ] ( https://github.com/SamKirkland/web-deploy ) [ < img alt = " Deployed with web deploy " src = " https://img.shields.io/badge/Deployed With-web deploy-%3CCOLOR%3E?style=for-the-badge&color=2b9348 " > ] ( https://github.com/SamKirkland/web-deploy ) [ < img alt = " Deployed with web deploy " src = " https://img.shields.io/badge/Deployed With-web deploy-%3CCOLOR%3E?style=for-the-badge&color=d00000 " > ] ( https://github.com/SamKirkland/web-deploy ) [ < img alt = " Website Deployed for Free with web deploy " src = " https://img.shields.io/badge/Website deployed for free with-web deploy-%3CCOLOR%3E?style=for-the-badge&color=297FA9 " > ] ( https://github.com/SamKirkland/web-deploy ) [ < img alt = " Website Deployed for Free with web deploy " src = " https://img.shields.io/badge/Website deployed for free with-web deploy-%3CCOLOR%3E?style=for-the-badge&color=2b9348 " > ] ( https://github.com/SamKirkland/web-deploy ) [ < img alt = " Website Deployed for Free with web deploy " src = " https://img.shields.io/badge/Website deployed for free with-web deploy-%3CCOLOR%3E?style=for-the-badge&color=d00000 " > ] ( https://github.com/SamKirkland/web-deploy ) Os arquivos Git são excluídos por padrão
Se tiver rsync-options personalizadas, você precisará re-adquirir as opções de exclusão padrão usando --exclude=.git* --exclude=.git/ --exclude=README.md --exclude=readme.md --exclude=.gitignore
Você pode usar rsync-options e passar o número de opções --exclude que quiser. Por padrão, esta ação exclui arquivos GitHub. Se você optar por personalizar rsync-options , certifique-se de copiar os padrões.
Exemplo excluindo todos os arquivos .jpg :
rsync-options: --exclude "*.jpg"
Exemplo excluindo uma pasta específica:
rsync-options: --exclude "wp-content/themes/"
Esta biblioteca usa rsync para sincronizar arquivos. O script não foi capaz de detectar rsync na máquina executando a ação. Se você estiver usando runs-on: ubuntu-latest você sempre terá rsync .
Se você estiver usando windows-latest , windows-XXXX , macos-latest , macos-12 ou um corredor auto-hospedado, precisará instalar o RSYNC antes da etapa web-deploy .
Isso é muito fácil de fazer!
Nos corredores windows executam suas etapas específicas do Windows e, em seguida, usam uma etapa ubuntu-latest para implantar.
Nos corredores auto-hospedados, instalam o RSYNC antes da etapa web-deploy .
runs-on : [self-hosted, linux, my-self-hosted-runner-label]
steps :
- name : Install rsync
run : |
sudo apt-get update
sudo apt-get install rsync Nos corredores macos instale o RSYNC antes da etapa web-deploy .
runs-on : macos-latest
steps :
- name : Install rsync
run : |
brew update
brew install rsyncLeia mais sobre os corredores personalizados
https://docs.github.com/en/actions/using-github-hosted-runners/customizing-github-hosted-runners