Sdílet prostřednictvím


Spravované fondy DevOps pro Azure DevOps (Preview)

S radostí oznamujeme verzi Preview spravovaných fondů DevOps, která je navržená tak, aby pomohla vývojovým a platformovým technickým týmům rychle nastavit a spravovat vlastní fondy DevOps.

Kromě toho jsme vylepšili rozhraní API pro odhad využití měřiče pro GitHub Advanced Security, která poskytují nové funkce, které vám pomůžou identifikovat uživatele.

Podrobnosti najdete v poznámkách k verzi.

Pokročilé zabezpečení GitHubu pro Azure DevOps

Azure Pipelines

Pokročilé zabezpečení GitHubu pro Azure DevOps

Rozhraní API pro pokročilé využití měřiče zabezpečení teď vrací identity uživatelů.

Abychom vám pomohli identifikovat uživatele rozšířeného zabezpečení, rozhraní API odhadu využití měřiče teď vrací identitu Azure DevOps každého uživatele, včetně jejich zobrazovaného jména, CUID, identifikátoru e-mailu a popisovače identity. Tato funkce je dostupná na úrovních organizace, projektu a úložiště. Pokud chcete použít tento nový koncový bod, syntaxe se podobá existujícím koncovým bodům rozhraní API využití měřiče, které se připojují /details ke koncovému bodu:

  • Na úrovni organizace: GET https://advsec.dev.azure.com/{organization}/_apis/management/meterUsageEstimate/details?api-version=7.2-preview.1
  • Na úrovni projektu: GET https://advsec.dev.azure.com/{organization}/{project}/_apis/management/meterUsageEstimate/details?api-version=7.2-preview.1
  • Na úrovni úložiště: GET https://advsec.dev.azure.com/{organization}/{project}/_apis/management/repositories/{repository}/meterUsageEstimate/details?api-version=7.2-preview.1

Kontrola kódu Pokročilého zabezpečení GitHubu pro projekty C# a Java bez sestavení

Kontrola kódu pomocí CodeQL zahrnuje spouštění dotazů na databáze, které představují kód v úložišti pro jeden jazyk. Pro zkompilované jazyky, jako jsou C/C++, C#, Go, Java a Swift, to obvykle vyžaduje vytvoření kódu jako první.

CodeQL, modul pro statickou analýzu za GitHub Advanced Security pro Azure DevOps, teď ale může kontrolovat projekty C# a Java bez nutnosti sestavení. Pokud je režim sestavení nastavený na none ( žádný), databáze CodeQL se vygeneruje přímo ze základu kódu a vynechá krok sestavení.

Pro všechny kompilované jazyky je výchozí režim sestavení "ruční". Pro C# a Javu ale můžete změnit režim sestavení na "none".

Režim sestavení můžete nakonfigurovat během instalace AdvancedSecurity-Codeql-Init@1. Podrobné pokyny ke konfiguraci skenování kódu v GitHub Advanced Security pomocí Azure DevOps najdete v tématu Nastavení kontroly kódu.

Úvaha:

  • Pokud je vybrán žádný a jazyk jiný než podporovaný jazyk, který je v souladu s jazyky C# nebo Java, nemusí úloha kanálu fungovat podle očekávání.

  • Režim sestavení none v současné době funguje ve spojení s jinými interpretovanými jazyky (např. JavaScript, Python, Ruby).

  • Platný příklad: C# a JavaScript s režimem sestavení nastaveným na none (JavaScript v interpretovaném jazyce)

  • Neplatný příklad: C#, JavaScript a Swift s režimem sestavení nastaveným na none (Swift není podporován v režimu sestavení none).

Snímek obrazovky AdvancedSecurity-Codeql

Azure Pipelines

Spravované fondy DevOps (Preview)

Technické týmy excelují, když se můžou soustředit na psaní kódu pro vývoj aplikací a služeb pro své uživatele. V praxi je však značné množství času často vynaloženo na správu jiných úloh, jako je údržba infrastruktury DevOps.

S radostí oznamujeme verzi Public Preview spravovaných fondů DevOps (MDP) – novou funkci Azure DevOps, která je navržená tak, aby pomohla vývojovým a platformovým technickým týmům nasadit vlastní fondy DevOps přizpůsobené jejich jedinečným potřebám. MDP kombinuje flexibilitu agentů škálovací sady s snadnou údržbou spojenou s agenty hostovanými Microsoftem, což týmům umožňuje stanovit konzistenci a osvědčené postupy při optimalizaci výkonu, zabezpečení, dodržování předpisů a efektivity nákladů.

Mezi klíčové výhody spravovaných fondů DevOps patří:

  • Hostované vaším jménem: MDP je hostováno a spravováno Microsoftem, přičemž virtuální počítače, které využívají agenty vytvořené a spravované v rámci předplatných Azure vlastněných Microsoftem.
  • Čas strávený ve správě: MDP výrazně zkracuje dobu strávenou správou agentů, zejména těch, které jsou založené na místní infrastruktuře nebo ručně udržovaných systémech.
  • Specifické fondy: Díky snadnému vytváření nových fondů můžou organizace snadno vytvářet více fondů specifických pro tým nebo úlohy.
  • Fakturace DevOps: MDP pomáhá optimalizovat vyúčtování DevOps týmu prostřednictvím mnoha funkcí. Usnadňuje týmům nalezení optimální rovnováhy mezi QoS/výkonem a náklady fondu.
  • Škálovatelné: MDP se škáluje na 1 000 agentů v jednom fondu.

Týmy můžou vytvářet fondy s rychlými počátečními imagemi , které obsahují stejný software, který se nachází v agentech hostovaných Microsoftem, nebo s obrázky, které tým vytvořil s požadavky, které jsou pro svůj scénář jedinečné.

Další informace o spravovaných fondech DevOps najdete v našem blogovém příspěvku nebo jeho dokumentaci.

Úlohy Azure Pipelines používají Node 20

Většina úloh kanálu používá Node jako spouštěč. Úloha Azure Pipelines, která jako spouštěč používá NodeJS, teď všechny používají NodeJS 20. Autoři rozšíření úkolů by měli aktualizovat své úkoly tak, aby používali Node 20. Pokyny k upgradu najdete v tématu Jak můžu upgradovat vlastní úlohu na nejnovější uzel?

Vytvoření oprávnění kanálu buildu

Abychom zvýšili zabezpečení kanálu, zavádíme nové oprávnění na Create build pipelineúrovni kanálů.

Snímek obrazovky s oprávněním k vytvoření kanálu buildu

Edit build pipeline Dříve bylo oprávnění nutné k vytvoření nebo úpravě kanálu. To představovalo bezpečnostní riziko, protože všem uživatelům umožnilo vytvářet kanály, aby mohli také upravovat kanály, které nevytvořili. Zabránilo tomu, že by to bylo časově náročné.

Pokud chcete vylepšit prostředí kanálu bez ohrožení zabezpečení, všichni uživatelé a skupiny s Edit build pipeline oprávněním teď také obdrží Create build pipeline oprávnění.

Po vytvoření kanálu se autor udělí Edit build pipeline oprávnění.

V případě lepšího Edit build pipeline zabezpečení kanálu se můžete rozhodnout odebrat oprávnění ze skupin uživatelů, jako jsou přispěvatelé a čtenáři. Tím se zajistí, že ho ve výchozím nastavení může upravovat jenom tvůrce kanálu.

Poznámka:

Oprávnění upravit kanál buildu nezabrání ostatním v úpravách kanálu YAML. Chrání pouze vlastnosti kanálu před úpravami.

U nových projektů budou mít Create build pipeline oprávnění také uživatelé a skupiny s Edit build pipeline oprávněním. V budoucnu se to může změnit.

Exkluzivní kontrola zámku na úrovni fáze

Některé případy použití vyžadují, aby kanál přistupoval ke konkrétnímu prostředku pouze jednou v daném okamžiku. Abychom tento případ podpořili, máme kontrolu výhradního zámku .

Podobná situace nastane, když ke fázi v libovolném okamžiku má přistupovat pouze jedno spuštění kanálu. Pokud máte například fázi, která se nasadí do skupiny prostředků Azure, můžete chtít zabránit souběžné aktualizaci stejné skupiny prostředků několika spuštěním kanálu. V současné době to vyžaduje použití proxy prostředku, jako je prostředí, a umístění kontroly výhradního zámku do tohoto prostředí. Tento přístup může být časově náročný, zvyšuje složitost a zvyšuje úsilí o údržbu.

V tomto sprintu zavádíme podporu pro určení výhradního zámku na úrovni fáze. Pokud máte fázi s ID a zadejte její lockBehavior vlastnost, zámek se pro tuto fázi vytvoří automaticky. Chování sequential zůstává konzistentní pro zámky na úrovni prostředků i na úrovni fáze. runLatest Chování se ale liší, protože zruší runLatest pouze sestavení pro stejnou větev, ne pro všechny větve kanálu.

Informace o šablonách při spuštění kanálu

Aktualizovali jsme spuštění kanálů – získání rozhraní REST API s informacemi o rozšířených šablonách a zahrnutých do spuštění kanálu.

Představte si například, že máte následující kód kanálu YAML:

extends:
  template: template-stages.yml@templates
  parameters:
    stages:
    - stage: deploy
      jobs:
      - job:
        steps:
        - template: template-step.yml

Nové rozhraní REST API má následující nové vlastnosti:

"yamlDetails":
    {
        "extendedTemplates":
        [
            {
                "yamlFile": "template-stages.yml",
                "repoAlias": "templates"
            }
        ],
        "includedTemplates":
        [
            {
                "yamlFile": "template-step.yml",
                "repoAlias": "templates"
            }
        ],
        "rootYamlFile":
        {
            "ref": "refs/heads/main",
            "yamlFile": "azure-pipelines.yml",
            "repoAlias": "self"
        },
        "expandedYamlUrl": "https://dev.azure.com/fabrikamfiber/161cfeeb-d9fd-395c-917b-fec46db44fbb/_apis/build/builds/39224/logs/1"
    }

Ručně aktivované fáze kanálu YAML

Často dostáváme žádosti o ručně aktivované fáze kanálu YAML. To je užitečné v případech, kdy chcete sjednocený kanál, ale nechcete, aby se vždy spustil do dokončení.

Kanál může například zahrnovat fáze sestavení, testování, nasazení do přípravného prostředí a nasazení do produkčního prostředí. Můžete chtít, aby se všechny fáze spouštěly automaticky s výjimkou produkčního nasazení, které chcete aktivovat ručně, až na to, že jsou připravené.

V tomto sprintu přidáváme podporu pro ručně aktivované fáze kanálu YAML. Pokud chcete tuto funkci použít, musíte tuto vlastnost přidat trigger: manual do fáze.

Podívejte se na následující příklad kanálu YAML:

stages:
- stage: stage_WUS1
  displayName: Deploy WUS1
  trigger: manual
  jobs:
  - job: DeployJob
    steps:
    - task: AzureCLI@2
      inputs:
        azureSubscription: 'AzureWIF'
        scriptType: 'ps'
        scriptLocation: 'inlineScript'
        inlineScript: 'Write-host ''hello, world'''     
- stage: stage_WUS2
  displayName: Deploy WUS2
  trigger: manual
  jobs:
  - job: DeployJob
    steps:
    - task: AzureCLI@2
      inputs:
        azureSubscription: 'AzureWIF'
        scriptType: 'ps'
        scriptLocation: 'inlineScript'
        inlineScript: 'Write-host ''hello, world'''

Při spuštění tohoto kanálu je prostředí následující:

Snímek obrazovky s ručně aktivovanými fázemi kanálu YAML

Ručně aktivované fáze nemají žádné závislosti a je možné je kdykoli spustit. Spuštění kanálu se dokončí, když se spustí pouze ručně aktivované fáze.

Další kroky

Poznámka:

Tyto funkce se budou zavádět během následujících dvou až tří týdnů.

Přejděte na Azure DevOps a podívejte se na ně.

Jak poskytnout zpětnou vazbu

Rádi bychom slyšeli, co si o těchto funkcích myslíte. Pomocí nabídky nápovědy můžete nahlásit problém nebo poskytnout návrh.

Vytvoření návrhu

Můžete také získat rady a své otázky zodpovězené komunitou ve službě Stack Overflow.

Díky,

Silviu Andrica