[GitHub] Git LFSで巨大なファイルを扱う

Gitでバイナリや巨大なファイルを扱う場合に活躍するのが「LFS(Large File Storage)」。 詳細な説明は様々なページで行われていますので、今回はGitHubの利用を前提とした基本的な使い方についてだけまとめておきます。

簡単に言うとLFSを利用するとファイルの実際のデータは専用のストレージに、リポジトリ内部には200byteにも満たないハッシュ値等を保存することでリポジトリを軽量化することができるという仕組みです。

Gitはバイナリファイルに更新がある度に全データがリポジトリに保管されるため油断しているとあっという間にリポジトリが肥大化してしまいます。またGitHubでは通常100Mbyte以上のファイルをpushすることができません。それに加えリポジトリのサイズは1G程度が推奨されていることから「LFS(Large File Storage)」が必要とされているというわけです。

続きを読む

[Git] GitHubにGPG鍵を登録し署名付きcommit/tagを行う

Gitの初期設定で自分の名前やメールアドレスを入力するわけですが、特に認証などが入るわけではないので簡単に他人になりすましが出来てしまいます。そこで確かに自分がコミットまたはタグを付けたことを証明するために、署名を付けることができます。

GitHubを眺めていると見かける、コミットログの横に「Verified」バッジが表示されているのがそれです。

例えばプルリクを受け取った人が、なりすましを行った悪意のある第三者から送られてきたかどうか判断する手助けになるというわけですね。また同様にコミットやタグが改ざんされているかも検知することができます。

続きを読む

[GitHub Actions] 実行結果をSlackへ通知する

GitHub Actionsの実行結果を毎回GitHub上で確認するのも面倒ですよね。一応失敗したときはメールでお知らせしてくれますが、できればSlackに投げてくれるといろいろ都合が良かったりもします。

そこで今回はActionsの実行結果をSlackへ通知する設定を行います。

続きを読む

[GitHub Actions] AWS S3へファイルを自動的に転送する

GitHub上にリポジトリを作成し、いつも通りpushすると自動的に仮想マシンが起動しこちらが指定した処理を行ってくれる「Actions」という機能があります。なんとパプリックリポジトリは無料、プライベートリポジトリも月間2000分(約33時間)までは無料で使えるという夢のような機能ですw

主にアプリをビルド(コンパイル)したり、テストコードを自動的に実行するといった用途に使われていますが、ここでは特定のブランチを更新しpushすると、そのファイルをAWS S3へ自動的に転送する設定を行ってみます。

続きを読む

[Git] git-secretsでパスワードや機密情報の登録を禁止する

AWSなどのクラウドサービスでは、データベースやファイルシステムなどの各種リソースを操作するためのアカウント(IAM)を発行して権限管理を行うことがありますが、このアカウント情報をGitのリポジトリに登録してしまうと、意図せず流出し悪い人に悪用されてしまう場合があります。

定期的にネット上で話題になりますが、最終的に仮想通貨のマイニングなどに利用され多額の請求がやってくるパターンが多いようです。

このような悲劇を防ぐために、Gitのリポジトリへ特定のパターンの文字列を登録できくなくするgit-secretsを導入してみます。なおこのツールはAmazon製ということもありAWSとの相性がバッチリです。

続きを読む

[Git] 1回の git push で複数のoriginに送信する

普段GitHubを利用しているのですが、たまにサービス毎落ちるんですよねw 大抵の場合は仕事を切り上げる理由になって良いのですが、取り急ぎpushだけでもしたいといった場合に困るわけです。VCSはバックアップも兼ねてますからね。

そんなときに普段から別のリポジトリを作成し、バックアップ用に毎回pushしておきます。 コマンドは以下の通り。

$ cd (作業ディレクトリ)
$ git remote set-url --add origin git@github.com:katsube/example.git

正常に登録されたか確認しておきます。1-2行目が最初からあるもの、3行目が新たに追加した物ですね。

$ git remote -v
origin  git@github.com:katsube/original.git (fetch)
origin  git@github.com:katsube/original.git (push)
origin  git@github.com:katsube/example.git (push)

あとはいつも通りgit pushすれば自動的に2箇所にpushしてくれます。

$ git push

ここでは両方GitHubを使っていますが、BitBucketGitLabはもちろん自分が管理するサーバなどのリポジトリに必要に応じて置き換えて実行してくださいませ。

続きを読む

[GitHub] SSHの鍵を登録しパスワード入力を不要にする

GitHubを利用している際に、HTTPSリポジトリをcloneしているとpushやpullをする際に毎回IDとパスワードの入力を求められます。一時的にメモリ上などにキャッシュすることも出来るのですが、一定期間が経過すると再び入力する必要があるため根本的な解決になりません。

$ git push
Username for 'https://github.com': katsube      
Password for 'https://katsube@github.com': 

そこで今回はGitHubSSHで利用する公開鍵を登録し、アカウント情報を毎回入力せずに済む設定を行います。

続きを読む

[PHP] アクセスカウンター用のRESTfulAPIを作成する - その1 ファイル版

PHPの練習用にアクセスカウンター用のREST APIPHPで作成します。

最終的に以下のような画面になります。ここで再読み込みを行うと数値がどんどん加算されていきます。

※この記事は専門学校の講義用に作成した物です。

続きを読む