Skip to content

Action (uses: 5ym/seisho@v1) として使えるようにし、テンプレートをやめる - #9

Merged
5ym merged 7 commits into
masterfrom
action
Oct 3, 2026
Merged

5ym merged 7 commits into
masterfrom
action

Conversation

@5ym

@5ym 5ym commented Oct 3, 2026 •

Copy link
Copy Markdown
Owner

変えたこと

  • action.yml: 変換を composite action にまとめた。利用側は actions/checkout のあと uses: 5ym/seisho@v1 だけで使える
    • 入力は 3 つ: source-branch (既定は push されたブランチ。今までは master 固定)、pdf-branch (既定 pdf)、quarkdown-major (既定 2)
    • composite では continue-on-error が使えない。そのため、変換するものの有無は明示的に判定する
  • 直した不具合 (今までのワークフローにもあったもの)
    • Quarkdown は出力名の記号 (全角のコロン・空白など) を - に置き換える。そのため 第10回講義:課題.qd のような名前だと、pdf ブランチへ移すときに見つからず落ちていた。今は一時ディレクトリに出してから、元の名前へ移す
    • Quarkdown 2.6 は chrome-headless-shell をインストール先に置き、その場所を QD_CHROME_PATH で渡す。ところがラッパー (/usr/local/bin) はキャッシュされない。そのため、同じ版の 2 回目以降は PDF の書き出しで落ちていた。キャッシュから戻したときにも QD_CHROME_PATH を設定する
  • README: Action として使う前提で、短く書き直した (82 → 52 行)
  • このリポジトリのワークフロー: uses: ./ で、sample.qd を使って action.yml を試すだけにした
  • md-to-qd.sh: 使わないので消した
  • 名前: seisho (清書) にする。マージ後にリポジトリを改名する
  • 仕様の箇条書き: docs/spec.md に分けた

確かめたこと

5ym/academic の作業ブランチから、この PR のブランチ (5ym/paper@action) を呼び、pdf-test ブランチに出力させた。

  • 初回: 29 本すべてが変換された。全角のコロン・空白を含む名前も通り、PDF の日本語も正しく出ている
  • 2 回目 (1 本削除・1 本変更): 削除した PDF が消え、変更した 1 本だけが変換された。キャッシュから戻した Quarkdown で、PDF まで書き出せた

マージしたらリポジトリを 5ym/seisho に改名し、v1 のタグを打ち、テンプレート設定を外します。

🤖 Generated with Claude Code

https://claude.ai/code/session_01USCeESvgLneCai7g8399GM

5ym and others added 4 commits October 3, 2026 20:44
ワークフローを写さずに uses: 5ym/paper@v1 だけで使えるようにする。
元のブランチ (既定は push されたブランチ)・PDF のブランチ・Quarkdown の
メジャー版を入力で変えられる。composite では continue-on-error が使えない
ので、変換対象の有無は明示的に判定する。

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01USCeESvgLneCai7g8399GM
全角のコロンや空白を含むファイル名だと、Quarkdown が - に置き換えた名前で
書き出し、pdf ブランチへ移すときに見つからず落ちていた。

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01USCeESvgLneCai7g8399GM
Quarkdown 2.6 は chrome-headless-shell をインストール先の lib に置き、
/usr/local/bin のラッパーが QD_CHROME_PATH で渡す。ラッパーはキャッシュ
されないので、同じ版の 2 回目以降は PDF の書き出しで落ちていた。

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01USCeESvgLneCai7g8399GM
- README を使い方 (uses: 5ym/paper@v1)・入力・書き方・手元での確認・md からの
  移行だけに絞る
- このリポジトリのワークフローは sample.qd で action.yml (uses: ./) を試すもの
- md-to-qd.sh は置き場所ではなく、実行したリポジトリの直下で動く

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01USCeESvgLneCai7g8399GM
@claude

claude Bot commented Oct 3, 2026 •

Copy link
Copy Markdown

Claude finished @5ym's task in 42s —— View job


レビュー結果

致命的な不具合は見つかりませんでした。要確認の点を 3 つ、インラインコメントにしました。

  • 不具合・設計: continue-on-error をやめて、変換対象の有無を modified.txt で明示的に判定する形は妥当です。pipefail 下でも || true が付いています。出力名を一時ディレクトリ経由にして元の名前へ移す対応も、QD_CHROME_PATH の張り直しも適切です。
    • 要確認: push 以外のイベントや、チェックアウトしていないブランチを source-branch に指定したときの挙動 (action.yml:40)。
    • 要確認: 並行実行時の git push の競合。README に concurrency の例を書くとよいです (action.yml:144)。
  • セキュリティ: 入力値はすべて env 経由でシェルへ渡しており、式の直接展開によるインジェクションはありません。トークンの既定も github.token で、問題ありません。
  • テスト: 他リポジトリ (5ym/academic) から @action で呼ぶ実機確認は、内容として十分です。ただし、このリポジトリ自身のワークフロー (uses: ./) は、途中でブランチが切り替わる影響を受ける可能性があり、未検証に見えます (.github/workflows/convert.yml:16)。
  • md-to-qd.sh の変更は問題ありません。

Comment thread action.yml
id: check
shell: bash
env:
SRC: ${{ inputs.source-branch || github.ref_name }}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

要確認: 既定の github.ref_name は push 以外のイベントでは使えません。例えば pull_request では 9/merge、タグの push ではタグ名になります。そのため git diff "$base" "$SRC" が失敗します。また、チェックアウト済みでないブランチを source-branch に指定した場合も、ローカルに ref が無いので同様に失敗します (origin/$SRC を使うか、git rev-parse --verify で確かめて分かりやすく失敗させると安全です)。README に「push イベント専用」と書くか、pull_request では PDF ブランチへ push しないようにしてください。

Comment thread action.yml
env:
PDF: ${{ inputs.pdf-branch }}
run: |
if [ "$(git branch --show-current)" = "$PDF" ]; then

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

要確認: 続けて 2 回 push すると、2 つのジョブが同時に動いて、後のほうの git push が non-fast-forward で落ちます。README の利用例に concurrency: { group: pdf, cancel-in-progress: false } を入れておくとよいです。

git add . && git commit -m "convert"
- name: push
run: git push origin HEAD
- uses: ./

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

要確認: uses: ./ は、action が途中で pdf ブランチへ切り替わるので、ローカル composite の post ステップ (actions/cache の保存) が action.yml を作業ツリーから探して失敗するおそれがあります。pdf ブランチには action.yml がありません。PR の確認は 5ym/paper@action から呼ぶ形で行われているため、この ./ 経由の経路は未検証に見えます。このワークフロー自体が緑になるか確かめてください。

- source-branch のローカルブランチが無ければ origin から作る
- convertdone.txt には GITHUB_SHA ではなく source-branch の SHA を書く
- README とこのリポジトリのワークフローに concurrency を入れ、push と
  workflow_dispatch で使えること (pull_request には非対応) を明記する

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01USCeESvgLneCai7g8399GM
@claude

claude Bot commented Oct 3, 2026 •

Copy link
Copy Markdown

Claude finished @5ym's task in 32s —— View job


レビュー結果 (最新コミット 4742fbe 時点)

前回の指摘 2 点は解消されています。新たに直すべき不具合は見つかりませんでした。

  • チェックアウトしていない source-branch: refs/heads/$SRC が無ければ origin/$SRC から作る形になり、git diff が ref 不在で落ちる問題は解消されています。convertdone.txt も git rev-parse "$SRC" になり、指定ブランチの SHA を記録します。
  • push の競合: README とこのリポジトリのワークフローに concurrency が入りました。待機中の実行は最新の 1 件に置き換えられます。ただ、差分は convertdone.txt からの累積なので、途中の実行が捨てられても取りこぼしは出ません。
  • イベントの制限: README に「push と workflow_dispatch で使えます (pull_request には対応していません)」と明記されました。
  • セキュリティ: 入力値はすべて env 経由でシェルに渡しています。トークンの既定は github.token で、問題ありません。

要確認 (1 点)

  • .github/workflows/convert.yml の uses: ./ 経由の実行は、PR の確認 (5ym/academic から @action で呼ぶ形) では通っていません。ただ、actions/cache の post ステップはダウンロード済みの action から動くはずなので、前回の懸念は小さいと考えます。それでも、このワークフローが緑になるかは、マージ前に PR の Checks で確認してください。

テスト: 29 本の初回変換と、削除・変更を含む 2 回目 (キャッシュ復元) まで実機で確認されており、内容として十分です。

@claude

claude Bot commented Oct 3, 2026 •

Copy link
Copy Markdown

Claude finished @5ym's task in 19s —— View job


レビュー結果 (synchronize 後の再確認)

致命的な不具合は見つかりませんでした。前回の指摘のうち 2 件は、追加コミット (4742fbe) で解消されています。

解消済み

  • チェックアウトしていない source-branch は、git rev-parse --verify で確かめて origin/$SRC から作る形になりました (action.yml:42)。
  • 続けて push したときの競合は、concurrency: pdf を README と convert.yml に入れて避けています。
  • convertdone.txt に書く値は $GITHUB_SHA から git rev-parse "$SRC" に変わりました。source-branch が push 元と違うときも、実際に変換した版が記録されます。

要確認 (小さな点)

  • pull_request やタグの push で呼ぶと、github.ref_name が 9/merge やタグ名になります。git branch "$SRC" "origin/$SRC" が失敗し、メッセージも分かりにくいです。README の利用例は push なので実害は小さいです。書き添えるか、git rev-parse が失敗したときに分かりやすく止めると親切です。
  • .github/workflows/convert.yml の uses: ./ は、途中でブランチが pdf に切り替わります。ローカル composite の post ステップが action.yml を作業ツリーから読み直すなら、失敗するおそれがあります。actions/cache の本体は _actions 配下にあるので、おそらく問題ありません。PR の確認は 5ym/paper@action 経由でした。マージ後に、このワークフローが緑になるかを一度見てください。

そのほか

  • セキュリティ: 入力値はすべて env 経由でシェルに渡しています。式の直接展開はありません。トークンの既定は github.token です。
  • 削除のみの push: 変換対象が無くても、remove のコミットは push されます。
  • md-to-qd.sh と README の変更に問題はありません。

- README と action.yml の名前を seisho に、利用例を uses: 5ym/seisho@v1 にする
- md-to-qd.sh は使わないので消す
- push 以外のイベントで source-branch が見つからないときは、分かるメッセージで止める

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01USCeESvgLneCai7g8399GM
@5ym 5ym changed the title Action (uses: 5ym/paper@v1) として使えるようにし、テンプレートをやめる Action (uses: 5ym/seisho@v1) として使えるようにし、テンプレートをやめる Oct 3, 2026
@claude

claude Bot commented Oct 3, 2026 •

Copy link
Copy Markdown

Claude finished @5ym's task in 20s —— View job


レビュー結果 (最新コミット 987d97f 時点)

致命的な不具合は見つかりませんでした。前回までの指摘 (source-branch の解決、concurrency、convertdone.txt の記録値) は解消されています。コミット 987d97f はリネームと md-to-qd.sh の削除だけで、動作は変わっていません。

不具合・設計

  • action.yml:44-49: チェックアウトしていないブランチや pull_request などで origin/$SRC が無いとき、原因が分かるメッセージで止まります。問題ありません。
  • action.yml:62: list は || true を持つので、pipefail 下でも差分が空で落ちません。modified.txt の有無で変換対象の判定をする作りも妥当です。
  • action.yml:136: 出力を一時ディレクトリの固定名 document にしてから元の名前へ移す形で、全角コロンや空白を含む名前の不具合は直っています。
  • 要確認: action.yml:60-62 で git diff "$base" "$SRC" を使っています。base は前回変換した source 側のコミットなので、浅い checkout (fetch-depth: 1) ではそのコミットが手元に無い場合があります。5ym/academic での 2 回目の確認は通っているので、今の README の使い方なら実害は小さいと思います。ただ、actions/checkout の fetch-depth について README に一言あると安心です。

セキュリティ

  • 入力値はすべて env 経由でシェルに渡しており、式の直接展開はありません。
  • トークンの既定は github.token で、permissions: contents: write も必要な分だけです。

テスト

  • 他リポジトリ (5ym/academic) から @action で呼ぶ実機確認は十分です。初回 29 本の変換と、削除・変更を含むキャッシュ復元後の 2 回目まで見ています。
  • 要確認: .github/workflows/convert.yml の uses: ./ は、途中で作業ツリーが pdf ブランチに切り替わります。actions/cache の post ステップは _actions 配下から動くので、おそらく問題ありません。ただ、このワークフロー自身が緑になるかは、マージ前に PR の Checks か、マージ後の最初の実行で確認してください。

そのほかの指摘はありません。

@5ym
5ym merged commit 1b0e88e into master Oct 3, 2026
1 check passed
@5ym
5ym deleted the action branch October 3, 2026 12:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant