[英]switch environment variable in github actions
我使用 github 操作進行集成測試。
問題是,測試不應該在具有相同配置的多個實例上並行運行(測試會失敗)。
但是,它可以在配置 1 下運行一次,在配置 2 下並行運行一次。
正如這篇博文所述,無法確保工作流不會並行運行。
有沒有辦法切換配置,配置1和配置2交替?
在這種情況下,具有相同配置的工作流工作流不太可能並行運行(如果需要,我可以添加更多配置)。
例如,這可以通過一個全局可寫(對於工作流)變量來完成,該變量交替為 1 或 2,並且工作流選擇該配置。
示例工作流(秘密confToSwitch
應該被切換):
name: test
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: "load configuration"
run: echo "configuration=$conf" >> ./conf
env:
conf: ${{ secrets.confToSwitch }}
- name: "integration tests"
run: "mvn -B integration-test"
您可以嘗試使用以下matrix
配置:
name: test
on: [push]
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
token: [token1, token2, etc...]
steps:
- uses: actions/checkout@v1
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: "load configuration"
run: echo "configuration=$conf" >> ./conf
env:
conf: ${{ matrix.token }}
- name: "integration tests"
run: "mvn -B integration-test"
這將創建N
個作業,其中N
是列表中的標記數,並且每個帶有conf: ${{ matrix.token }}
將解析為當前作業的列表中的一個標記。
我認為也可以將您的令牌存儲為機密並設置矩陣,如:
strategy:
matrix:
token: ["${{secrets.token1}}", "${{secrets.token2}}", etc...]
不過,我還沒有測試過這個。
我發現了一個使秘密令牌起作用的技巧:
token1
、 token2
等strategy:
matrix:
token: [token1, token2]
env:
token: ${{secrets[matrix.token]}}
${{env.token}}
(在表達式上下文中操作時)或$token
(在 bash 中)中。環境變量仍然是一個秘密,所以你不會丟失任何東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.