ポエム

開発に目覚められるかどうかはもしかしたら良いチュートリアルにで会えるかどうかじゃないだろうか

今の自分の力量に合った難易度と短い小さい経験の積み重ねを繰り返していくことで開発作業のイメージが湧いてきて、勉強にみが入っていく感じがしている

勉強だけじゃダメだけど難易度については知識がものを言うから、不勉強すぎる人は必要になる経験の数が膨れ上がっていきすぎる

ちょうど数学の習得課程として、基本的な算数が手でできつつ概念として負数や関数の知識があってより高次な定理なんかを理解して試してみることができるようになるみたいに

手の計算を無数に積み重ねていけば確かに定理まで辿り着ける可能性もあるが、経験だけでは辿り着けない成功を経て価値を実感できることもあるように思う

GCP CloudBuild を使って仕事の開発フローと同じようにビルド&イメージpush&デプロイを自動化した開発環境が欲しい

GCP CloudBuild を使ってScrewdriverのようにビルド&イメージpush&デプロイを自動化した開発環境が欲しい

使いたい

手順はこう

  1. まず、CloudRunへSpringBootアプリをサンプルでいいから入れる
  2. それをCloudBuildからデプロイできるようにする
  3. Github上のソースコードからデプロイできるようにする
  4. Github上のリポジトリ更新にHooKしてCloudBuildを実行する

1. Cloud Run に Java サービスをデプロイする

https://cloud.google.com/run/docs/quickstarts/build-and-deploy/deploy-java-service?hl=ja

言われたとおりにコード仕込んでるのにdeployコマンドが失敗しちゃう

よくわかんないからmavenに変えたけど、やっぱり無理だなあって

手元で mvn package 実行しただけなら通るんだけど ログからビルドに使ってるコマンド抜いて実行したらやっぱ失敗する

$ ./mvnw clean package --batch-mode -DskipTests -Dhttp.keepAlive=false -f=pom.xml
[INFO] Scanning for projects...
[INFO]
[INFO] -----------------------< com.example:helloworld >-----------------------
[INFO] Building helloworld 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:3.2.0:clean (default-clean) @ helloworld ---
[INFO] Deleting /home/*******/git/study_cloudbuild/helloworld/target
[INFO]
[INFO] --- maven-resources-plugin:3.2.0:resources (default-resources) @ helloworld ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Using 'UTF-8' encoding to copy filtered properties files.
[INFO] Copying 1 resource
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.10.1:compile (default-compile) @ helloworld ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to /home/*******/git/study_cloudbuild/helloworld/target/classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /home/*******/git/study_cloudbuild/helloworld/src/main/java/com/example/helloworld/HelloworldApplication.java:[3,1] class, interface, or enum expected
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.869 s
[INFO] Finished at: 2023-02-05T13:50:08+09:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.10.1:compile (default-compile) on project helloworld: Compilation failure
[ERROR] /home/*******/git/study_cloudbuild/helloworld/src/main/java/com/example/helloworld/HelloworldApplication.java:[3,1] class, interface, or enum expected
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR] /home/*******/git/study_cloudbuild/helloworld/src/main/java/com/example/helloworld/HelloworldApplication.java:[3,1] class, interface, or enum expected
[INFO] 1 error

と思ったらIDE使わずに書いてたからpackage宣言しくってただけだった

直したらうまくいった

Please enter numeric choice or text value (must exactly match list item):  1

To make this the default region, run `gcloud config set run/region asia-east1`.

This command is equivalent to running `gcloud builds submit --pack image=[IMAGE] /home/sh3eys/git/study_cloudbuild/helloworld` and `gcloud run deploy helloworld --image [IMAGE]`

Allow unauthenticated invocations to [helloworld] (y/N)?  y

Building using Buildpacks and deploying container to Cloud Run service [helloworld] in project [study-cloudbuild-and-gae] region [asia-east1]
✓ Building and deploying new service... Done.
  ✓ Uploading sources...
  ✓ Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds/d******************************309c?project=7**************7].
  ✓ Creating Revision... Revision deployment finished. Checking container health.
  ✓ Routing traffic...
  ✓ Setting IAM Policy...
Done.
Service [helloworld] revision [helloworld-0*****1-b**] has been deployed and is serving 100 percent of traffic.
Service URL: https://helloworld-***************e.a.run.app

先が長いがいったんここまで

正直、このコマンドでほとんど望んでることができてる気がするが 環境をコントロールできないのでそこをどうしようか

次はこれをやっていくことでリポジトリへのマージをHookしてCloud BuildからCDしてもらう?

Cloud Build を使用した Cloud Run へのデプロイ https://cloud.google.com/build/docs/deploying-builds/deploy-cloud-run?hl=ja

そうじゃなく普通にDB連携としてこっちをやった方が実りがあるのかもしれない

Cloud runにおけるFirestore利用について https://zenn.dev/straydog/articles/c76bb7d6fb6ec3f46268

中小企業向けの導入について比較検討する

2023/2時点

 

条件
- SaaS型(サーバ管理者を置く余裕が無い)
- 会社ソフトウェア資産をホスティングできる
- BYODで利用できる


値段

Github
https://github.co.jp/pricing.html

Free = Limit pribate repository featuers
Team = $44/year-1user
Enterprise = $231/year-1user

Gitlab
https://www.gitlab.jp/pricing/

Free = Max 5user
Premium = $228/year-1user
Ultimate = $1188/year-1user


機能

Gitlab有志がつくったこちらがわかりやすい
https://www.gitlab.jp/devops-tools/github-vs-gitlab.html
 監査ログが欲しいとなると$4 - $19と月あたりコストの差が大きい
  SSOではGithubも月あたり$21ほどかかる

GitlabからGithubへ移行した人の意見
https://blog.sunl.jp/gitlab-to-github/
 Gitlabはプロジェクト管理やCICDなどVCS以外の機能が充実していて高い

 ちなみにGitBucetとの比較でGitlabのconsがよくみえる
 https://www.ossnews.jp/compare/GitLab/GitBucket

 GitlabのStarterプランは廃止されている
 https://www.creationline.com/lab/40209


BYODについて

SSOを用いて会社用アカウント廃止する手法で実現
https://techblog.zozo.com/entry/github_sso

BYOD禁止
https://zenn.dev/ubie_dev/articles/ee2ce9cc471f09

社内研修などの際にためになる資料を集めておきます

こちらは有志の方が集めてるリポジトリにてかなり強い free-programming-books https://github.com/EbookFoundation/free-programming-books/blob/main/books/free-programming-books-ja.md

awsは何か試すとすぐ課金される

試す教材の選び方が悪いのかもしれんけどとにかく課金される

しかもコンソール画面がとにかく重いし全リソースいちいち解放しないと課金されるからモタつきに付き合わされてゲンナリする

EKSなんか無料枠無い(と、思う)

仕組みの見せ方が複雑すぎてやりたいことを無料にする労力がエグいし、削除する為の操作も何か意図を持って解約させないUIを彷彿とさせる面倒さ不親切さ

いやただの文句だってことはわかってる慣れるべきなんだろうけどこの不親切さはベンダーロックしたくてしょうがない気持ちが溢れ出てて萎える

対してGoogleCloudはまだマシな気がする

GKEは無料枠あるし説明がわかりやすい