Closed13

Productivity Weekly記事でmainブランチへのマージ後に簡単にpublished: trueにしたい

Futa HirakobaFuta Hirakoba

mainブランチへのマージ後に簡単にpublished: trueにしたい
https://github.com/korosuke613/zenn-articles/issues/12

github連携での記事はmainブランチに存在しないとZenn上で確認できない。
mainブランチに追加していくスタイルなら解決できるが、コミットログを汚したくないので基本的にプルリクで追加していきたい

mainブランチに追加後にZenn上で確認したらpublished: falseからpublished: trueにする必要がある。いちいち変更してまたコミットするのめんどい。

GitHub Actionsで一連の作業を自動化するとそこら辺楽になる。

Futa HirakobaFuta Hirakoba

とりあえず思いついた方法

Futa HirakobaFuta Hirakoba

なんにせよpublished: falsepublished: trueにするプログラムを作らないといけない。
せっかくだからGitHub Actionにしようか

Futa HirakobaFuta Hirakoba
describe("isWorkingTreeClean", () => {
  test("Working tree is clean", async () => {
    const actual = await isWorkingTreeClean();
    expect(actual).toEqual(true);
  });

  test("Working tree is dirty", async () => {
    await exec("touch", [".dirty"]);
    const actual = await isWorkingTreeClean();
    expect(actual).toEqual(false);
    await exec("rm", ["-f", "./.dirty"]);
  });
});

こういうテストがある時、ローカルでは実行したくない。(gitのツリーが汚れるため通らない)

describe("isWorkingTreeClean", () => {
  const testIf = (condition: boolean) => (condition ? test : test.skip);
  const onGitHubActions = process.env.CI === "true";

  testIf(onGitHubActions)("Working tree is clean", async () => {
    const actual = await isWorkingTreeClean();
    expect(actual).toEqual(true);
  });

  testIf(onGitHubActions)("Working tree is dirty", async () => {
    await exec("touch", [".dirty"]);
    const actual = await isWorkingTreeClean();
    expect(actual).toEqual(false);
    await exec("rm", ["-f", "./.dirty"]);
  });
});

なので、こういう風にすればテストをスキップできる。(参考)

このスクラップは2021/03/03にクローズされました