在我的action.yml中,我定义了一个输入:
name: 'test action'
author: Param Thakkar
description: 'test'
inputs:
test_var:
description: 'A test variable'
required: true
runs:
using: 'docker'
image: 'Dockerfile'
在我的工作流程中,我通过了test_var:
name: CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Test the GH action
uses: paramt/github-actions-playground@master
with:
test_var: "this is just a test"
因此在工作流运行时应该创建一个环境变量,对吗?但是当我运行这个简短的python脚本时:
import os
print(os.getenv('TEST_VAR'))
print("It works!")
exit(0)
它打印:
None
It works!
我认为我必须通过Dockerfile传递ENV变量...现在我的Dockerfile如下所示:
FROM python:latest
# Add files to the image
ADD entrypoint.py /entrypoint.py
ADD requirements.txt /requirements.txt
# Save ENV var in a temp file
RUN $TEST_VAR > /temp_var
# Install dependencies and make script executable
RUN pip install -r requirements.txt
RUN chmod +x entrypoint.py
RUN echo "temp var: "
RUN cat /temp_var
# Run script with the ENV var
ENTRYPOINT export TEST_VAR="$TEST_VAR"; /entrypoint.py
但是没有回显该变量,也没有将其传递给pythons脚本。当我尝试将$TEMP_VAR
设置为随机字符串时,它会 发送到Python脚本。这是我的错吗?还是GitHub动作没有按预期运行?
答案 0 :(得分:2)
我认为您正在尝试读取错误的环境变量名称。 GitHub Actions将INPUT_
添加到输入变量的名称。因此,请尝试以下操作:
print(os.getenv('INPUT_TEST_VAR'))
从文档中:
在工作流文件中为操作指定输入时,或使用 默认输入值,GitHub为 输入名称为INPUT_。环境变量 创建的将输入名称转换为大写字母并替换空格 含_个字符。
例如,如果工作流定义了numOctocats和octocatEyeColor 输入,操作代码可以使用以下命令读取输入的值: INPUT_NUMOCTOCATS和INPUT_OCTOCATEYECOLOR环境变量。
https://help.github.com/en/articles/metadata-syntax-for-github-actions#inputs
答案 1 :(得分:1)
有点晚了,但是对于下一个,您也可以使用env
字段:
name: CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Test the GH action
uses: paramt/github-actions-playground@master
env:
test_var: "this is just a test"
将包含在创建docker的过程中,并且不带前缀INPUT_