Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Azure DevOps Services | Azure DevOps Server
Zarządzanie zmiennymi w Azure Pipelines jest kluczowe dla zachowania elastyczności i bezpieczeństwa w procesach CI/CD. W tym artykule pokazano, jak używać interfejsu wiersza poleceń usługi Azure DevOps (CLI) do tworzenia i zarządzania zarówno zmiennymi tajnymi, jak i jawnymi w grupie zmiennych Azure Pipelines. Korzystając z grup zmiennych, można centralizować zarządzanie zmiennymi i zapewnić bezpieczne obsługę poufnych informacji.
Korzystając z przykładu w tym artykule, dowiesz się, jak wykonywać następujące działania:
- Zdefiniuj rurociąg Azure Pipelines za pomocą pliku YAML przechowywanego w GitHub.
- Utwórz grupę zmiennych zawierającą zarówno zmienne tajne, jak i niesekret.
- Uruchom potok za pomocą interfejsu wiersza polecenia Azure DevOps i monitoruj przebieg oraz jego wyniki.
Uwaga
W tym przykładzie przedstawiono funkcjonalność interfejsu wiersza polecenia usługi Azure DevOps z grupami zmiennych. Aby zwiększyć bezpieczeństwo, zdefiniuj zmienne w grupach zmiennych w interfejsie użytkownika potoków lub połącz grupę zmiennych z tajnymi w usłudze Azure Key Vault.
Wymagania wstępne
Użyj środowiska Bash w usłudze Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Get started with Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj interfejs wiersza polecenia platformy Azure. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie interfejsu wiersza polecenia platformy Azure w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić interfejs wiersza polecenia platformy Azure w kontenerze platformy Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do interfejsu wiersza polecenia platformy Azure za pomocą polecenia az login. Aby ukończyć proces uwierzytelniania, wykonaj kroki wyświetlane w terminalu. Aby uzyskać inne opcje logowania, zobacz Uwierzytelnianie na platformie Azure przy użyciu interfejsu wiersza polecenia platformy Azure.
Gdy zostaniesz o to poproszony, zainstaluj rozszerzenie Azure CLI przy pierwszym użyciu. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Używanie rozszerzeń i zarządzanie nimi za pomocą interfejsu wiersza polecenia platformy Azure.
Uruchom polecenie az version, aby znaleźć zainstalowane wersje i biblioteki zależne. Aby uaktualnić do najnowszej wersji, uruchom polecenie az upgrade.
- Repozytorium GitHub z zainstalowaną usługą Azure Pipelines
- Osobisty token dostępu w usłudze GitHub
- Organizacja usługi Azure DevOps z osobistym tokenem dostępu (PAT) na potrzeby uwierzytelniania
- Uprawnienia administratora kolekcji projektów w organizacji usługi Azure DevOps
Zapisywanie pliku YAML potoku
Zapisz następującą definicję potoku YAML jako plik o nazwie azure-pipelines.yml w katalogu głównym i main gałęzi repozytorium GitHub.
parameters:
- name: image
displayName: 'Pool image'
default: ubuntu-latest
values:
- windows-latest
- ubuntu-latest
- macOS-latest
- name: test
displayName: Run Tests?
type: boolean
default: false
variables:
- group: "Contoso Variable Group"
- name: va
value: $[variables.a]
- name: vb
value: $[variables.b]
- name: vcontososecret
value: $[variables.contososecret]
trigger:
- main
pool:
vmImage: ubuntu-latest
steps:
- script: |
echo "Hello, world!"
echo "Pool image: ${{ parameters.image }}"
echo "Run tests? ${{ parameters.test }}"
displayName: 'Show runtime parameter values'
- script: |
echo "a=$(va)"
echo "b=$(vb)"
echo "contososecret=$(vcontososecret)"
echo
echo "Count up to the value of the variable group's nonsecret variable *a*:"
for number in {1..$(va)}
do
echo "$number"
done
echo "Count up to the value of the variable group's nonsecret variable *b*:"
for number in {1..$(vb)}
do
echo "$number"
done
echo "Count up to the value of the variable group's secret variable *contososecret*:"
for number in {1..$(vcontososecret)}
do
echo "$number"
done
displayName: 'Test variable group variables (secret and nonsecret)'
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
Przykładowy skrypt
Ten przykładowy skrypt wykonuje następujące zadania:
- Tworzy zasoby metodyki DevOps
- Uruchamia potok danych
- Modyfikuje wartości zmiennych trzy razy
- Uruchamia potok ponownie za każdym razem, gdy zmieniają się wartości zmiennych
Skrypt tworzy następujące zasoby w usłudze Azure DevOps:
- Projekt w organizacji DevOps
- Połączenie usługi GitHub
- Potok
- Grupa zmiennych z dwiema zmiennymi niesekretowymi i jedną zmienną wpisu tajnego
Przed uruchomieniem skryptu zastąp następujące symbole zastępcze:
-
<devops-organization>Nazwa organizacji usługi Azure DevOps. Jeśli na przykład adres URL usługi Azure DevOps tohttps://dev.azure.com/Contoso, użyj poleceniaContoso. -
<github-organization>Twoja organizacja lub nazwa użytkownika usługi GitHub. Na przykład:myusernamelubmyorganization. -
<github-repository>Nazwa repozytorium GitHub. Jeśli na przykład adres URL repozytorium tohttps://github.com/myusername/my-repo, użyj poleceniamy-repo. -
<pipelinename>Nazwa przepływu, która ma od 3 do 19 znaków i zawiera wyłącznie cyfry oraz małe litery. Skrypt dodaje pięciocyfrowy unikatowy identyfikator. Na przykładmypipeline.
Zapisz identyfikator PAT usługi GitHub w środowisku lokalnym.
AZURE_DEVOPS_EXT_GITHUB_PAT=<your-github-pat>
Po zapisaniu pliku YAML w usłudze GitHub uruchom następujący skrypt CLI Azure DevOps w powłoce Bash w usłudze Azure Cloud Shell lub lokalnie.
Ważne
Upewnij się, że masz zainstalowaną najnowszą wersję interfejsu wiersza polecenia platformy Azure i rozszerzenie DevOps. Uruchom az upgrade i az extension add --name azure-devops przed wykonaniem tego skryptu.
#!/bin/bash
# ===== CONFIGURATION =====
# Replace the placeholder values with your own.
devopsOrg="https://dev.azure.com/<devops-organization>"
githubOrg="<github-organization>"
githubRepo="<github-repository>"
pipelineName="<pipeline-name>"
repoName="$githubOrg/$githubRepo"
repoType="github"
branch="main"
# Declare other variables.
uniqueId=$RANDOM
devopsProject="Contoso DevOps Project $uniqueId"
serviceConnectionName="Contoso Service Connection $uniqueId"
variableGroupName="Contoso Variable Group $uniqueId"
# ===== AUTHENTICATION =====
# Sign in to Azure CLI and follow the sign-in instructions, if necessary.
echo "Signing in to Azure CLI..."
az login
# Sign in to Azure DevOps with your Azure DevOps PAT, if necessary.
# Uncomment the following line if your Azure AD account doesn't have Azure DevOps access.
# echo "Signing in to Azure DevOps..."
# az devops login
# ===== PROJECT CREATION =====
# Create the Azure DevOps project and set defaults.
echo "Creating Azure DevOps project..."
projectId=$(az devops project create \
--name "$devopsProject" \
--organization "$devopsOrg" \
--visibility private \
--query id \
--output tsv)
echo "Project created with ID: $projectId"
# Set default organization and project for subsequent commands.
az devops configure --defaults organization="$devopsOrg" project="$devopsProject"
pipelineRunUrlPrefix="$devopsOrg/$projectId/_build/results?buildId="
# ===== SERVICE CONNECTION =====
# Create GitHub service connection.
echo "Creating GitHub service connection..."
githubServiceEndpointId=$(az devops service-endpoint github create \
--name "$serviceConnectionName" \
--github-url "https://www.github.com/$repoName" \
--query id \
--output tsv)
echo "Service connection created with ID: $githubServiceEndpointId"
# ===== PIPELINE CREATION =====
# Create the pipeline from the YAML file.
echo "Creating pipeline..."
pipelineId=$(az pipelines create \
--name "$pipelineName" \
--skip-first-run \
--repository $repoName \
--repository-type $repoType \
--branch $branch \
--service-connection $githubServiceEndpointId \
--yml-path azure-pipelines.yml \
--query id \
--output tsv)
echo "Pipeline created with ID: $pipelineId"
# ===== VARIABLE GROUP =====
# Create a variable group with 2 non-secret variables and 1 secret variable.
echo "Creating variable group..."
variableGroupId=$(az pipelines variable-group create \
--name "$variableGroupName" \
--authorize true \
--variables a=12 b=29 \
--query id \
--output tsv)
echo "Variable group created with ID: $variableGroupId"
# Add a secret variable to the group.
echo "Adding secret variable to the group..."
az pipelines variable-group variable create \
--group-id $variableGroupId \
--name contososecret \
--secret true \
--value 17
# ===== PIPELINE RUNS =====
# Run the pipeline for the first time.
echo "Running pipeline (1st run)..."
pipelineRunId1=$(az pipelines run \
--id $pipelineId \
--query id \
--output tsv)
echo "Pipeline run 1 started with ID: $pipelineRunId1"
echo "Go to the pipeline run's web page to view the output results of the 'Test variable group variables' job."
echo "URL: ${pipelineRunUrlPrefix}${pipelineRunId1}"
read -p "Press Enter to change the value of variable 'a', then run again:"
# Change the value of one of the variable group's nonsecret variables.
echo "Updating variable 'a'..."
az pipelines variable-group variable update \
--group-id $variableGroupId \
--name a \
--value 22
# Run the pipeline for the second time.
echo "Running pipeline (2nd run)..."
pipelineRunId2=$(az pipelines run \
--id $pipelineId \
--query id \
--output tsv)
echo "Pipeline run 2 started with ID: $pipelineRunId2"
echo "URL: ${pipelineRunUrlPrefix}${pipelineRunId2}"
read -p "Press Enter to change the value of the secret variable, then run once more:"
# Change the value of the variable group's secret variable.
echo "Updating secret variable 'contososecret'..."
az pipelines variable-group variable update \
--group-id $variableGroupId \
--name contososecret \
--value 35
# Run the pipeline for the third time.
echo "Running pipeline (3rd run)..."
pipelineRunId3=$(az pipelines run \
--id $pipelineId \
--query id \
--output tsv)
echo "Pipeline run 3 started with ID: $pipelineRunId3"
echo "URL: ${pipelineRunUrlPrefix}${pipelineRunId3}"
read -p "Press Enter to continue:"
Czyszczenie zasobów
Aby uniknąć naliczania opłat za projekt platformy Azure, usuń przykładowy projekt. Ta akcja usuwa również jego zasób.
Skopiuj id przykładowego projektu z danych wyjściowych następującego polecenia:
az devops project list --org <your-organization>
Usuń projekt, uruchamiając następujące polecenie:
az devops project delete --id <project-id> --org <your-organization> --yes
Wyczyść środowisko lokalne, uruchamiając następujące polecenia:
export AZURE_DEVOPS_EXT_GITHUB_PAT=""
az devops configure --defaults organization="" project=""
Odniesienia do Azure CLI
W przykładzie w tym artykule są używane następujące polecenia interfejsu wiersza polecenia platformy Azure:
- az devops configure
- az devops project create (polecenie do stworzenia projektu w Azure DevOps)
- az devops project delete — polecenie do usunięcia projektu w Azure DevOps
- az devops project list
- az devops service-endpoint github create - Tworzy punkt końcowy usługi GitHub w Azure DevOps
- az login
- az pipelines create
- az pipelines delete
- az pipelines run
- az pipelines variable-group create - polecenie do tworzenia zmiennych grup w Azure Pipelines
- az pipelines variable-group delete
- az pipelines variable-group variable create
- az pipelines variable-group variable update