Estou configurando ações do Github para um repositório de projetos.
O fluxo de trabalho consiste nas seguintes etapas:
- Construindo uma imagem do Docker
- Enviando a imagem para um registro de contêiner
- Implementar uma implantação do Kubernetes.
No entanto, tenho duas implantações diferentes do Kubernetes: uma para desenvolvimento e outra para produção. Portanto, também tenho dois fluxos de trabalho do Github Action.
O fluxo de trabalho do Github Action para desenvolvimento é acionado toda vez que um commit é enviado:
on:
push:
branches:
- master
Mas não quero isso para o meu fluxo de trabalho de produção. Eu precisaria de um gatilho manual, como um botão Enviar para produção . Não vi nada parecido com isso nos documentos.
Existe uma maneira de acionar um fluxo de trabalho manualmente nas Ações do Github?
Como posso dividir meu fluxo de trabalho de desenvolvimento e produção para alcançar o que eu quero, no Github Actions, no Docker ou no Kubernetes?
fonte
repository_dispatch
lado, pode-se combinarwatch
comif: github.actor == 'hackerman'
para filtrar estranhos aleatórios. Ou melhor ainda -if: github.actor == github.event.repository.owner.login
para "segurança" extra: DAtualização : para obter uma solução "ChatOps" no estilo de comando barra, consulte a ação barra-comando-despacho . Isso pode permitir que você ative fluxos de trabalho com comandos de barra (por exemplo
/deploy
) do problema e obtenha comentários de solicitação.Aqui está um exemplo básico para um
deploy
comando de barra.REPO_ACCESS_TOKEN
é um token de acesso pessoal comrepo
escopoO comando pode ser processado neste fluxo de trabalho.
Existem muito mais opções e configurações diferentes. Consulte slash-command-dispatch para obter instruções completas de uso.
Resposta original : Um
repository_dispatch
fluxo de trabalho pode ser acionado manualmente por uma chamada para a API do GitHub da seguinte maneira.[username]
é um nome de usuário do GitHub[token]
é um token de acesso pessoal comrepo
escopo[repository]
é o nome do repositório no qual o fluxo de trabalho reside.fonte
event_type
está disponível para o fluxo de trabalhogithub.event.action
, portanto, tarefas / etapas específicas podem ser ativadas / desativadas quando necessário. PS: PAT não é realmente necessário, iniciar o curl com-u "[username]:[password]"
ou até-u "[username]"
funciona também (no segundo caso, o curl solicita uma senha ao usuário); mais fácil de usar em alguns casos (por exemplo, ao escrever scripts que usam o nome de usuário como entrada ou scripts destinados a serem usados por usuários menos conhecedores da tecnologia).Embora a postagem de Sarah tenha sido a resposta mais próxima e mais simples à pergunta original, ela é um tanto hacky, então acabamos criando uma
dev
ramificação para usar os seguintes gatilhos:Fluxo de trabalho de desenvolvimento: acionado quando um push é feito na
dev
ramificação:Fluxo de trabalho de produção: acionado quando uma solicitação / mesclagem pull é feita de
dev
paramaster
:fonte
Editado para mais detalhes / explicação.
Uma coisa que você pode fazer é ligar para
repository_dispatch
. Você pode visualizar a documentação do GitHub para usar umrepository_dispatch
aqui .Por exemplo, se você tiver um fluxo de trabalho GitHub Actions parecido com este:
Você pode criar um evento de despacho de repositório seguindo as etapas explicadas na documentação da API do GitHub v3 .
Primeiro, crie um token de acesso pessoal (PAT) no GitHub para autenticação.
Em seguida, você pode executar
curl
assim:Ao mesmo tempo, também queria compartilhar um pequeno projeto em que tenho trabalhado com um amigo que resolve esse problema exato.
https://www.actionspanel.app/
O ActionsPanel usa essa mesma
repository_dispatch
API, mas o faz com um token do GitHub App, para que você não precise se preocupar em gerenciar seu próprio PAT. Isso também facilita muito o acionamento de suas ações em equipes com várias pessoas.Com base nas solicitações e nos comentários do usuário, criamos recursos para especificar para qual filial enviar
repository_dispatch
e até criamos uma maneira de injetar parâmetros quando você deseja executar a ação.Você configura seus botões com um arquivo yaml declarativo que você deixa no repositório, e o ActionsPanel lê esse arquivo e cria dinamicamente sua interface do usuário para que você possa acionar suas ações.
fonte
Outra maneira de resolver isso com a oferta atual de Ação do Github é criar uma
production
ramificação do mestre quando uma implantação é necessária e acionar a ação de implantação naproduction
ramificação. Oproduction
ramo é essencialmente um espelho domaster
.O build / push do desenvolvedor pode acontecer sempre que houver uma confirmação para o mestre.
Em algum momento da programação de lançamento, você pode aumentar o PR para a
production
filial. Isso cuidará da criação / implantação do produto.fonte