GiitHub Actions에서 "분기 생성 → json 파일 업데이트 → 제출 → 요청 제출"을 실행합니다.

GiitHub Actions에서 자동으로 분기를 만들고 퇴출을 요청하는 절차가 이뤄졌기 때문에 잘 정리했다.
작업 절차만 실행하면 '분기 생성 → json 파일 업데이트 → 제출 → 제출 요청' 을 실행할 수 있습니다.
이번에 예를 들면, json 파일 업데이트 부분에 대해 하드 코드가 진행되었다.

작업흐름


워크플로우는 다음과 같습니다.
.github/workflows/create_pr.yml
name: "Create PR"

on: [ workflow_dispatch ]

env:
  JSON_FILE_PATH: sample.json
  PR_TITLE: プルリクエストタイトル
  PR_LABEL: hoge,foo
  PR_TEMPLATE: .github/PULL_REQUEST_TEMPLATE.md
  DEST_BRANCH: main

jobs:
  build:
    runs-on: ubuntu-latest
    timeout-minutes: 5

    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Set current datetime as env variable
        env:
          TZ: 'Asia/Tokyo'
        run: echo "CURRENT_DATETIME=$(date +'%Y%m%d%H%M%S')" >> $GITHUB_ENV

      - name: Create new branch
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          git switch -c fix/hoge_${{ env.CURRENT_DATETIME }}
          git push -u origin fix/hoge_${{ env.CURRENT_DATETIME }}

      # 任意の更新処理
      - name: Update json file
        run: |
          cat ${{ env.JSON_FILE_PATH }} | jq '.+ {"user":{"name": "hoge","age": 30}}' > tmp && mv tmp ${{ env.JSON_FILE_PATH }}

      - name: Add and Commit
        uses: EndBug/add-and-commit@v7
        with:
          branch: fix/hoge_${{ env.CURRENT_DATETIME }}
          message: ${{ env.PR_TITLE }}
          add: ${{ env.JSON_FILE_PATH }}

      - name: Create pull request
        uses: repo-sync/pull-request@v2
        with:
          source_branch: fix/hoge_${{ env.CURRENT_DATETIME }}
          destination_branch: ${{ env.DEST_BRANCH }}
          pr_title: ${{ env.PR_TITLE }}
          pr_template: ${{ env.PR_TEMPLATE }}
          pr_label: ${{ env.PR_LABEL }}
          github_token: ${{ secrets.GITHUB_TOKEN }}

각 처리에 대한 설명


현재 시간 가져오기
- name: Set current datetime as env variable
  env:
    TZ: 'Asia/Tokyo'
  run: echo "CURRENT_DATETIME=$(date +'%Y%m%d%H%M%S')" >> $GITHUB_ENV
현재 시간CURRENT_DATETIME을 환경 변수로 설정합니다.
이 처리는 필수적이지 않지만, 제작된 지점 이름에 다른 지점 이름을 덮어쓰지 않으려는 의도가 있습니다.
브랜치 생성
- name: Create new branch
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  run: |
    git switch -c fix/hoge_${{ env.CURRENT_DATETIME }}
    git push -u origin fix/hoge_${{ env.CURRENT_DATETIME }}
새 브랜치를 생성합니다.
분기 이름은 fix/hoge_${{ env.CURRENT_DATETIME }}이며 현재 시간 및 기타 분기 이름은 포함되지 않습니다.
이 지점의 명칭은 임의이다.
파일 업데이트
  # 任意の更新処理
- name: Update json file
  run: |
    cat ${{ env.JSON_FILE_PATH }} | jq '.+ {"user":{"name": "hoge","age": 30}}' > tmp && mv tmp ${{env.JSON_FILE_PATH }}
이것은 예로 열거한 처리다.
json 파일이 업데이트되었지만, 실제로는 inputs 폼에서 입력하거나 GiitHubAction용 API 업데이트하고자 하는 값을 제출할 수 있습니다.
커밋
- name: Add and Commit
  uses: EndBug/add-and-commit@v7
  with:
    branch: fix/hoge_${{ env.CURRENT_DATETIME }} # ブランチ名
    message: ${{ env.PR_TITLE }} # コミットメッセージ
    add: ${{ env.JSON_FILE_PATH }} # addするファイル
업데이트된 파일을 제출합니다.
EndBug/add-and-commit@v7라는 프로그램 라이브러리를 사용합니다.
제출처에서 방금 만든 지점을 지정하고 메시지를 등록합니다.
재설정 요청
- name: Create pull request
  uses: repo-sync/pull-request@v2
  with:
    source_branch: fix/hoge_${{ env.CURRENT_DATETIME }} # プルリクエストを作成するブランチ
    destination_branch: ${{ env.DEST_BRANCH }} # マージ先のブランチ
    pr_title: ${{ env.PR_TITLE }} # プルリクエストのタイトル
    pr_template: ${{ env.PR_TEMPLATE }} # プルリクエストのテンプレート
    pr_label: ${{ env.PR_LABEL }} # プルリクエストのラベル(カンマ区切りで複数指定可能)
    github_token: ${{ secrets.GITHUB_TOKEN }}
호출 라이브러리 repo-sync/pull-request.
필요한 항목을 지정하고 요청을 만들 수 있습니다.
사용PULL_REQUEST_TEMPLATE도 가능합니다.

좋은 웹페이지 즐겨찾기