自動化バッチの合体とその課題。
入手先
- MEGAがまたしても使えない
バッチ
GitHubアップロードの自動化
以前のローカルリポジトリ作成バッチと、前回のリモートリポジトリ作成バッチを合わせる。
ローカルリポジトリ作成バッチの先頭で、リモートリポジトリ作成バッチを呼び出す。
:: リモートリポジトリを生成する
call CallCreateRepository.bat
callで呼び出すことで同期呼出となる。WebAPIの応答が完了してから続きを実行できる。
FirstPush.bat
を実行すると、ローカルとリモートの両リポジトリ作成までやってくれる。
リモート・リポジトリ削除
ついでにリモート・リポジトリを削除するバッチも用意した。
課題
- パラメータにすべき項目が整理できていない
- パラメータ値を定義し、取得する方法を確立したい
- パラメータ値が多重定義されてしまっている
- リポジトリ名のエラーチェックができていない
- コミットメッセージにUTF8な日本語を送信したい
- 認証をBasicからAccessTokenにしたい
- バッチファイル数が4つもあって邪魔
パラメータにすべき項目が整理できていない
- set GIT=C:/git.exe
- set CURL=C:/curl.exe
- set NKF=C:/nkf.exe
- set CURL_PEM=C:\Program Files\Git\ssl\certs\cacert.pem
- set CURL_POST_PARAMETER_FILE=post_param_utf8.txt
- set GitHub_User=
- set GitHub_Pass=
- set GitHub_Mail=
- REPO_NAME="NewRepo"
- REPO_DESC="日本語の説明です。"
- REPO_HOME="https://www.google.co.jp"
- SET USER_MAIL=ytyaru@outlook.jp
- SET SSH_HOST=github.com.ytyaru
- SET COMMIT_MESSAGE=
ファイル間で重複するであろう項目
変数 | CreateRepository.sh | CallShell.bat | FirstPush.bat |
---|---|---|---|
GIT | × | × | ○ |
CURL | ○ | × | × |
NKF | ○ | × | ○ |
CURL_PEM | ○ | × | × |
CURL_POST_PARAMETER_FILE | ○ | × | × |
GitHub_User | ○ | × | ○ |
GitHub_Pass | ○ | × | ○ |
GitHub_Mail | ○ | × | ○ |
REPO_NAME | ○ | × | ○ |
REPO_DESC | ○ | × | × |
REPO_HOME | ○ | × | × |
SSH_HOST | × | × | ○ |
COMMIT_MESSAGE | × | × | ○ |
パラメータ値を定義し、取得する方法を確立したい
- GitHubのアカウントはTSVファイルに定義し、バッチやシェルはTSVから値を取得したい
- パラメータ
SSH_HOST
は、C:\Documents and Settings\Administrator\.ssh
のconfig
ファイルにおけるHost
定義のどれかと一致しているかチェックしたい
パラメータ値の多重定義
.batと.shのパラメータ設定が重複している。
同じパラメータなのに、それぞれ別々に定義している。 だから各ファイルをそれぞれ修正せねばならない。
同じパラメータの修正は1箇所で済むようにしたい。
重複している項目
- username
- REPOSITORY_NAME
べつのユーザのリポジトリを操作したいとき、2ファイルを修正する必要がある。
同じことを何度も書かせるお役所仕事のようで最悪。 写し間違えたら、対象リポジトリが変わるため正しく動作しなくなる。
リポジトリ名は.batと.shの構文でディレクトリ名を取得している。 こういう違いも面倒。一つに統一したい。
重複してしまう理由
.batから.shへ起動引数として渡せばいいはず。 しかし、descriptionに日本語を使用するせいか通らなかった。
.batと.shの間では文字コード問題が発生してしまうのかもしれない。 .batのファイル文字コードはCP932、.shのファイル文字コードはUTF-8である。
そもそも、curlコマンドが.batから実行できれば.shに分ける必要もなかった。 curlコマンドがMinGW/msysでコンパイルされたバイナリしか動作しないせいで面倒なことになっている。
リポジトリ名のエラーチェック
リモートリポジトリ名に使える文字は制限されている。
そのチェックをしたい。
使用できる文字
種類 | 値 |
---|---|
記号 | _-. |
半角英数字 | 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ |
コミットメッセージにUTF8な日本語を送信したい
現状、コミットメッセージには英数字しか送信できない。
GitHubはUTF-8だが、.batファイルとコンソールがCP932(Shift-JIS)なため、文字化けしてしまう。
認証をBasicからAccessTokenにしたい
スクリプトファイルに直接パスワードを記述しているので危険。
- パスワードを直接扱うので危険
- アカウントが乗っ取られる可能性がある
- リポジトリの意図せぬ削除
- なりすまし行動
- アカウントが乗っ取られる可能性がある
AccessTokenなら漏洩してもパスワードよりは危険性が低い。
- AccessTokenはボタン一発で再発行して無効化できる
- scopeで操作範囲を制限できる
バッチファイル数が4つもあって邪魔
- 肝心のソースコードプロジェクト以外のファイルがたくさんあると邪魔
- どれを実行すればいいのか迷う
所感
GitHubアップロード作業を軽減できた。
実用にはまだかなり課題があるが、とりあえず使えた。