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

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

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

目次

やりたいこと

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

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

必要なファイル

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

リポジトリ構成
1リポジトリ
2 │ commit_log.txt
34 └──.github
5    └─workflows
6       auto-commit.yml

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

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

Actionsの設定ページ

Actionsの設定ページ

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

auto-commit.yml
 1name: auto-commit
 2
 3on:
 4  workflow_dispatch:
 5
 6  schedule:
 7    - cron:  "0 0 * * *"
 8
 9jobs:
10  build:
11    runs-on: ubuntu-latest
12
13    steps:
14      - uses: actions/checkout@v3
15
16      - name: Set current datetime as env variable
17        env:
18          TZ: 'Asia/Tokyo' 
19        run: echo "CURRENT_DATETIME=$(date +'%Y-%m-%d %H:%M:%S')" >> $GITHUB_ENV
20
21      - name: Commit
22        run: |
23          git config --global user.email ${{ secrets.USER_EMAIL }}
24          git config --global user.name ${{ secrets.USER_NAME }}
25          echo -e ${{ env.CURRENT_DATETIME }} >> commit_log.txt
26          git add commit_log.txt
27          git commit -m "[add] 自動コミット:${{ env.CURRENT_DATETIME }}"
28          git push origin main          

レポジトリの設定

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

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

レポジトリの設定ページ1

レポジトリの設定ページ1

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

レポジトリの設定ページ2

レポジトリの設定ページ2

Actionの実行

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

Actionの実行ページ

Actionの実行ページ

これで自動で設定したActionが実行されるようになりました。

Actionの実行履歴

Actionの実行履歴

毎日Actionが実行されていることが分かります。

特に有用な使い道は無さそうな内容ですが、参考になれば幸いです。以上で記事を終わりにします。

参考文献

関連記事