Da orquestração visual ao suporte à orquestração YAML
Cloud Effect Pipeline Flow é uma ferramenta pronta para uso de integração contínua e entrega contínua de nível empresarial que oferece suporte a fontes de código avançadas, construção, ferramentas de teste automatizadas, vários tipos de implantação e métodos de implantação, está profundamente integrado ao Alibaba Cloud e também fornece uma variedade de recursos de nível empresarial que ajudam as empresas a concluir com eficiência o processo CICD, desde o desenvolvimento até o lançamento.
Na indústria, os produtos de pipeline são geralmente usados de duas maneiras: uma é a operação da interface visual e a outra é usar a linguagem YAML para organizar o pipeline, como escrever código.
Desde o seu lançamento em 2020, o Yunxiao Flow conquistou a confiança de dezenas de milhares de empresas com sua operação em tela branca, uso pronto para uso, simplicidade e facilidade de uso e profunda integração com o Alibaba Cloud .
No ano passado, para ajudar as empresas a criar rapidamente vários pipelines, gerenciar lotes e atender a cenários complexos de orquestração de processos, como salto/ramificação, a Yunxiao lançou um novo recurso Pipeline como Código. As empresas podem usar YAML para criar pipelines. Com base no modelo YAML fornecido por Yunxiao, com apenas algumas modificações, um pipeline que atenda aos cenários de negócios pode ser compilado rapidamente.
Você pode usar YAML em apenas algumas etapas simples
Quando se trata de YAML, a primeira coisa em que muitos estudantes pensam é no limite de uso. Yunxiao Flow possui modelos YAML ricos e manuais YAML integrados, suporta preenchimento automático de sintaxe YAML, verificação em tempo real e soluções de reparo recomendadas, bem como uma variedade de operações de teclas de atalho, etc., com o objetivo de ajudar os desenvolvedores a reduzir o limite de uso de YAML e melhorar a eficiência da escrita YAML.
1) Modelo YAML de pipeline rico integrado
O Flow fornece modelos YAML de pipeline comumente usados, incluindo modelos comuns de construção e implantação em Java, PHP, Node.js, Go, Python, .Net Core, C++ e outras linguagens. Ao criar um novo pipeline, após selecionar o modelo YAML apropriado, você pode compilar rapidamente um pipeline que atenda ao cenário de negócios com apenas algumas modificações.
2) Forneça modelos YAML para tarefas comuns
Um pipeline geralmente contém várias tarefas. O Flow fornece modelos YAML para tarefas comuns, incluindo verificação de código, teste, construção, implantação e outras ferramentas. Depois de selecionar as etapas da tarefa necessárias, você pode copiar o YAML de amostra no pipeline com um clique para organizar rapidamente o pipeline.
3) O editor possui um manual YAML integrado para fácil referência.
Para facilitar a escrita de YAML, o editor Yunxiao Flow YAML possui um manual YAML integrado. Os desenvolvedores podem ler o manual enquanto escrevem YAML. Ao mesmo tempo, o manual YAML ativa o posicionamento automático e o documento suporta a mudança automática para o comprimento da sintaxe posicionada pelo cursor do mouse, para que você possa ler enquanto escreve e ter uma "folha de dicas" pessoal.
4) Suporte ao preenchimento automático da sintaxe YAML
Além disso, o editor YAML também oferece suporte ao preenchimento automático de sintaxe, incluindo preenchimento de fragmento de sintaxe estática, preenchimento de palavra-chave de sintaxe estática, ID de recurso dinâmico e outros preenchimentos automáticos (como construção de ID de cluster, ID de grupo de host, ID de conexão de serviço, etc.). Suporta a tecla de atalho Cmd + I para invocar o preenchimento automático.
5) Suporta verificação em tempo real da sintaxe YAML e soluções de reparo recomendadas
O editor YAML do Flow também oferece suporte à verificação de sintaxe em tempo real, exibição em tempo real de marcadores de erro nas linhas de código e passagem do mouse para visualizar detalhes do erro e planos de reparo. O painel de problemas oferece suporte à visualização unificada de erros, causas de erros, planos de reparo e coordenadas de linhas e colunas de erros. Clicar em um erro localizará automaticamente a linha de código relevante.
Esses cenários são mais eficientes usando YAML
1) Copie YAML rapidamente ou chame OpenAPI para gerenciar facilmente vários pipelines
Use um método visual para operar o pipeline. Quando há muitos pipelines, é mais complicado modificar cada pipeline. Com o YAML, os desenvolvedores podem configurar facilmente vários pipelines copiando o YAML e fazendo apenas algumas modificações.
Ao mesmo tempo, com base em YAML, Yunxiao fornece OpenAPI para criação e atualização de pipeline. As empresas podem chamar esses OpenAPIs para gerenciar facilmente vários pipelines em lotes e obter integração de sistemas de terceiros.
2) Apoiar o julgamento de condições para atender a cenários complexos de orquestração de processos, como salto/ramificação
O YAML do pipeline do Cloud Effect Flow oferece suporte a condições para controlar se um trabalho é executado, atendendo a cenários complexos de orquestração de processos, como salto e ramificação. Exemplos de cenários típicos são os seguintes:
Cenário de filial: crie uma vez e implante vários ambientes sob demanda
Existem vários ambientes de teste no cenário da equipe de P&D, que podem ser usados conforme necessário. Ele pode ser implementado no ambiente de teste sob demanda com base no nome do ambiente especificado.
sources:
my_repo:
type: gitSample
name: 示例代码源
endpoint: https://atomgit.com/flow-example/spring-boot.git
branch: master
stages:
build_stage:
name: 构建
jobs:
build_job:
name: 构建任务
steps:
command_step:
name: 执行命令
step: Command
with:
run: |
echo This is build job...
deploy_stage:
name: 部署测试环境
jobs:
deploy_job1:
name: 部署测试环境一套
# 根据指定环境名按需部署
condition: |
"${ENVNAME}" == "EVN1"
steps:
command_step:
name: 执行命令
step: Command
with:
run: echo This is deploy env 1...
deploy_job2:
name: 部署测试环境二套
# 根据指定环境名按需部署
condition: |
"${ENVNAME}" == "EVN2"
steps:
command_step:
name: 执行命令
step: Command
with:
run: echo This is deploy env 2...
Cenário de ignorar: a liberação do período sem janela requer aprovação adicional. O período de janela não requer aprovação, pule diretamente;
Em cenários de lançamento de produção, a revisão manual é necessária durante os períodos de janela sem lançamento, mas a revisão manual pode ser ignorada durante os períodos de janela.
sources:
my_repo:
type: gitSample
name: 示例代码源
endpoint: https://atomgit.com/flow-example/spring-boot.git
branch: master
stages:
build_stage:
name: 构建
jobs:
build_job:
name: 构建任务
steps:
command_step:
name: 执行命令
step: Command
with:
run: |
echo This is build job...
approve_stage:
name: 审批
jobs:
approve_job:
name: 人工卡点
# 运行分支为 master 时执行审批任务,请替换为实际的审批判断条件
condition: |
"${CI_COMMIT_REF_NAME}" == "master"
component: ManualValidate
with:
validatorType: users # 验证者类型为企业成员,通过阿里云 ID 确定审核人员
validateMethod: and # 验证方式 and:会签(须所有审批人同意)or:或签(一名审批人同意或拒绝即可)
validators:
- 290591284908846966 #通过阿里云控制台获取阿里云 ID
deploy_stage:
name: 部署
jobs:
deploy_job:
name: 部署任务
steps:
command_step:
name: 执行命令
step: Command
with:
run: echo This is deploy job...
Ignorar cenário: o aplicativo front-end não está atualizado Ignorar o build e compilar apenas o aplicativo back-end
Em alguns cenários de dependência de aplicativo front-end, o aplicativo front-end é criado primeiro para gerar arquivos estáticos, e os arquivos estáticos de front-end são referenciados ao criar o aplicativo back-end. No entanto, nem todos os requisitos envolvem modificação do aplicativo front-end. aplicativo final, para que você possa determinar se o aplicativo front-end precisa ser criado com base nas condições.
No exemplo, a variável de ambiente personalizada do pipeline "${FRONT_APP_CHANGED}" == "true" é usada como condição da tarefa. Quando o valor da variável é verdadeiro, a construção do aplicativo front-end é executada, caso contrário, é ignorada.
sources:
my_repo:
type: gitSample
name: 示例代码源
endpoint: https://atomgit.com/flow-example/spring-boot.git
branch: master
stages:
build_stage:
name: 构建
jobs:
front_build_job:
name: 前端应用构建
# 根据自定义环境变量判断是否需要执行前端应用构建
condition: |
"${FRONT_APP_CHANGED}" == "true"
steps:
command_step:
name: 执行命令
step: Command
with:
run: |
echo This is front app build job...
backend_build_job:
name: 后端应用构建
needs: front_build_job
steps:
command_step:
name: 执行命令
step: Command
with:
run: |
echo This is backend app build job...
deploy_stage:
name: 部署
jobs:
deploy_job:
name: 部署任务
steps:
command_step:
name: 执行命令
step: Command
with:
run: echo This is deploy job...
3) Suporta configurações de dependência de necessidades, suporta execução paralela entre estágios e aumenta a eficiência de execução do processo.
Cenário de dependência entre estágios: construção de teste paralelo de vários aplicativos, a tarefa de construção do aplicativo1 depende do teste de unidade do aplicativo1 e a tarefa de verificação de código do aplicativo1 é concluída, a tarefa de construção do aplicativo2 depende do teste de unidade do aplicativo2 e a tarefa de verificação de código do aplicativo2 é concluída, a fase de teste e construção entre app1 e app2 Não há interdependência e pode ser executado em paralelo para melhorar a eficiência.
sources:
my_repo1:
type: gitSample
name: app1代码源
endpoint: https://atomgit.com/flow-example/spring-boot.git
branch: master
my_repo2:
type: gitSample
name: app2代码源
endpoint: https://atomgit.com/flow-example/node-expressjs.git
branch: master
defaultWorkspace: my_repo1
stages:
build_stage:
name: 构建
jobs:
test_job1:
name: app1单元测试
steps:
command_step:
name: 执行命令
step: Command
with:
run: |
echo This is test job1...
scan_job1:
name: app1代码扫描
steps:
command_step:
name: 执行命令
step: Command
with:
run: |
echo This is scan job1...
test_job2:
name: app2单元测试
steps:
command_step:
name: 执行命令
step: Command
with:
run: |
echo This is test job2...
scan_job2:
name: app2代码扫描
steps:
command_step:
name: 执行命令
step: Command
with:
run: |
echo This is scan job2...
build_job1:
name: app1构建
# 声明依赖任务,app1构建依赖app1单元测试和代码扫描任务都完成
needs:
- test_job1
- scan_job1
steps:
command_step:
name: 执行命令
step: Command
with:
run: |
echo This is build job2...
build_job2:
name: app2构建
# 声明依赖任务,app2构建依赖app2单元测试和代码扫描任务都完成
needs:
- test_job2
- scan_job2
steps:
command_step:
name: 执行命令
step: Command
with:
run: |
echo This is build job2...
deploy_stage:
name: 部署
jobs:
deploy_job1:
name: app1部署
steps:
command_step:
name: 执行命令
step: Command
with:
run: echo This is deploy env 1...
deploy_job2:
name: app2部署
# 声明依赖任务,app2部署依赖app1部署任务完成
needs: deploy_job1
steps:
command_step:
name: 执行命令
step: Command
with:
run: echo This is deploy env 2...
4) Suporta sintaxe de modelo para atender cenários de configuração em lote de vários trabalhos com lógica igual ou semelhante
Yunxiao Flow suporta o uso de sintaxe de modelo para renderizar dinamicamente o pipeline YAML, que pode atender aos cenários de configuração em lote de vários trabalhos com a mesma lógica ou semelhante, atender aos cenários de geração dinâmica de vários trabalhos sob demanda, ajudar a reduzir o código repetitivo do pipeline YAML e orquestre multitarefas com flexibilidade. Ao mesmo tempo, ele também suporta o uso de {{ }} para definir modelos e seguir a sintaxe nativa do modelo go.
Os cenários de uso típicos incluem:
- Cenário de teste de compatibilidade de versão multi-sistema operacional, multi-SDK: atravessar ["linux", "windows"] 2 sistemas operacionais, atravessar ["10", "11", "17"] 3 versões JDK, usar o intervalo de modelo Loop para gerar 6 jobs com a mesma lógica.
- Construção e implantação dinâmicas sob demanda de vários aplicativos: O pipeline configura várias fontes de código de aplicativo, várias tarefas de construção de aplicativo e várias tarefas de implantação de aplicativo. Uma iteração envolve apenas atualizações parciais de aplicativo. variáveis como nomes de aplicativos.
Em relação a esta parte da habilidade, iremos apresentá-la em detalhes no próximo artigo.
Yunxiao Flow convida você a avaliar:
Se você estiver interessado no recurso Pipeline as Code do Yunxiao Flow, clique aqui para participar das atividades de avaliação do Yunxiao Flow e postar suas opiniões no Flow.
De 26 de abril a 15 de junho, se publicar conteúdo de avaliação, você terá a oportunidade de receber as seguintes recompensas:
- Prêmio de Participação: Durante o evento, os usuários que publicarem uma avaliação com mais de 200 palavras e passarem na avaliação receberão 50 pontos;
- Prêmios do Concurso de Excelência: 10 artigos Se o artigo de avaliação for oficialmente julgado como “excelente” durante o evento, você receberá um copo de aumento salarial personalizado da Yunxiao;
- Prêmio potencial: 5 artigos, artigos de avaliação de alta qualidade com classificação oficial, obtidos Alibaba Cloud Building Block Planet + camiseta personalizada Yunxiao + certificado de avaliação de alta qualidade;
- Melhor Prêmio: 1 artigo, o melhor artigo de revisão de acordo com a avaliação oficial, receberá Xiaomi Band Pro + bolsa de lona personalizada Cloud Effect + certificado de avaliação de alta qualidade + exibição na página inicial da comunidade por 1 semana.