A ação do fluxo de trabalho implementador de liberação é uma implantação automatizada de liberação para integração contínua / implantação contínua (CI / CD). Ele foi projetado para automatizar o processo de implantação do seu aplicativo da Web. Essa ação lida com a configuração do ambiente, a instalação de dependências, a criação do projeto (o pacote de construção), implantando -o em um servidor remoto e enviando notificações para o Slack.
| Entrada | Descrição | Obrigatório | Padrão |
|---|---|---|---|
| Site-URL | O URL do site de implantação | Sim | N / D |
| Github-Token | Github Token. Isso é fornecido automaticamente pelo GitHub. Use o valor padrão $ {{secrets.github_token}}. Mais informações | Sim | N / D |
| Path de implantação | O caminho no servidor remoto em que o aplicativo será implantado. | Sim | N / D |
| implantação | O nome do host ou o endereço IP do servidor remoto. | Sim | N / D |
| implantar-port | A porta SSH do servidor remoto (geralmente 22). | Sim | N / D |
| Usuador de implantação | O nome de usuário para o acesso SSH ao servidor remoto. | Sim | N / D |
| key de implantação | A chave SSH privada para acessar o servidor remoto. Gerar uma chave SSH | Sim | N / D |
| nome de tag | O nome da tag da versão de lançamento. | Sim | N / D |
| caminho | O caminho para o diretório de compilação no Github Runner. | Sim | construção/tronco/ |
| interruptores | RSYNC Switches para implantação. Isso controla o comportamento do processo de sincronização do arquivo. Documentação do RSYNC | Não | -avzr --exclude = "*. Env" --exclude = "Env" --exclude = ". Github" --exclude = ". git" --exclude = ". |
| Slack-Webhook | Slack Webhook URL para notificações. Obtenha isso nas suas configurações de folga. Criando slack webhooks | Não | N / D |
| canal de folga | Canal folgado para notificações. | Não | em geral |
| Slack-título | Título para a notificação Slack. | Não | Aplicativo da Web implantado |
| Messagem frouxa | Corpo de mensagem para a notificação de folga. | Não | Processo de implantação concluído. Verifique os logs para obter detalhes. |
| Nome de Slack-Usern | Nome de usuário que aparecerá como o remetente da notificação do Slack. | Não | WebApp implantando bot |
| Slack-Footer | Texto do rodapé para a notificação de folga. | Não | Status da atualização do aplicativo da web |
| PHP-VERSION | Versão php para configurar | Não | 7.4 |
| Extensões de PHP | Extensões PHP para instalar | Não | pcov |
| VERIÇÃO DE NODE | Versão node.js para configurar | Não | 16 |
| Uso-php | Se deve configurar o php | Não | verdadeiro |
| Nó de uso | Se deve configurar node.js | Não | verdadeiro |
| Use-remote-Install | Se deve executar instalações/atualizações remotas de ssh | Não | falso |
| Oflogos do upload-liberem | Se deve fazer upload de ativos de liberação | Não | verdadeiro |
| arquivos de liberação | Arquivos para fazer upload para ser lançado | Não | build.zip; changelog.md |
| Uso-cache | Se deve usar o cache para dependências | Não | falso |
| upload-artifact | Se deve fazer upload de artefatos | Não | falso |
| Nome do artefato | Nome do artefato para fazer upload | Não | Build-Artifact |
| Artefato-caminho | Caminho do artefato para fazer upload | Não | construção/tronco/ |
Para usar essa ação em seu fluxo de trabalho, inclua as etapas a seguir no arquivo de fluxo de trabalho do seu GitHub Ações. Se você é novo nas ações do GitHub, crie um diretório .github/workflows na raiz do seu repositório e adicione um arquivo yaml (por exemplo, release-deployer.yml ) com o seguinte conteúdo:
Exemplo básico:
name : Release Deployer
on :
pull_request :
types :
- closed
workflow_dispatch :
jobs :
release :
runs-on : ubuntu-latest
steps :
- name : Run release-please
uses : googleapis/release-please-action@v4
id : release
with :
token : ${{ secrets.GITHUB_TOKEN }}
command : manifest
default-branch : main
- name : Run Custom Deployer Action
if : ${{ steps.release.outputs.releases_created }}
uses : devuri/rdx-release-deployer-action@v1
with :
site-url : ${{ secrets.SITE_URL }} # Deployment site URL
github-token : ${{ secrets.GITHUB_TOKEN }} # GitHub Token
deploy-path : ${{ secrets.DEPLOY_PATH }} # Remote deploy path
deploy-host : ${{ secrets.DEPLOY_HOST }} # Remote deploy host
deploy-port : ${{ secrets.DEPLOY_PORT }} # Remote deploy port
deploy-user : ${{ secrets.DEPLOY_USER }} # Remote deploy user
deploy-key : ${{ secrets.DEPLOY_KEY }} # Remote deploy key
tag-name : ${{ steps.release.outputs.tag_name }} # Release tag name
path : build/trunk/ # Path to the build directory on the GitHub runner (default: build/trunk/)
slack-webhook : ${{ secrets.SLACK_WEBHOOK }} # Slack webhook URL for notificationsExemplo com comentários para cada parâmetro:
name : Release Deployer
on :
pull_request :
types :
- closed
workflow_dispatch :
jobs :
release :
runs-on : ubuntu-latest
steps :
- name : Run release-please
uses : googleapis/release-please-action@v4
id : release
with :
token : ${{ secrets.GITHUB_TOKEN }}
command : manifest
default-branch : main
- name : Run Custom Deployer Action
if : ${{ steps.release.outputs.releases_created }}
uses : devuri/rdx-release-deployer-action@v1
with :
# Required parameters
site-url : ${{ secrets.SITE_URL }} # Deployment site URL
github-token : ${{ secrets.GITHUB_TOKEN }} # GitHub Token
deploy-path : ${{ secrets.DEPLOY_PATH }} # Remote deploy path
deploy-host : ${{ secrets.DEPLOY_HOST }} # Remote deploy host
deploy-port : ${{ secrets.DEPLOY_PORT }} # Remote deploy port
deploy-user : ${{ secrets.DEPLOY_USER }} # Remote deploy user
deploy-key : ${{ secrets.DEPLOY_KEY }} # Remote deploy key
tag-name : ${{ steps.release.outputs.tag_name }} # Release tag name
# Optional parameters with defaults
path : build/trunk/ # Path to the build directory on the GitHub runner (default: build/trunk/)
switches : ' -avzr --exclude="*.env" --exclude="env" --exclude=".github" --exclude=".git" --exclude=".gitignore" --exclude=".user.ini" ' # Rsync switches for deployment (default: '-avzr --exclude="*.env" --exclude="env" --exclude=".github" --exclude=".git" --exclude=".gitignore" --exclude=".user.ini"')
slack-webhook : ${{ secrets.SLACK_WEBHOOK }} # Slack webhook URL for notifications
slack-channel : general # Slack channel for notifications (default: general)
slack-title : " Web Application Deployed " # Title for the Slack notification (default: "Web Application Deployed")
slack-message : " Deployment process completed. " # Message body for the Slack notification (default: "Deployment process completed. Check logs for details.")
slack-username : " WebApp Deploy Bot " # Username that will appear as the sender of the Slack notification (default: "WebApp Deploy Bot")
slack-footer : " Web Application Update Status " # Footer text for the Slack notification (default: "Web Application Update Status")
# Optional setup parameters with defaults
php-version : ' 7.4 ' # PHP version to setup (default: '7.4')
php-extensions : ' pcov ' # PHP extensions to install (default: 'pcov')
node-version : ' 16 ' # Node.js version to setup (default: '16')
# Boolean flags
use-php : true # Whether to setup PHP (default: true)
use-node : true # Whether to setup Node.js (default: true)
use-remote-install : true # Whether to execute remote SSH updates (default: false)
upload-release-assets : true # Whether to upload release assets (default: true)
# Files to upload to release
release-files : ' build.zip;CHANGELOG.md ' # Files to upload to release (default: 'build.zip;CHANGELOG.md')
Neste exemplo, o fluxo de trabalho aciona em solicitações de tração fechado e também pode ser acionado manualmente na guia Ações do GitHub. Ele usa o googleapis/release-please-action para gerenciar versões e, em seguida, executa a ação do implantador personalizada se forem criadas versões.
Aviso
A opção --delete nos switches pode ser perigosa, pois pode resultar na exclusão de arquivos ou conteúdo importante no servidor.
Diretório de construção : a entrada path ( build/trunk/ padrão) especifica o diretório a partir do qual os arquivos serão copiados para o servidor remoto usando rsync . Certifique -se de que o seu processo de compilação produza os arquivos necessários para este diretório ou ajuste a entrada do path de acordo para corresponder ao seu local de saída de construção.
Opção RSYNC --delete : A opção --delete na entrada dos switches é usada para manter o diretório remoto sincronizado com o diretório de construção local, excluindo arquivos no servidor remoto que não existem mais localmente. Isso pode ser perigoso, pois pode resultar na exclusão de arquivos ou conteúdo importante no servidor, como imagens compradas pelo usuário ou outros ativos. Use esta opção com cautela para evitar perda de dados não intencionais. Considere excluir os diretórios que não devem ser excluídos adicionando -os à lista --exclude na entrada switches . Veja: Opções de exclusão do RSYNC
rsync com os comutadores especificados.set -eo ), o que garante que as etapas subsequentes não sejam executadas se uma etapa anterior falhar.| Segredo | Descrição |
|---|---|
GITHUB_TOKEN | Token Github para autenticação (fornecida por padrão em ações do GitHub) |
DEPLOY_PATH | Caminho de implantação remota |
DEPLOY_HOST | Remoto Implant Host |
DEPLOY_PORT | Porta de implantação remota |
DEPLOY_USER | Usuário de implantação remota |
DEPLOY_KEY | Chave de implantação remota |
SLACK_WEBHOOK | Slack Webhook URL para notificações |
Para adicionar segredos ao seu repositório:
O CI/CD é um método para fornecer aplicativos frequentemente aos clientes, introduzindo a automação nos estágios do desenvolvimento de aplicativos. Os principais conceitos atribuídos ao CI/CD são integração contínua, entrega contínua e implantação contínua. Esta ação ajuda a implementar o IC/CD automatizando o processo de implantação, garantindo que seu aplicativo seja
Sempre em um estado implantável e que as atualizações são entregues aos usuários de maneira rápida e eficiente.
Ao incorporar essa ação ao seu fluxo de trabalho, você pode obter um processo de implantação mais confiável e seguro, melhorar seu fluxo de trabalho de desenvolvimento e garantir que seus aplicativos sejam implantados de forma consistente e rápida.
Importante
O GitHub fornece uma certa quantidade de minutos gratuitos por mês, dependendo do seu plano, o que pode ser suficiente para projetos de pequeno a médio porte. O uso de ações do GitHub é baseado no tempo de computação necessário para executar seus fluxos de trabalho, o que pode variar dependendo do corredor usado e do total de minutos consumidos. Para gerenciar o uso de maneira eficaz, otimize seus fluxos de trabalho e considere usar corredores auto-hospedados para projetos maiores. Calculadora de preços.
Os scripts e documentação neste projeto são divulgados sob a licença do MIT.