powershell - VSTS की एक नई तैनाती से पहले Azure पर फ़ाइलें और तह निकालें




azure-devops azure-powershell (2)

यह है कि आप अपनी सेटिंग्स का परीक्षण कर सकते हैं जो आप पोस्टमैन का उपयोग करके पावरशेल स्क्रिप्ट में उपयोग करते हैं।

मैंने पोस्टमैन का उपयोग करके REST API के साथ खेलना उपयोगी समझा, जो ऊपर दिए गए PowerShell स्क्रिप्ट्स को समझने और समझने के लिए कि मैं किस स्थिति कोड से API की उम्मीद कर सकता हूं। मैंने यह भी देखा कि किसी निर्देशिका को हटाने के लिए पुनरावर्ती तर्क 409 संघर्ष त्रुटि देता है, भले ही फ़ाइलों को हटाना नहीं है।

नीचे दिए गए उदाहरणों में, मेरी ऐप सेवा को "YatesDeleteMe" कहा जाता है

अपने प्राधिकरण शीर्ष लेख में नीचे उपयोग करने के लिए एक आधार 64 एन्कोडेड उपयोगकर्ता नाम और पासवर्ड स्ट्रिंग बनाएँ या ऊपर PowerShell स्क्रिप्ट चलाएँ और यह आपके लिए एक काम करेगा

  1. अपनी ऐप सेवा की प्रकाशित फ़ाइल डाउनलोड करें, जिसे Azure पोर्टल में अवलोकन टैब से डाउनलोड किया जा सकता है।
  2. फ़ाइल को टेक्स्ट एडिटर से खोलें
  3. उपयोगकर्ता नाम खोजें (उपयोगकर्ता नाम उदाहरण: $ YatesDeleteMe) और पासवर्ड (पासवर्ड उदाहरण: ch222cDlpCjx4Glq333qo4QywGPMs1cK2RjrnnfqZ9HswtgEEE12CrhDmcn)
  4. उनमें से एक स्ट्रिंग बनाएं और उन्हें एक बृहदान्त्र के साथ अलग करें (कुछ इस तरह दिखना चाहिए: $ YatesDeleteMe: ch222cDlpCjx4Glq333qo4QywGPM1sKRjrn6phqZ9HswtgEEE12CrhDmcn)
  5. बेस 64 अपने खुद के प्रोग्राम site का उपयोग करके उन्हें सांकेतिक शब्दों में बदलना। परिणाम कुछ इस तरह दिखना चाहिए: JFlhdGVzRGVsZXRlTU6Y2gyMjJjRGxwQ2p4NEdscTMzM3FvNFF5dQdXTxMxY0syUmpybjZwaHFaouhzd3rnvnvn2b

किसी एक फ़ाइल को पुनः प्राप्त करें

  1. पोस्टमैन खोलें
  2. क्रिया को GET में बदलें
  3. अपना URL उस फ़ाइल में दर्ज करें जिसे आप पुनः प्राप्त करना चाहते हैं (जैसे, https://YatesDeleteMe.scm.azurewebsites.net/api/vfs/site/wwwroot/web.config )। रास्तों की अधिक जानकारी के लिए इसे देखें
  4. एक शीर्ष लेख जोड़ा गया ->
    • कुंजी: प्राधिकरण
    • मान: मूल YourBase64EncodedStringFromAbove
  5. "भेजें" बटन पर क्लिक करें और फ़ाइल डाउनलोड हो जाएगी

एक ही फाइल को डिलीट करें

  1. पोस्टमैन खोलें
  2. क्रिया को DELETE में बदलें
  3. अपनी URL को उस फ़ाइल में दर्ज करें जिसे आप हटाना चाहते हैं (जैसे, https://YatesDeleteMe.scm.azurewebsites.net/api/vfs/site/wwwroot/web.config )
  4. एक शीर्ष लेख जोड़ा गया ->
    • कुंजी: प्राधिकरण
    • मान: मूल YourBase64EncodedStringFromAbove
  5. एक शीर्ष लेख जोड़ा गया ->
    • कुंजी: अगर-मैच
    • मान: *
  6. "भेजें" बटन पर क्लिक करें और फ़ाइल हटा दी जाएगी

एक निर्देशिका में सभी फ़ाइलों को हटाएँ

  1. पोस्टमैन खोलें
  2. क्रिया को DELETE में बदलें
  3. अपने URL को उस फ़ोल्डर में दर्ज करें, जिसे आप हटाना चाहते हैं, जो PLUST add स्लैश और फिर क्वेरी स्ट्रिंग? Recursive = true (जैसे, https://YatesDeleteMe.scm.azurewebsites.net/api/vfs/site/wwwroot/?recursive=true )
  4. एक शीर्ष लेख जोड़ा गया ->
    • कुंजी: प्राधिकरण
    • मान: मूल YourBase64EncodedStringFromAbove
  5. एक शीर्ष लेख जोड़ा गया ->
    • कुंजी: अगर-मैच
    • मान: *
  6. "भेजें" बटन पर क्लिक करें और फ़ोल्डर हटा दिया जाएगा। मुझे हमेशा 409 त्रुटि वापस मिलती है, लेकिन फ़ोल्डर हटा दिया जाता है।

संदर्भ

  • here चित्रों के साथ ब्लॉग पोस्ट।

VSTS में अपनी निर्माण प्रक्रिया के हिस्से के रूप में मैं एक नई तैनाती से पहले अपने azure साइट से सभी फ़ाइलों और फ़ोल्डरों (कुछ को छोड़कर) को हटाना चाहता हूं। मेरा अनुमान है, कि अज़ोर पॉवर्सल स्क्रिप्ट का उपयोग करना एक अच्छा विचार होगा और मैं इनलाइन स्क्रिप्ट बनाना पसंद करूंगा।

मैं एज़्योर रिसोर्स मैनेजर का उपयोग कनेक्शन प्रकार के रूप में कर रहा हूं, मैंने अपनी सदस्यता और स्क्रिप्ट प्रकार (इनलाइन स्क्रिप्ट) का चयन किया है, लेकिन फिर मैं खो गया हूं, मैं अपनी ऐप सेवा का चयन कैसे करूं और एक शुरुआत के लिए, अपनी फ़ाइलों को सूचीबद्ध करूं?

कोशिश कर रहा है, यह एक परीक्षण के लिए, केवल मेरे VSTS वातावरण में अपनी फ़ाइलें देता है

Get-ChildItem -Path $(build.sourcesDirectory)

पहले, उन फ़ाइलों को प्रोजेक्ट में शामिल करना बेहतर है जिन्हें वेब ऐप की जरूरत है, फिर अतिरिक्त फ़ाइलों को हटाने के लिए गंतव्य विकल्प पर अतिरिक्त फ़ाइलों को हटाएं (पहले वेब की जाँच करें प्रकाशित करें चेक करें)।

दूसरे, आप कुडू एपीआई के माध्यम से फाइलें निकाल सकते हैं।

DELETE /api/vfs/{path}    (Delete the file at path)

अधिक जानकारी के लिए, आप इसका उल्लेख कर सकते हैं: PowerShell और Kudu API का उपयोग करके Azure वेब ऐप्स वर्चुअल फ़ाइल सिस्टम के साथ सहभागिता करना

अपडेट (कुडु नमूना जोड़ें):

  1. जोड़ें Azure PowerShell चरण / कार्य
  2. उदाहरण के लिए सिपाही तर्क दें: -resourceGroupName XXX -webAppName XXX -kuduPath.ax

स्क्रिप्ट:

param(
    [string]$resourceGroupName,
    [string]$webAppName,
    [string]$slotName="", 
    [string]$kuduPath
)
function Get-AzureRmWebAppPublishingCredentials($resourceGroupName, $webAppName, $slotName = $null){
    if ([string]::IsNullOrWhiteSpace($slotName)){
        $resourceType = "Microsoft.Web/sites/config"
        $resourceName = "$webAppName/publishingcredentials"
    }
    else{
        $resourceType = "Microsoft.Web/sites/slots/config"
        $resourceName = "$webAppName/$slotName/publishingcredentials"
    }
    $publishingCredentials = Invoke-AzureRmResourceAction -ResourceGroupName $resourceGroupName -ResourceType $resourceType -ResourceName $resourceName -Action list -ApiVersion 2015-08-01 -Force
    Write-Host $publishingCredentials   
    return $publishingCredentials
}
function Get-KuduApiAuthorisationHeaderValue($resourceGroupName, $webAppName, $slotName = $null){
    $publishingCredentials = Get-AzureRmWebAppPublishingCredentials $resourceGroupName $webAppName $slotName
    Write-Host $publishingCredentials.Properties.PublishingUserName
    Write-Host $publishingCredentials.Properties.PublishingPassword
    return ("Basic {0}" -f [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $publishingCredentials.Properties.PublishingUserName, $publishingCredentials.Properties.PublishingPassword))))
}
function Delete-FileToWebApp($resourceGroupName, $webAppName, $slotName = "", $kuduPath){

    $kuduApiAuthorisationToken = Get-KuduApiAuthorisationHeaderValue $resourceGroupName $webAppName $slotName
    if ($slotName -eq ""){
        $kuduApiUrl = "https://$webAppName.scm.azurewebsites.net/api/vfs/site/wwwroot/$kuduPath"
    }
    else{
        $kuduApiUrl = "https://$webAppName`-$slotName.scm.azurewebsites.net/api/vfs/site/wwwroot/$kuduPath"
    }

    Write-Output $kuduApiUrl
    Write-Output $kuduApiAuthorisationToken
    Invoke-RestMethod -Uri $kuduApiUrl `
                        -Headers @{"Authorization"=$kuduApiAuthorisationToken;"If-Match"="*"} `
                        -Method DELETE
}

Delete-FileToWebApp $resourceGroupName $webAppName $slotName $kuduPath