1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Github Actionsのrun_numberで課題番号を作ってみた

Posted at

はじめに

AIを用いて開発するにあたって仕様やタスクのドキュメントをフォルダ毎にまとめて管理したいことがあります。
フォルダを管理するためのIDをGithub Actionsを使用して行ってみました。

IDの条件は以下の通りです。

  1. 番号がユニークであること
  2. 一定順序であること
  3. 人間が分かりやすいこと

spec-kitでは[通し番号]-[機能名]となっていて複数人で開発を行う場合に通し番号が被ってしまいます。

IDはrun_numberを使用してspec-[run_number](spec-1, spec-2 ...)という形のフォルダにしました。

run_numberはワークフローが実行される度に1ずつ数が増えていきます。

実装

以下のコードは同時に実行すると同じIDが返ってくる問題があります。

# .github/workflows/generate-spec-id.yml
name: Generate Spec ID
on:
  workflow_dispatch:

jobs:
  generate-spec-id:
    runs-on: ubuntu-latest
    steps:
      - name: Generate Spec ID from run number
        id: generate
        run: |
          # GitHub Actionsが自動管理する実行回数を使用
          SPEC_ID=${{ github.run_number }}
          FOLDER_NAME="spec-$SPEC_ID"
          
          echo "spec_id=$SPEC_ID" >> $GITHUB_OUTPUT
          echo "folder_name=$FOLDER_NAME" >> $GITHUB_OUTPUT
          
      - name: Output result
        run: |
          echo "::notice::Generated Spec ID: ${{ steps.generate.outputs.spec_id }}"
          echo "::notice::Folder name: ${{ steps.generate.outputs.folder_name }}"
#!/bin/bash
# spec_id.sh

echo "Starting workflow..."

# ワークフローを実行
gh workflow run generate-spec-id.yml

echo "Waiting for workflow to start..."
sleep 3

# 最新の実行を取得
LATEST_RUN=$(gh run list --workflow=generate-spec-id.yml --limit=1 --json databaseId,number,status -q '.[0]')
RUN_ID=$(echo $LATEST_RUN | jq -r '.databaseId')
RUN_NUMBER=$(echo $LATEST_RUN | jq -r '.number')

echo "Generated Spec ID: $RUN_NUMBER"
echo "Folder name: spec-$RUN_NUMBER"

# フォルダを作成
mkdir -p ".project/works/spec-$RUN_NUMBER"
echo "Created folder: .project/works/spec-$RUN_NUMBER"

結果

run_numberが返ってきてユニークなフォルダが生成されるようになりました。

$ ./spec_id.sh
Starting workflow...
✓ Created workflow_dispatch event for generate-spec-id.yml at main

To see runs for this workflow, try: gh run list --workflow=generate-spec-id.yml
Waiting for workflow to start...
Generated Spec ID: 1
Folder name: spec-1
Created folder: spec-1
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?