1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Github上のリポジトリの操作を自動化するdockerコンテナ

Last updated at Posted at 2020-04-25

まとめ

  • Personal access tokenを使うと環境変数で与えやすくて便利ですよ
  • gitの名前とメールアドレスの設定は、しないとエラーで怒られます

↑でわかる人はたぶん続き読まなくて大丈夫です。

ソースコード

forkしてきたリポジトリに本体の更新をマージする処理をしています。

webサーバーになってるのはあとでGoogle Cloud Runで動かすためです。そちらについては別記事のGoogle Cloud Runでバッチ処理をやらせようにて。

docker run とかでmain.shを実行すれば直接実行も可能です。

内容は以下の感じ。

main.sh
rm -rf work
git clone https://$TOKEN:x-oauth-basic@github.com/$USER/$REPOSITORY.git work
cd work
git config user.email $EMAIL
git config user.name $USER
git remote add upstream https://$TOKEN:x-oauth-basic@github.com/$UPSTREAM_USER/$REPOSITORY.git
git fetch upstream
git merge -m "Merge upstream" upstream/master
git push origin master
cd -

やってることはほとんどgitの基本操作なので説明は割愛します。ポイントはURLです。

gitの名前とメールアドレスの設定は、しないとエラーで怒られます。

コンテナ上でgit cloneするのだるいよねって話

Githubからgit cloneしてくる場合、sshかhttpsを使う必要があって、

  • sshだと公開鍵とかのファイルが必要
  • httpsだと認証で名前とパスワード訊かれるのが自動化するときに面倒だし、パスワード渡したくない

というのがあります。

これを解決するために、

という手法を採用しました。URLは先述の内容の通りのフォーマットです。

余談:結果を受け取る

Githubのリポジトリには通知を受け取るメールアドレスを設定する機能(リポジトリのSetting→Notifications)があるので、Slackの転送用のメールアドレスを設定する機能を使って、Slackで通知を受け取るようにして、なんらかのマージが行われたときにはわかるようにしています。

1
3
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
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?