Compartilhar via


Tutorial: Usar o Armazenamento do Azure para compilar 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 recomendada no momento de integrar o Jenkins aos serviços do Azure. Para obter mais informações, consulte o artigo plug-ins do Jenkins para o Azure.

Este artigo ilustra como usar o armazenamento de blobs como um repositório de artefatos de build 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 build. Um dos cenários em que você acha essa solução útil é quando você está codificando em um ambiente de desenvolvimento ágil (usando Java ou outras linguagens), os builds são executados com base na integração contínua e você precisa de um repositório para seus artefatos de build, para que você possa, por exemplo, compartilhá-los com outros membros da organização, seus clientes ou manter um arquivo morto. 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 necessários da seguinte maneira:

    • Variante: selecione Nome de usuário com senha.
    • Nome de usuário: especifique a appId da entidade de serviço.
    • Senha: especifique 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 de pipeline cria vários arquivos e carrega os arquivos em 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 marcadores de posição 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
                '''
              }
            }
          }
        }
      }
    }
    
  4. Selecione Compilar Agora para executar myjob.

  5. Verifique a saída do console para ver 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ê precisará conceder acesso no nível do contêiner: ValidationError: You do not have the required permissions needed to perform this operation. Se receber essa mensagem de erro, consulte os seguintes artigos para resolver:

  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, na lista de blobs.
    6. Você deverá ver os dois arquivos a seguir: hello.txt e date.txt.
    7. Copie a URL de qualquer um desses itens e cole-a no navegador.
    8. Você verá o arquivo de texto carregado como um artefato de compilação.

    pontos-chave:

    • 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 marcadores 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
              '''   
            }
          }
        }
      }
    }
    
  2. Depois de executar um build, verifique a saída do console de histórico de build. Como alternativa, você também pode examinar seu local de download para ver se os blobs esperados foram baixados com êxito.

Próximas etapas