【GitHub Actions】自動コミット・プッシュを行う

【GitHub Actions】自動コミット・プッシュを行うプログラミングの知識
プログラミングの知識

今回はGitHub Actionsを使い、毎日自動でコミットとプッシュを行うように設定してみます。

スポンサーリンク

やりたいこと

GitHubのリポジトリ内のテキストファイルをGitHub Actionsのワークフローを用いて毎日自動で更新し、同時にコミットとプッシュも自動で行います。

テキストファイルとコミットログにはActionを実行した時間を取得して書き込む様にします。

必要なファイル

必要なファイルは以下の2つになります。

リポジトリ
│  commit_log.txt
│
└──.github
   └─workflows
           auto-commit.yml

GitHubのリポジトリ直下にコミットログを追加するためのcommit_log.txtと、自動コミット・プッシュのワークフローの設定ファイルであるauto-commit.yml/.github/workflows直下に配置します。

ymlファイルはリポジトリのActionsタブのset up a workflow yourselfからでも作成することができます。

【GitHub Actions】自動コミット・プッシュを行う
Actionsの設定ページ

auto-commit.ymlの内容は以下になります。

name: auto-commit

on:
  workflow_dispatch:

  schedule:
    - cron:  "0 0 * * *"

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3

      - 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: Commit
        run: |
          git config --global user.email ${{ secrets.USER_EMAIL }}
          git config --global user.name ${{ secrets.USER_NAME }}
          echo -e ${{ env.CURRENT_DATETIME }} >> commit_log.txt
          git add commit_log.txt
          git commit -m "[add] 自動コミット:${{ env.CURRENT_DATETIME }}"
          git push origin main

レポジトリの設定

続いて、環境変数のUSER_EMAILUSER_NAMEを設定します。

リポジトリのSettingsタブから設定ページに飛び、Secrets and variables -> ActionsNew repository secretから環境変数を設定します。環境変数はそれぞれ、USER_EMAILは登録しているメールアドレス、USER_NAMEはGitHubのIDになります。設定すると以下の様な画面になります。

【GitHub Actions】自動コミット・プッシュを行う
レポジトリの設定ページ1

また、設定のActions-> GeneralWorkflow permissionsの設定がRead and write permissionsになっているか確認しましょう。これが設定されていないとActionの書き込み権限が無いので上手く動作しません。

【GitHub Actions】自動コミット・プッシュを行う
レポジトリの設定ページ2

Actionの実行

ここまでで準備が終わったので、Actionを実行します。

【GitHub Actions】自動コミット・プッシュを行う
Actionの実行ページ

これで自動で設定したActionが実行されるようになりました。以上で記事を終わりにします。

参考文献

スポンサーリンク
Dim雑記