Tutorial: Usar o Armazenamento do Azure para criar artefatos
Importante
Muitos serviços do Azure têm plug-ins do Jenkins. Alguns desses plug-ins ficarão sem suporte a partir de 29 de fevereiro de 2024. A CLI do Azure é a maneira atualmente recomendada para integrar o Jenkins aos serviços do Azure. Para obter mais informações, confira o artigo Plug-ins do Jenkins para Azure.
Este artigo ilustra como usar o armazenamento de Blob como um repositório de artefatos de criação criados por uma solução de integração contínua (CI) Jenkins ou como uma fonte de arquivos para download a serem usados em um processo de criação. Um dos cenários em que você consideraria essa solução útil é quando você está codificando em um ambiente de desenvolvimento ágil (usando Java ou outras linguagens), compilações são executadas com base em integração contínua e você precisa de um repositório para seus artefatos de construção. você poderia, por exemplo, compartilhá-los com outros membros da organização, seus clientes ou manter um arquivo. Outro cenário é quando o seu próprio trabalho de compilação requer outros arquivos, por exemplo, dependências a serem baixadas como parte da entrada da compilação.
Pré-requisitos
- Assinatura do Azure: Caso você não tenha uma assinatura do Azure, crie uma conta gratuita do Azure antes de começar.
- Servidor Jenkins: se você não tiver um servidor Jenkins instalado, crie um servidor Jenkins no Azure.
- CLI do Azure: instale a CLI do Azure (versão 2.0.67 ou superior) no servidor Jenkins.
- Conta de armazenamento do Azure: se você ainda não tiver uma conta de armazenamento, crie uma Conta de Armazenamento.
Adicionar a credencial do Azure necessária para executar a CLI do Azure
Navegue até o portal do Jenkins.
No menu, selecione Gerenciar Jenkins.
Selecione Gerenciar Credenciais.
Selecione o domínio global.
Selecione Adicionar Credenciais.
Preencha os campos obrigatórios da seguinte maneira:
- Tipo: Selecione Nome de usuário com senha.
- Nome de usuário: especifique o
appId
da entidade de serviço. - Senha: especifique a
password
da entidade de serviço. - ID: especifique um identificador de credencial, como
azuresp
. - Descrição: opcionalmente, inclua uma descrição significativa para seu ambiente.
Selecione OK para criar a credencial.
Criar um trabalho de pipeline para carregar artefatos de build
As etapas a seguir o orientarão na criação de um trabalho de pipeline. O trabalho do pipeline cria vários arquivos e os carrega para a sua conta de armazenamento usando a CLI do Azure.
No painel do Jenkins, selecione Novo Item.
Dê ao trabalho o nome myjob, selecione Pipeline e selecione OK.
Na seção Pipeline da configuração do trabalho, selecione Script do pipeline e cole o indicado a seguir no Script. Edite os espaços reservados para que correspondam aos valores do seu ambiente.
pipeline { agent any environment { AZURE_SUBSCRIPTION_ID='99999999-9999-9999-9999-999999999999' AZURE_TENANT_ID='99999999-9999-9999-9999-999999999999' AZURE_STORAGE_ACCOUNT='myStorageAccount' } stages { stage('Build') { steps { sh 'rm -rf *' sh 'mkdir text' sh 'echo Hello Azure Storage from Jenkins > ./text/hello.txt' sh 'date > ./text/date.txt' } post { success { withCredentials([usernamePassword(credentialsId: 'azuresp', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) { sh ''' echo $container_name # Login to Azure with ServicePrincipal az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET -t $AZURE_TENANT_ID # Set default subscription az account set --subscription $AZURE_SUBSCRIPTION_ID # Execute upload to Azure az storage container create --account-name $AZURE_STORAGE_ACCOUNT --name $JOB_NAME --auth-mode login az storage blob upload-batch --destination ${JOB_NAME} --source ./text --account-name $AZURE_STORAGE_ACCOUNT # Logout from Azure az logout ''' } } } } } }
Selecione Compilar Agora para executar myjob.
Examine a saída do console para o status. Quando a ação pós-build carrega os artefatos de build, as mensagens de status para o armazenamento do Azure são gravadas no console.
Se você encontrar um erro semelhante ao seguinte, isso significa que você precisa conceder acesso no nível do contêiner: Se você receber essa mensagem de erro, consulte os seguintes artigos para resolver:
ValidationError: You do not have the required permissions needed to perform this operation.
Após a conclusão bem-sucedida do trabalho, examine os artefatos de build abrindo o blob público:
- Entre no portal do Azure.
- Selecione Armazenamento.
- Selecione o nome da conta de armazenamento que você usou para o Jenkins.
- Selecione Contêineres.
- Selecione o contêiner chamado myjob dentro da lista de blobs.
- Você deve ver estes dois arquivos: hello.txt e date.txt.
- Copie a URL de um desses itens e cole-a em seu navegador.
- Você verá o arquivo de texto carregado como um artefato de compilação.
Pontos principais:
- Os nomes de contêineres e de blob são escritos em letra minúscula (e diferenciam maiúsculas de minúsculas) no armazenamento do Azure.
Criar um trabalho de pipeline para baixar do Armazenamento de Blobs do Azure
As etapas a seguir mostram como configurar um trabalho de pipeline para baixar itens do Armazenamento de Blobs do Azure.
Na seção Pipeline da configuração do trabalho, selecione Script do pipeline e cole o indicado a seguir no Script. Edite os espaços reservados para que correspondam aos valores do seu ambiente.
pipeline { agent any environment { AZURE_SUBSCRIPTION_ID='99999999-9999-9999-9999-999999999999' AZURE_TENANT_ID='99999999-9999-9999-9999-999999999999' AZURE_STORAGE_ACCOUNT='myStorageAccount' } stages { stage('Build') { steps { withCredentials([usernamePassword(credentialsId: 'azuresp', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) { sh ''' # Login to Azure with ServicePrincipal az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET -t $AZURE_TENANT_ID # Set default subscription az account set --subscription $AZURE_SUBSCRIPTION_ID # Execute upload to Azure az storage blob download --account-name $AZURE_STORAGE_ACCOUNT --container-name myjob --name hello.txt --file ${WORKSPACE}/hello.txt --auth-mode login # Logout from Azure az logout ''' } } } } }
Depois de executar um build, verifique a saída do console de histórico de build. Como alternativa, você também pode examinar a sua localização de download para ver se os blobs esperados foram baixados com êxito.