Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/eylatamsouth/azure_synapse_cicd


https://github.com/eylatamsouth/azure_synapse_cicd

Last synced: 26 days ago
JSON representation

Awesome Lists containing this project

README

        

## Escolha o idioma / Choose the language
- [Português (BR)](README.md)
- [English](README_EN.md)

## Implementação de esteira CI/CD (Integração contínua/Entrega contínua)

CI/CD é um termo abrangente que cobre várias fases do DevOps. CI (integração contínua) é a prática de integrar alterações de código em um repositório várias vezes ao dia. CD tem dois significados: a entrega contínua automatiza as integrações de código, enquanto a implementação contínua libera automaticamente as compilações finais para os usuários finais. Os testes frequentes de CI/CD reduzem erros e defeitos de código, tornando-os essenciais para todo fluxo de trabalho de fluxo de trabalho.

## Conteúdos do documento
* Autores
* Visão Geral
* Pré-requisitos
* Configuração
* Uso
* Licença

## Autores:
Bruno Andrade

Raphael Freixo

Vinícius Peters

## Visão Geral

A implementação do pipeline CI/CD é necessária para agilizar e padronizar a estrutura do seu ambiente, garantindo a qualidade do código desde o ambiente de desenvolvimento até a sua implementação no ambiente de produção, o que é feito automaticamente após a aprovação dos artefatos. Este documento contém o procedimento para implementar essa estrutura de CI/CD usando o Github Actions e o ambiente Azure.

## Pré-requisitos:
* Ter um usuário de serviço com permissão de acesso ao Synapse.
* Conta no GitHub com um repositório criado.
* Permissão de LEITOR no grupo de recursos.
* Permissão de CONTRIBUIDOR no Synapse-Production.
* Conceder permissão do Service Principal.
* Ter um ambiente Synapse de Desenvolvimento (DEV) e Produção (PROD).

## Configuração
### Arquivo readme.yml

Em seu repositório Github na aba Code, clique em creating a new file.


image





No caminho de pastas, crie um arquivo chamado readme.yml na seguinte estrutura ".github/workflows/readme.yml". Após feito isso, clique em Commit Changes...


image




### Vincular o Synapse com o Github

Abra o Synapse DEV e nos ícones à esquerda selecione Manage e em seguida, clique em Git configuration. Feito isso, no meio da tela, selecione a opção de Configure.


image





Em Repository Type, selecione o GitHub e em Github repository owner coloque o nome do proprietário da conta.


image





Em Repository name, selecione o repositório desejado. Para os demais campos, deixe como está e em seguida clique em Apply.


image




### Criando uma Branch

No canto superior esquerdo, clique em New Branch[Alt+N].


image




Coloque um nome para sua branch e crie baseada na main conforme o exemplo abaixo. Em seguida, clique em Create.


image




### Workspace_publish

A branch workspace_publish será criada automaticamente após ser feito uma publicação no Synapse DEV. Para isso, vamos fazer uma publicação na mesma branch que você acabou de criar! Abra uma pipeline com uma atividade Set variable e crie uma variável. Após criado, clique em Commit all.


image




clique em OK.


image





Feito isso, precisará ser criado um Pull Request. Para isso, clique no nome da sua branch no canto superior esquerdo e procure por Create pull request[Alt+P].


image





OBS: Nos passos a seguir, só é possível aprovar um pull request caso você seja o aprovador. Caso contrário, faça uma requisição para o aprovador.



Abra seu repositório Github, clique em Create pull request ou Compare & pull request como mostra a imagem abaixo.


image




Vai abrir uma aba Open a pull request. Clique em Create pull request.


image




Merge pull request.


image





Confirm Merge.

image




Publish.


image




### Localizando Arquivo syn-deploy-yml

O conteúdo do arquivo syn-deploy.yml será usado para as atividades abaixo.



image



### Configurações Repositório Github

Dentro do seu repositório do GitHub, selecione a aba Code e procure o arquivo syn-deploy.yml nas pastas ao lado, copie todo código e cole no arquivo que você acabou de criar seguindo o caminho mostrado na imagem acima.


image





E no final deve ser colocado o arquivo com os parâmetros de ambiente, no caso o arquivo syn-deploy.yml deve ser posto seguindo o path da imagem mostrada acima.

### Configurando arquivo syn-deploy.yml

Dentro do arquivo syn-deploy.yml, você deve adequar as três linhas TemplateFile,ParametersFile e OverrideArmParameters com o nome do seu workspace, como mostra na imagem abaixo destacado em vermelho. Observe que, o arquivo contém linhas que serão valores herdados do Github Secrets(considere os que estão com "${{secrets.____}}). Esses serão os secrets que terão que ser atribuídos no Github.


image





Esses serão os parâmetros que serão herdados no Github:

* WORKSPACENAME
* RESOURCEGROUP
* CLIENTID
* CLIENTSECRET
* SUBSCRIPTIONID
* TENANTID

### Configurando Secrets Github

Vá em Settings.


image





Ao lado esquerdo da tela, vá em Secrets and variables e Actions. Na aba Secrets, selecione New repository secret. Nesse repositório que será atribuído o valor das variáveis que serão herdadas no arquivo syn-deploy.yml.


image





Vale ressaltar que todos esses parâmetros devem ser preenchidos com os dados do ambiente de Produção.

Atribua o nome do secret e o valor. Nesse caso, será atribuído para cada um desses:

* WORKSPACENAME
* RESOURCEGROUP
* CLIENTID
* CLIENTSECRET
* SUBSCRIPTIONID
* TENANTID

Exemplo:

Name = WORKSPACENAME

Secret = nome do seu workspace

Em seguida, clique em Add secret.


image




### Como encontrar cada um dos parâmetros

Para os parâmetros:

* WORKSPACENAME

* RESOURCEGROUP

* SUBSCRIPTIONID

No portal Azure, procure pelo seu Synapse workspace de produção. Na aba da esquerda ao lado, vá em Overview e encontrará as informações dos três parâmetros listados acima.


image





Para os parâmetros :

CLIENTID

CLIENTSECRET

TENANTID

Deverá ser criado um Service Principal.Na barra de pesquisa digite App Registrations e selecione.


image





Feito isso, clique em +New registration.


image





Após isso, atribua um nome qualquer e clique em Register.


image




Após criado, você será levado para a página Overview do Service Principal. Aqui, você encontrará o CLIENTID e TENANTID.


image





Para o CLIENTSECRET, na barra de opções lateral esquerda selecione a opção Certificates & secrets. Após isso, clique em + New client secret.


image





Em Description coloque uma descrição qualquer ou um nome. Em seguida, clique em Add .


image





Após criado aparecerá na coluna Value o valor do CLIENTSECRET. Grave esse valor, pois ele só aparecerá uma vez e não será possível ver novamente!


image




### Atribuindo permissões ao Service Principal

Com todos os parâmetros preenchidos dos passos anteriores, entre no seu workspace do Synapse de Produção e vá nas opções de Access Control(IAM) e clique em Role assignment. Procure mais acima a opção + Add.


image





Será atribuído a permissão de Reader do Service Principal ao resource group de produção. Para isso, selecione a primeira opção de Reader e em seguida em Next.


image





Na aba Members, clique na opção + Select members. Utilize a barra de pesquisa ao lado para escolher o usuário e clique em Select.


image





Feito isso, clique em Review + assign.


image





Dado a permissão de Reader, repita o passo anterior, mas agora dê a permissão de Contributor ao workspace de produção. Clique novamente em Role Assigment e depois em +Add. Selecione a aba Privileged Admnistrator roles, e clique em Contributor. Em seguida, clique em Next.


image





Em Members, clique em em +Select members e selecione o usuário para aplicar a permissão de Contributor.


image





Clique em Review + assign.


image





Por fim, abra o Synpase Studio do Synapse de Produção.


image





Vá até a opção Manage na lateral esquerda e Access control. Clique em + Add.


image





Selecione a função Synapse Artifact Publisher. Na barra de baixo você deve selecionar o usuário Service Principal anteriormente criado e clicar em Apply.


image




### Configurar Azure Key Vault

Deverá ser criado um Key vault para os dois ambientes DEV e PROD.

No portal Azure, vá até a barra de pesquisa e digite por Key Vaults.


image





Clique em +Create.


image





Após isso, preencha as informações de criação do key vault atribuindo o resource group que foi criado no Synapse de Produção. Em seguida, vá até Review+Create.


image





No Key Vault de produção, clique na lateral esquerda em Access Control(IAM), clique em +Adde Add role assignment.


image





Em Role Assignments procure por Key Vault Secrets Officer. Em seguida, clique em Next.


image





Feito isso, vá em Members e na opção Assign access to selecione Managed identity. Depois de selecionado, clique em +Select Members.

Em Managed Identity selecione Synapse workspace(). Depois disso, selecione seu ambiente Synapse de Produção.


image




### Configurar Linked Service

Em seu Workspace de DEV, vá até Manage e Linked services. Clique em + New.


image





Na barra de pesquisa pesquise por Azure Key Vault e clique em Continue.


image





Nome: Atribua um nome para o Key Vault.

Assinatura do Azure: Selecione sua assinatura.

Nome do Azure Key Vault: Selecione o Key Vault criado do ambiente de produção.

Para os demais, deixe padrão. Após isso, clique em Commit.


image





O próximo passo você precisará publicar algo novamente em DEV com o Linked Service devidamente criado( repita o passo do tópico Workspace_publish).

Após isso você deverá entrar em seu arquivo TemplateWorkspace.json e buscar o nome do KV que foi gerado automaticamente como mostra abaixo:


image





Copie o "LS_KV_DEV_properties_typeProperties_baseUrl" e o defaultValue. Eles serão utilizados no próximo passo para a criação do arquivo ParameterPRD.json.

### Criando arquivo ParameterPRD.json


No seu repositório Github, crie um arquivo chamado ParameterPRD.json dentro da pasta do seu workspace de DEV e cole os parâmetros copiados anteriormente no seguinte formato:


image





O nome do arquivo ParameterPRD.json, certifique-se de que o seja exatamente igual ao nome que está no arquivo syn-deploy.yml em OverrideArmParameters.


image




## Uso

Em sua branch no ambiente de Desenvolvimento caso haja mudanças, o processo para levar para produção irá seguir esses passos:

Realize um commit com suas mudanças. No exemplo abaixo, iremos utilizar a "Pipeline 2" na branch produto:


image





Crie um Pull request para branch principal. No exemplo é a main branch


image





Após ter seu Pull request aprovado, a main branch irá possuir todas as suas alterações. Portanto, o responsável pelo Pull Request, deverá clicar em Publish como mostra a imagem abaixo:


image





Aguarde até que a mensagem de sucesso apareça em sua tela:


image





Após isso, entre no ambiente de produção/ e você verá suas alterações no ambiente de produção:


image





Esteira CI/CD finalizada!