как установить action-output как определено в action.yml из bash -скрипта - PullRequest
0 голосов
/ 16 марта 2020

У меня есть файл action.yml с выходными данными:

name: My action
description: executes bash script
inputs:
 some_input:
    description: some input
    required: true
outputs:
  some_output:
    description: some output
runs:
  using: node12
  main: dist/index.js

Это действие является действием узла, которое выполняет только сценарий bash. Я хочу дать этому действию некоторый ввод и скрипт bash, чтобы дать некоторый вывод.

index. js:

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

async function run() {
  try {
    const someInput = core.getInput('some_input');
    await exec.exec(`bash ${__dirname}/some-bash-script.sh ${someInput}`);
  } catch (error) {
    core.setFailed(error.message);
  }
}

run();

Bash:

#!/bin/bash
set -e

echo ::set-output name=some_output="My output ($1)"

Рабочий процесс yaml:

name: maven deploy
on:
  push:
    branches:
      - '**'

jobs:

  mine:
    runs-on: ubuntu-latest

    steps:
      - uses: jactor-rises/my-action@v1
        id: mine
        with:
          some_input: this input
      - run: echo ${{ steps.mine.outputs.some_output }}

Это правильный способ сделать это? Он не работает в моем рабочем процессе ... Как я могу использовать этот вывод в своем рабочем процессе?

На этот вопрос есть ответ на GitHub, но я все еще изо всех сил: https://github.community/t5/GitHub-Actions/How-to-set-action-output-as-defined-in-action-yml-from-a-bash/m-p/50366

1 Ответ

0 голосов
/ 18 марта 2020

Ваш bash скрипт пытается отобразить переменную окружения INPUT_SOME_INPUT. Эта переменная окружения не задается.

Ваше действие передает свой вход в сценарий оболочки (someInput) в качестве первого аргумента. Вам нужно либо:

  1. установить вместо этого переменную среды INPUT_SOME_INPUT, либо
  2. использовать первый аргумент в скрипте bash ($1).

Например:

echo ::set-output name=some_output="My output ($1)"
...