从GitHub Actions中当前运行的工作流中获取最新成功运行的工作流的提交哈希?

时间:2020-06-14 19:20:40

标签: git github-actions

我正在GitHub存储库中编写LaTeX文档,我想使用git-latexdiff来编译pdf文件,该文件显示HEAD与上一次成功运行的工作流的提交哈希之间的区别:

git latexdiff "$LAST_SUCCESSFUL_COMMIT_HASH" HEAD --no-view -o diff.pdf

因此,我需要一种从当前工作流程运行中访问最新成功运行的工作流程的提交哈希的方法。

我在文档中没有找到任何内容,但是也许有解决方法?

2 个答案:

答案 0 :(得分:0)

我实际上通过使用GitHub Actions API编写了一个小的GitHub Action来解决了这个问题:

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

try {
  const octokit = github.getOctokit(core.getInput('github_token'));

  octokit.actions.listWorkflowRuns({
    owner: process.env.GITHUB_REPOSITORY.split('/')[0],
    repo: process.env.GITHUB_REPOSITORY.split('/')[1],
    workflow_id: core.getInput('workflow_id'),
    status: "success",
    branch: core.getInput('branch'),
    event: "push"
  }).then( res => {
    const headCommits = res.data.workflow_runs.map(run => {return run.head_commit});

    const sortedHeadCommits = headCommits.sort( (a, b) => {
        const dateA = new Date(a.timestamp);
        const dateB = new Date(b.timestamp);
        if (dateA < dateB) return -1;
        if (dateA > dateB) return 1;
        return 0;
    });

    const lastSuccessCommitHash = sortedHeadCommits[sortedHeadCommits.length -1].id;

    core.setOutput("commit_hash", lastSuccessCommitHash)
  })
} catch (error) {
  core.setFailed(error.message);
}

答案 1 :(得分:-1)

要在终端中(位于此文件夹中)查看当前(HEAD)版本与先前提交的版本之间的差异文件),只需键入:

git latexdiff HEAD~1 --main filename

有关 latexdiff 和以前的 commit’s 的更多信息,请参见此tutorial