﻿# 如何將 Azure Pipelines 的「安全變數」傳入成為「環境變數」使用

我們在 Azure Pipelines 設定**變數**(Variables)的時候，預設所有變數都會成為每個 Steps 中的預設環境變數，可以直接透過環境變數取用該變數。不過，當你把變數加上**鎖頭**(Lock)變成了「安全變數」的話，預設環境變數就看不到了，這時該怎麼辦呢？這篇文章告訴你！

### Azure Pipelines YAML

如果你有定義一個「安全變數」的話，要透過「環境變數對應」的方式，以下是設定方式。

假設我們的「安全變數」為 `PAT`，而你希望在 PowerShell 或 Command line 中使用 `MY_PAT` 這個**環境變數**，那麼你的 Task 可以這樣定義：

```yaml
- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      Write-Host "My PAT is $env:MY_PAT"
  env:
    MY_PAT: $(PAT)
```

### Azure Pipelines Classic Editor

首先，先確認變數有上鎖，也就是這是一個「安全變數」

![先確認變數有上鎖，也就是這是一個「安全變數」](https://stwillblogassets.blob.core.windows.net/files/images/external/user-images.githubusercontent.com/448aed5e0c3b4eef18a5-228151452-c87dee8a-d4c8-4df1-b0c9-f4a4c433041b.png)

接下來你去新增 PowerShell 或 Command line 工作，在下方有個不起眼的 Environment Variales 可以展開，我已經看過這個，只是一直沒用過，今天才知道原來是讓你將**變數**對應到**環境變數**之用！👍

你只要參考下圖步驟進行設定即可將 `$(PAT)` 安全變數，對應到可以用在這個 `MY_PAT` 環境變數：

![image](https://stwillblogassets.blob.core.windows.net/files/images/external/user-images.githubusercontent.com/e8f4e5cbba0c89886169-228152898-b4340640-3aa0-47db-bc2c-3b93b28b8b90.png)

### 相關連結

-   [Set secret variables - Azure Pipelines | Microsoft Learn](https://learn.microsoft.com/en-us/azure/devops/pipelines/process/set-secret-variables?view=azure-devops&WT.mc_id=DT-MVP-4015686&tabs=classic%2Cbash#use-a-secret-variable-in-the-ui)
-   [Use Azure pipeline secret variable to set environment variables on build agent - Stack Overflow](https://stackoverflow.com/a/66115319/910074)
