Как передать переменную среды, полученную от действий GitHub - PullRequest
2 голосов
/ 04 октября 2019

В моем 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!

Я думаю, что мне нужно передать переменную ENV через мой Dockerfile ... Прямо сейчас мой 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 работает не так, как задумано?

Вот ссылка на тестовое репо

1 Ответ

2 голосов
/ 05 октября 2019

Я думаю, что вы пытаетесь прочитать неправильное имя переменной среды. 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

...