如何从Java脚本执行bash脚本

时间:2019-11-21 13:23:38

标签: git github github-actions

我想在一些存储库之间共享GitHub动作,现在每个存储库中都包含一个发布bash脚本。

为了能够运行相同的脚本,我需要执行Github操作。

我对javascript知识不多,无法重写简单的hello world javascript操作(https://github.com/actions/hello-world-javascript-action/blob/master/index.js)来运行bash脚本。

首选使用javascript作为动作的想法,因为它的性能好并且可以访问GitHub webhook有效负载。

我第一次尝试根据hello-world动作提供javascript动作:

const exec = require('@actions/exec');
const core = require('@actions/core');
const github = require('@actions/github');

try {
  const filepath = core.getInput('file-path');
  console.log(`testing ${filepath`});

  // Get the JSON webhook payload for the event that triggered the workflow
  const payload = JSON.stringify(github.context.payload, undefined, 2);
  console.log(`The event payload: ${payload}`);

  exec.exec('./test')
} catch (error) {
  core.setFailed(error.message);
}

如何从控制台执行javascript?

2 个答案:

答案 0 :(得分:2)

当前,唯一可能的types of actions是Javascript和Docker容器操作。

因此,您可以选择以下两种方式:

  1. 在Docker容器操作中执行bash脚本
  2. 通过Javascript操作执行bash脚本。 @actions/execactions/toolkit软件包旨在执行此操作-执行工具和脚本。

答案 1 :(得分:0)

这是一种可以通过JavaScript操作执行bash脚本的方式。脚本文件为index.js

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

async function run() {
  try {
    // Set the src-path
    const src = __dirname + "/src";
    core.debug(`src: ${src}`);

    // Fetch the file path from input
    const filepath = core.getInput("file-path");
    core.debug(`input: ${filepath}`);

    // Execute bash script
    await exec.exec(`${src}/test`);

    // Get the JSON webhook payload for the event that triggered the workflow
    const payload = JSON.stringify(github.context.payload, undefined, 2);
    console.debug(`github event payload: ${payload}`);

  } catch (error) {
    core.setFailed(error.message);
  }
}

// noinspection JSIgnoredPromiseFromCall
run();