Azure DevOps නල මාර්ගවල විචල්‍යයන් භාවිතා කිරීම

වින්ඩෝස් සහ තවත් බොහෝ දේ සඳහා සංවර්ධනය සඳහා වූ අපූරු මෙවලමක් පිළිබඳ අපගේ සමාලෝචනය අපි දිගටම කරගෙන යන්නෙමු, Azure DevOps. පාරිසරික විචල්‍යයන් සමඟ බොහෝ දුක් විඳ ඇති මම මෙවර සියලු අත්දැකීම් එක ලිපියකට දැමීමට තීරණය කළෙමි.

එක් එක් ක්‍රියාත්මක කිරීමේ පරිසරය සඳහා ඔවුන්ට විවිධ වාක්‍ය ඛණ්ඩ ඇති බැවින්, නල මාර්ගයේ එක් අදියරක සිට තවත් විචල්‍යයන් මාරු කිරීමේ සම්මත හැකියාවක් නොමැතිකමෙන් අවසන් වේ.

YAML තවමත් එහි පැමිණ නැති නිසාත්, මට බොහෝ අදියරවල සහ බොහෝ කෞතුක වස්තු වල ක්‍රියාකාරීත්වය අවශ්‍ය නිසාත්, ප්‍රධාන උදාහරණ නිකුත් කිරීමේ නල මාර්ගවල ඇති බවට මම වෙන්කරවා ගන්නෙමි. මෙය සාමාන්‍ය නල මාර්ග වලින් ලබා ගත හැකි බව පෙනේ, එය ක්‍රියාකාරීත්වයෙන් ප්‍රායෝගිකව සමාන වේ. Pipelines YAML හි, අපි සැකසිය හැකි පරාමිති සහිත පෙළ නිරූපණයට කුඩා චිත්‍රක මෙවලම් ඉඟියක් එක් කළෙමු. එය ඉතා පහසු ය; ඔබ එක් එක් මොඩියුලය සඳහා ලේඛන හරහා යාමට අවශ්ය නැත. නමුත් මම මෙය ඊළඟ ලිපියෙන් විස්තර කරමි, නමුත් දැනට මෙහි නවෝත්පාදනයේ පින්තූරයක් ඇත.

Azure DevOps නල මාර්ගවල විචල්‍යයන් භාවිතා කිරීම

ගබඩා කිරීම සහ භාවිතය

අපි පද්ධතිය තුළ පෙරනිමි විචල්යයන් ඇති බව සමඟ ආරම්භ කරමු. ඒවා ආරම්භ වන්නේ, ඒවායේ මූලාරම්භය අනුව, මුදා හැරීම, පද්ධතිය, යනාදී වචන වලින්. සම්පූර්ණ ලැයිස්තුව (එය හැරෙන පරිදි, නොවේ), ලබා ගත හැක ලියකියවිලි. වාක්‍ය ඛණ්ඩය සහිත සියලුම භින්නෝන්මාදයන් පහත ලේඛනයෙන් උදාහරණයකින් නිරූපණය කෙරේ. එකම විචල්‍යයට නිරූපණ තුනක් ඇත, එය අප එය හඳුන්වන ස්ථානය අනුව ය.

steps:
 - bash: echo This script could use $SYSTEM_ACCESSTOKEN
    env:
      SYSTEM_ACCESSTOKEN: $(System.AccessToken)
  - powershell: Write-Host "This is a script that could use $env:SYSTEM_ACCESSTOKEN"
    env:
      SYSTEM_ACCESSTOKEN: $(System.AccessToken)

ඔබ කාර්යය ක්‍රියාත්මක කරන නියෝජිතයා මත විචල්‍යයක් සකසන්නේ නම්, එය $(System.AccessToken) වේ. ඔබට එය එකම නියෝජිතයා මත පවර්ෂෙල් ස්ක්‍රිප්ට් එකක් තුළ භාවිතා කිරීමට අවශ්‍ය නම්, එය දැනටමත් $env:SYSTEM_ACCESSTOKEN වනු ඇත. ඔබට, දෙවියන් තහනම් කරයි, මෙම විචල්‍යය යම් දුරස්ථ ධාරකයක භාවිතා කිරීමට අවශ්‍ය නම්, PowerShell on target machines task භාවිතා කරමින්, ඔබ මෙය භාවිතා කරමින් ස්ක්‍රිප්ට් වෙත තර්කයක් හරහා යා යුතුය. මගේ මුදල්. bash සමඟ එය සරලයි, ඔබට එය $SYSTEM_ACCESSTOKEN තර්කය සහ වාක්‍ය ඛණ්ඩය භාවිතයෙන් සරලව එය ඇතුළට යැවිය හැක.

ඔබේම විචල්‍යයන් සඳහා එකම නීති අදාළ නොවේ; මෙහිදී ඔබ දැනටමත් වාක්‍ය ඛණ්ඩය සඳහා වගකිව යුතුය. එක් එක් කාර්යය සඳහා දේශීය වශයෙන් විචල්‍ය සැකසිය හැක.

Azure DevOps නල මාර්ගවල විචල්‍යයන් භාවිතා කිරීම

නැතහොත් ගෝලීය වශයෙන් විචල්‍ය ගබඩාවට, පසුව ඒවා ගබඩාවෙන් සම්බන්ධ කරන්න. ඉතා සුවපහසුයි.

Azure DevOps නල මාර්ගවල විචල්‍යයන් භාවිතා කිරීම

ප්‍රසාද දීමනාවක් ලෙස, විචල්‍යයන් ඉතා රහසිගත නම්, ඒවා Azure වලාකුළෙහි Azure Vault නම් ගබඩාවේ ගබඩා කළ හැකිය; ඔබට පුස්තකාලයේ ව්‍යාපෘතියට Vault සම්බන්ධ කළ හැකිය.

Azure DevOps නල මාර්ගවල විචල්‍යයන් භාවිතා කිරීම

පොදුවේ ගත් කල, විචල්‍යයන් සමඟ සියල්ල පැහැදිලිය; නල මාර්ගවල ඒවා තවමත් එක් එක් දියත් කිරීම සඳහා අතින් සැකසිය හැකිය; මුදා හැරීමේදී එවැනි ක්‍රියාකාරීත්වයක් නොමැත. නියෝජිත ආරම්භක ලඝු-සටහන් තුළ ඔබ නැවත නල මාර්ගයට මාරු කරන්නේ කුමක් දැයි ඔබට දැක ගත හැකිය, නමුත් ඒවා දැනටමත් පරිවර්තනය කරන ලද ස්වරූපයෙන් ඇති බව මතක තබා ගන්න.

Azure DevOps නල මාර්ගවල විචල්‍යයන් භාවිතා කිරීම

ගතික විචල්යයන්

විනෝදය ආරම්භ වන්නේ අපට එක් අදියරකදී යම් වටිනාකමක් ලබා ගැනීමට සහ එය ඊළඟ අදියරට යැවීමට අවශ්‍ය වූ විටය.

Azure DevOps නල මාර්ගවල විචල්‍යයන් භාවිතා කිරීම

අපට එවැනි ක්‍රියාකාරීත්වයක් ලබා දී නොමැත. නමුත් අපගේ දෑත් කම්මැලිකම සඳහා නොවන අතර ගූගල් ආධාරයෙන් විසඳුමක් සොයා ගන්නා ලදී. දෙවියන්ට ස්තූතියි, Azure DevOps සතුව API එකක් ඇති අතර එය අතුරු මුහුණතෙහි නිරූපණය කර ඇති දේට වඩා ටිකක් වැඩි යමක් කිරීමට අපට ඉඩ සලසයි.

එබැවින්, ගෝලීය විචල්‍යයන් යාවත්කාලීන කිරීමට අපට ඇමතුමක් අවශ්‍ය වනු ඇත, එය අපි නල මාර්ගයෙන් කෙලින්ම කරන්නෙමු. ලිපිනය ලබාගෙන ඇත්තේ පරිසර විචල්‍යයන්ගෙන් වන අතර, කලින් සඳහන් කළ පරිදි ලේඛනයේ වචනයක්වත් නොමැති ඒවා වේ. ඔබට ඒවා ඔබ විසින්ම සැකසිය හැකිය, නැතහොත්, ඔවුන් සාප්පුව වසා දැමුවහොත්, ඒවා දෘඪ කේතය කළ හැක.

$releaseurl = ('{0}{1}/_apis/release/releases/{2}?api-version=5.0' -f $($env:SYSTEM_TEAMFOUNDATIONSERVERURI), $($env:SYSTEM_TEAMPROJECTID), $($env:RELEASE_RELEASEID)  )

අපි මාරු කිරීමට අවශ්ය වන විචල්යයේ හිස් අගය සකසන්න, Scope - Release සකසන්න

Azure DevOps නල මාර්ගවල විචල්‍යයන් භාවිතා කිරීම

උදාහරණයක් ලෙස, අපි අහඹු අගය උත්පාදක යන්ත්රයක් සාදන්නෙමු. මෙම අදියර තුළ විචල්‍යයක් ප්‍රකාශ කිරීමේ වාක්‍ය ඛණ්ඩය කෙරෙහි අවධානය යොමු කරන්න; මෙම ක්‍රියාකාරීත්වය හඳුන්වා දෙන ලදී.

Azure DevOps නල මාර්ගවල විචල්‍යයන් භාවිතා කිරීම

ඊළඟ පියවරේදී, අපි විචල්‍යය පිටපතට යවන්නෙමු, ඔව්, ඔව්, එය කෙලින්ම කළ නොහැක, එය තර්කයක් හරහා විය යුතුය.

Azure DevOps නල මාර්ගවල විචල්‍යයන් භාවිතා කිරීම

ස්පොයිලර් යටතේ ස්ක්‍රිප්ට්

PowerShell

#Script requires stageVar variable in release variables set to Release scope

param ( [string] $expVar )
#region variables
$ReleaseVariableName = 'StageVar'
$releaseurl = ('{0}{1}/_apis/release/releases/{2}?api-version=5.0' -f $($env:SYSTEM_TEAMFOUNDATIONSERVERURI), $($env:SYSTEM_TEAMPROJECTID), $($env:RELEASE_RELEASEID)  )
#endregion


#region Get Release Definition
Write-Host "URL: $releaseurl"
$Release = Invoke-RestMethod -Uri $releaseurl -Headers @{
    Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
}
#endregion

#region Output current Release Pipeline
Write-Output ('Release Pipeline variables output: {0}' -f $($Release.variables | ConvertTo-Json -Depth 10))
#endregion


#region Update StageVar with new value
$release.variables.($ReleaseVariableName).value = "$expVar"
#endregion

#region update release pipeline
Write-Output ('Updating Release Definition')
$json = @($release) | ConvertTo-Json -Depth 99
Invoke-RestMethod -Uri $releaseurl -Method Put -Body $json -ContentType "application/json" -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN" }
#endregion

#region Get updated Release Definition
Write-Output ('Get updated Release Definition')
Write-Host "URL: $releaseurl"
$Release = Invoke-RestMethod -Uri $releaseurl -Headers @{
    Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
}
#endregion

#region Output Updated Release Pipeline
Write-Output ('Updated Release Pipeline variables output: {0}' -f $($Release.variables | ConvertTo-Json -Depth 10))
#endregion

නැතහොත්

බෑෂ්

INPUT_VAR=$1
RELEASE_VAR=$2

echo Test ID: ${INPUT_VAR}

RELEASE_URL="${SYSTEM_TEAMFOUNDATIONSERVERURI}${SYSTEM_TEAMPROJECTID}/_apis/release/releases/${RELEASE_RELEASEID}?api-version=5.0"

echo release url: $RELEASE_URL

RELEASE_JSON=$(curl -H "Authorization: Bearer $SYSTEM_ACCESSTOKEN" $RELEASE_URL)

OUTPUT=`jq ''.variables.${RELEASE_VAR}.value' = '"${INPUT_VAR}"'' <<< $RELEASE_JSON`

curl -H "Authorization: Bearer $SYSTEM_ACCESSTOKEN" -H "Content-Type: application/json" -X PUT -d "$OUTPUT" $RELEASE_URL

කෙටියෙන් කිවහොත්, අපගේ ස්ක්‍රිප්ටය myVar විචල්‍යය ආදානය ලෙස ගන්නා අතර මෙම විචල්‍යයේ අගය stageVar වෙත තැබීමට API භාවිතා කරයි. ඊළඟ පියවරේදී, පද්ධති විචල්‍ය සින්ටැක්ස් භාවිතයෙන්, අපට එය දෙස බැලිය හැකිය.

Azure DevOps නල මාර්ගවල විචල්‍යයන් භාවිතා කිරීම

උදාහරණය තරමක් සරල ය, නමුත් ක්‍රියාකාරීත්වය මගේ පෙර අවස්ථාවට අමතරව අපට හොඳ අවස්ථා විවෘත කරයි ලිපි, අපට පරීක්‍ෂණයේ පළමු අදියරේදී අතථ්‍ය යන්ත්‍රයක් නිර්මාණය කළ හැකි විට, එය සමඟ තවත් උපාමාරු කිහිපයක් සහ සමාන්තරව කිහිපයක් සිදු කරන්න. අවසාන අදියර වන්නේ එය විනාශ කිරීමයි. දැන් අපි නැවුම් අථත්‍ය යන්ත්‍රවල සෑම විටම නිෂ්පාදනයේ ස්වයංක්‍රීය පරීක්ෂණ ක්‍රියාත්මක කරමු. ඔවුන් විනාඩි 10 ක් පමණ ජීවත් වන බව සලකන විට, එය සතයක් වැය වේ.

ඊළඟ ලිපියෙන්, අවශ්‍ය නම්, මම YAML නල මාර්ග ගැන කතා කරමි; මෑතකදී එහි රසවත් නවෝත්පාදන රාශියක් තිබේ.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න