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

Adicionar a credencial do Azure necessária para executar a CLI do Azure

  1. Navegue até o portal do Jenkins.

  2. No menu, selecione Gerenciar Jenkins.

  3. Selecione Gerenciar Credenciais.

  4. Selecione o domínio global.

  5. Selecione Adicionar Credenciais.

  6. 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.
  7. 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.

  1. No painel do Jenkins, selecione Novo Item.

  2. Dê ao trabalho o nome myjob, selecione Pipeline e selecione OK.

  3. 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
                '''
              }
            }
          }
        }
      }
    }
    
  4. Selecione Compilar Agora para executar myjob.

  5. 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.

  6. 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.

  7. Após a conclusão bem-sucedida do trabalho, examine os artefatos de build abrindo o blob público:

    1. Entre no portal do Azure.
    2. Selecione Armazenamento.
    3. Selecione o nome da conta de armazenamento que você usou para o Jenkins.
    4. Selecione Contêineres.
    5. Selecione o contêiner chamado myjob dentro da lista de blobs.
    6. Você deve ver estes dois arquivos: hello.txt e date.txt.
    7. Copie a URL de um desses itens e cole-a em seu navegador.
    8. 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.

  1. 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
              '''   
            }
          }
        }
      }
    }
    
  2. 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.

Próximas etapas