所以我有兩個秘密:DEV_SERVER_IP 和 MASTER_SERVER_IP。在 main.yml 我需要這樣的東西
run: echo "::set-env name=BRANCH_NAME::$(echo ${GITHUB_REF#refs/heads/} | sed 's/\//_/g')"
run: ssh-keyscan -H ${{ secrets.BRANCH_NAME_SERVER_IP }} >> ~/.ssh/known_hosts
但我收到錯誤
env:
BRANCH_NAME: dev
Error: Input required and not supplied: key
我在這里需要類似 ssh-keyscan -H ${{ secrets.${BRANCH_NAME}_SERVER_IP }}
我怎樣才能解決這個問題?
uj5u.com熱心網友回復:
您正在嘗試在 Github 背景關系擴展 ( ${{ ... }}) 中使用 shell 樣式邏輯,但這是行不通的。只需將所有邏輯移到 shell 腳本中即可:
name: Example
on:
push:
jobs:
example:
runs-on: ubuntu-latest
steps:
- name: get target ip
env:
DEV_SERVER_IP: ${{ secrets.DEV_SERVER_IP }}
MAIN_SERVER_IP: ${{ secrets.MAIN_SERVER_IP }}
run: |
branch_name=$(sed 's|/|_|g' <<< ${GITHUB_REF#refs/heads/})
target="${branch_name^^}_SERVER_IP"
mkdir -p ~/.ssh
ssh-keyscan -H ${!target} >> ~/.ssh/known_hosts
cat ~/.ssh/known_hosts
在上面的作業流程中,運算式${branch_name^^}是一個 bash 運算式,它$branch_name以大寫形式回傳 的值,并且${!target}是一個 bash 運算式,它回傳 name 存盤在的變數的值$target。
請注意,我沒有使用您的“設定BRANCH_NAME環境變數”任務,因為出于安全原因默認禁用::set-env該命令。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/504125.html
