установите входное значение действий GitHub для локального тестирования

#javascript #github-actions #building-github-actions

#javascript #github-действия #построение-github-actions

Вопрос:

Я пишу действие GitHub, которое получает обязательное поле ввода с именем file using @actions/core library.

 const core = require("@actions/core");

async function run() {
    try {
        let file = core.getInput('file', {required: true});

        // rest of my action ...
  

Я могу запустить его локально, и он завершается с ошибкой, как и ожидалось, как есть (ввод не предоставлен).
Есть ли встроенный способ предоставления входных данных (аналогичный env-vars), чтобы я мог запускать и тестировать его локально?

 Error: Input required and not supplied: file
    at Object.getInput (.../node_modules/@actions/core/lib/core.js:78:15)
    at run (.../src/main.js:6:25)
    at Object.<anonymous> (.../src/main.js:40:5)
    at Module._compile (internal/modules/cjs/loader.js:1137:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
    at Module.load (internal/modules/cjs/loader.js:985:32)
    at Function.Module._load (internal/modules/cjs/loader.js:878:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
    at internal/main/run_main_module.js:17:47
::error::Input required and not supplied: file
  

Ответ №1:

Если вы посмотрите на источники getInput , вы можете увидеть, что он использует переменные среды:

 const val: string =
    process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || ''
  

Зная это, вы можете просто установить эту переменную среды:

 const setInput = (name,value)=>
    process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`]=value;

  

В качестве альтернативы вы также можете указать переменную среды из родительского процесса, например bash :

 export INPUT_YOUR_VARIABLE='whatever'
node main.js