这是我返回的操作,$TOXENV看起来像这样,py3.6-django2.2我希望$TOXENV看起来像这样,而py36-django22不是有任何替代/替换函数可以用来替换.char 吗?
name: CI
on:
workflow_dispatch:
branches: [ master, actions ]
jobs:
demo:
runs-on: ubuntu-latest
strategy:
matrix:
python: [3.6, 3.7, 3.8, 3.9]
django: ['2.2', '3.0']
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v1
name: Set up Python ${{ matrix.python }} ${{ matrix.django }}
with:
python-version: ${{ matrix.python }}
- name: python version
env:
TOXENV: "py${{ matrix.python }}-django${{ matrix.django }}"
run:
echo $TOXENV
Run Code Online (Sandbox Code Playgroud)
Sef*_*eff 12
另一种方法是使用 BASH 本机变量替换:
- name: python version
env:
TOXENV: "py${{ matrix.python }}-django${{ matrix.django }}"
run: |
TOXENV=${{ env.TOXENV }}
TOXENV=${TOXENV//.} # replace all dots
echo TOXENV=${TOXENV} >> $GITHUB_ENV # update GitHub ENV vars
- name: print env
run: echo ${{ env.TOXENV }}
Run Code Online (Sandbox Code Playgroud)
这个想法是将 GitHub actions 表达式变量读入 BASH 变量并进行字符串操作,然后导出或设置输出以在 GitHub actions 运行时更新。
jid*_*ula 11
env我认为在定义 TOXENV 的值时,在步骤的指令中没有一种简单的方法可以做到这一点。该env指令接受表达式,但表达式中可使用的函数有限,无法替换任意字符。我能找到的最接近的是format(),但不幸的是,这需要目标字符串中的编号大括号,这不适用于您的情况。
run相反,也许您可以使用指令在指令中设置 TOXENV 的值sed,然后将其添加到环境中:
- name: python version
run:
RAW_TOXENV="py${{ matrix.python }}-django${{ matrix.django }}"
TOXENV=$(echo $RAW_TOXENV | sed 's/\.//')
echo "TOXENV=$TOXENV" >> $GITHUB_ENV
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11532 次 |
| 最近记录: |