Sdílet prostřednictvím


Kurz: Použití Služby Azure Storage pro artefakty sestavení

Důležité

Mnoho služeb Azure má moduly plug-in Jenkinse. Některé z těchto modulů plug-in budou od 29. února 2024 mimo podporu. Azure CLI je aktuálně doporučený způsob integrace Jenkinse se službami Azure. Další informace najdete v článku Moduly plug-in Jenkins pro Azure.

Tento článek ukazuje, jak používat úložiště objektů blob jako úložiště artefaktů sestavení vytvořených řešením kontinuální integrace Jenkinse nebo jako zdroj souborů ke stažení, které se mají použít v procesu sestavení. Jedním ze scénářů, ve kterých najdete toto řešení užitečné, je, když kódujete v agilním vývojovém prostředí (pomocí Javy nebo jiných jazyků), sestavení běží na základě kontinuální integrace a potřebujete úložiště pro artefakty sestavení, abyste je mohli například sdílet s ostatními členy organizace, zákazníky nebo udržovat archiv. Dalším scénářem je situace, kdy samotná úloha sestavení vyžaduje další soubory, například závislosti ke stažení v rámci vstupu sestavení.

Požadavky

Přidání přihlašovacích údajů Azure potřebných ke spuštění Azure CLI

  1. Přejděte na portál Jenkins.

  2. V nabídce vyberte Spravovat Jenkinse.

  3. Vyberte Spravovat přihlašovací údaje.

  4. Vyberte globální doménu.

  5. Vyberte Přidat přihlašovací údaje.

  6. Vyplňte požadovaná pole následujícím způsobem:

    • Druh: Vyberte uživatelské jméno s heslem.
    • Uživatelské jméno: Zadejte appId instanční objekt.
    • Heslo: Zadejte password instanční objekt.
    • ID: Zadejte identifikátor přihlašovacích údajů, například azuresp.
    • Popis: Volitelně můžete zahrnout smysluplný popis vašeho prostředí.
  7. Vyberte OK a vytvořte přihlašovací údaje.

Vytvoření úlohy kanálu pro nahrání artefaktů sestavení

Následující kroky vás provedou vytvořením úlohy kanálu. Úloha kanálu vytvoří několik souborů a nahraje soubory do účtu úložiště pomocí Azure CLI.

  1. Na řídicím panelu Jenkinse vyberte Nová položka.

  2. Pojmenujte úlohu myjob, vyberte Kanál a pak vyberte OK.

  3. V části Kanál konfigurace úlohy vyberte skript kanálu a vložte do skriptu následující. Upravte zástupné symboly tak, aby odpovídaly hodnotám vašeho prostředí.

    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. Vyberte Sestavit a spusťte moje úlohy.

  5. Zkontrolujte stav výstupu konzoly. Když akce po sestavení nahraje artefakty sestavení, stavové zprávy pro úložiště Azure se zapíšou do konzoly.

  6. Pokud dojde k chybě podobné následující, znamená to, že potřebujete udělit přístup na úrovni kontejneru: ValidationError: You do not have the required permissions needed to perform this operation. Pokud se zobrazí tato chybová zpráva, projděte si následující články, které je potřeba vyřešit:

  7. Po úspěšném dokončení úlohy prozkoumejte artefakty sestavení otevřením veřejného objektu blob:

    1. Přihlaste se k portálu Azure.
    2. Vyberte Úložiště.
    3. Vyberte název účtu úložiště, který jste použili pro Jenkinse.
    4. Vyberte kontejnery.
    5. V seznamu objektů blob vyberte kontejner myjob s názvem myjob.
    6. Měly by se zobrazit následující dva soubory: hello.txt a date.txt.
    7. Zkopírujte adresu URL některé z těchto položek a vložte ji do prohlížeče.
    8. Zobrazí se textový soubor, který se nahrál jako artefakt sestavení.

    Klíčové body:

    • Názvy kontejnerů a názvy objektů blob jsou v úložišti Azure malá písmena (a rozlišují se malá a velká písmena).

Vytvoření úlohy kanálu ke stažení ze služby Azure Blob Storage

Následující kroky ukazují, jak nakonfigurovat úlohu kanálu pro stahování položek ze služby Azure Blob Storage.

  1. V části Kanál konfigurace úlohy vyberte skript kanálu a vložte do skriptu následující příkaz. Upravte zástupné symboly tak, aby odpovídaly hodnotám vašeho prostředí.

    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. Po spuštění sestavení zkontrolujte výstup konzoly historie sestavení. Případně se můžete podívat na umístění pro stažení a zjistit, jestli se objekty blob, které jste očekávali, úspěšně stáhly.

Další kroky