Tutorial: Usar o Armazenamento do Azure para criar artefatos
Importante
Muitos serviços do Azure têm plug-ins Jenkins. Alguns desses plug-ins estarão sem suporte a partir de 29 de fevereiro de 2024. A CLI do Azure é a maneira atualmente recomendada de integrar o Jenkins aos serviços do Azure. Para obter mais informações, consulte o artigo Jenkins plug-ins for Azure.
Este artigo ilustra como usar o armazenamento de Blob como um repositório de artefatos de compilação criados por uma solução de integração contínua (CI) Jenkins ou como uma fonte de arquivos baixáveis para serem usados em um processo de compilação. Um dos cenários em que você acharia essa solução útil é quando você está codificando em um ambiente de desenvolvimento ágil (usando Java ou outras linguagens), as compilações estão sendo executadas com base na integração contínua e você precisa de um repositório para seus artefatos de compilação, para que você possa, por exemplo, compartilhá-los com outros membros da organização, seus clientes ou manter um arquivo. Outro cenário é quando o próprio trabalho de compilação requer outros arquivos, por exemplo, dependências para baixar como parte da entrada de compilação.
Pré-requisitos
- Assinatura do Azure: se você não tiver 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 Jenkins.
No menu, selecione Gerenciar Jenkins.
Selecione Gerenciar credenciais.
Selecione o domínio global .
Selecione Adicionar credenciais.
Preencha os campos obrigatórios da seguinte forma:
- Tipo: Selecione Nome de usuário com senha.
- Nome de usuário: especifique o
appId
da entidade de serviço. - Senha: especifique o
password
da entidade de serviço. - ID: especifique um identificador de credencial, como
azuresp
. - Descrição: opcionalmente, inclua uma descrição significativa para o seu ambiente.
Selecione OK para criar a credencial.
Criar um trabalho de pipeline para carregar artefatos de compilação
As etapas a seguir guiam você na criação de um trabalho de pipeline. O trabalho de pipeline cria vários arquivos e carrega os arquivos em sua conta de armazenamento usando a CLI do Azure.
No painel Jenkins, selecione Novo Item.
Nomeie o trabalho myjob, selecione Pipeline e, em seguida, selecione OK.
Na seção Pipeline da configuração do trabalho, selecione Script de pipeline e cole o seguinte em Script. Edite os espaços reservados para corresponder 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 o status da saída do console. Quando a ação pós-compilação carrega os artefatos de compilação, 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 receber esta 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 construção abrindo o blob público:
- Inicie sessão no portal do Azure.
- Selecione Armazenamento.
- Selecione o nome da conta de armazenamento que você usou para Jenkins.
- Selecione Contêineres.
- Selecione o contêiner chamado myjob, dentro da lista de blobs.
- Você deve ver os dois arquivos a seguir: olá.txt e data.txt.
- Copie o URL de qualquer um destes itens e cole-o no navegador.
- Você vê o arquivo de texto que foi carregado como um artefato de compilação.
Pontos principais:
- Os nomes de contêiner e os nomes de blob são minúsculos (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 de pipeline e cole o seguinte em Script. Edite os espaços reservados para corresponder 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 uma compilação, verifique a saída do console do histórico de compilação. Como alternativa, você também pode olhar para o local do download para ver se os blobs esperados foram baixados com sucesso.