Help us understand the problem. What is going on with this article?

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

まとめ

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

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

ソースコード

https://github.com/skuroki/merger

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で通知を受け取るようにして、なんらかのマージが行われたときにはわかるようにしています。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした