AWSの共用インスタンスにGithubのソースコードを簡単に持っていきたい件
公開されているものであれば、インスタンスに入ってcloneすれば良いだけです。
ですが、会社のGithubなど特定のアカウントしか見れない場合だと簡単にはいかないです。
そんなに手札は多くないのですが、下記が考えたことなどです。
自分のアカウントのssh keyを別途発行してgit cloneする
共用インスタンスに自分のssh keyを置くのはよくない。
STGや本番と同じ感じでやる
本番などはコードパイプラインを使ってビルドして配布するとかしています。
コード持っていくだけなのでビルドとかしないし簡単ではないので見送りです。
Github ActionsからS3にコードをアップロードしてダウンロードする
会社の同僚が考えついた案なのですが、多分これが一番楽だと思います。
GithubActionsから、AWS内にアクセスできるセットアップがされていたのでできたことだと思います。
今の会社で考えると簡単にできる方法だなと思いました。
(他の会社だとインフラ状況により出来なかったり、もっと楽にできる方法があると思います。)
余談1(コードの最新化)
gitのソースコードでそのまま置き換えると、npm install
とかセットアップも1からやらねばで面倒でした。
git cloneすると、フォルダ直下に.git
のフォルダがあり、そこに全てのgitの情報があります。
展開先の.gitフォルダと新しいソースコードの.gitフォルダを置き換えて、git reset --hard
すれば、最新化は完了することを思いついて、そのスタイルでやっています。
(手数は多いですが実行時間はセットアップしない分、速いです。手数もshellに書けば1コマンドになりますし。)
余談2(GithubActionsの動作確認)
GithubActionsの実行ボタンを出すにはmainのブランチにマージされている必要があります。
- チームのリポジトリはPRからじゃないとマージできない
- 自分のリポジトリを作ることは可能
上記状況からforkしたり自分のリポジトリを作成して動作確認をするのが良いと思われます!!
それか、下記のような感じでpushのフックを設定して動作確認すると良いかと。
name: hoge-s3
on:
workflow_dispatch:
push:
branches:
- feature/hoge
余談3(ファイル名にGitのコミットハッシュ値をつけるとよい)
ハッシュ値があれば、中身がどの内容か?ファイル名だけで分かります。
また、S3のディレクトリ設定に時間経過でファイルが消える設定を入れておくと容量の肥大化を抑えられて良いと思います。
GithubActionsだと、下記のような感じで設定できる。
aws s3 cp ./hoge.tar.gz s3://fuga/hoge-${{ github.sha }}.tar.gz
最後に
会社ごとに状況が違うのでなんともですが良いと思った方は試していただければと思います。
Discussion