【GitHub Actions】定期的に自動commit・pushを行う

【GitHub Actions】定期的に自動commit・pushを行う

GitHub Actionsを使い、自動でcommitとpushを行うように設定してみます。

やりたいこと

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

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

必要なファイル

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

リポジトリ構成
1<リポジトリ>
2 ├ commit_log.txt
3 └ .github
4  └ workflows
5   └ 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」→「Actions」→「New repository secret」から環境変数を設定します。

環境変数はそれぞれ、USER_EMAILは登録しているメールアドレス、USER_NAMEはGitHubのIDになります。設定すると以下の様な画面になります。

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

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

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

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

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

Actionの実行

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

Actionの実行ページ

Actionの実行ページ

これで、自動で設定したActionが実行されるようになりました。画像から設定したActionが毎日実行されていることが分かります。

Actionの実行履歴

Actionの実行履歴


今回はGitHub Actionsのワークフローに関する記事でした。特に有用な使い道は無さそうな内容ですが、参考になれば幸いです。以上で記事を終わりにします。

参考文献