■
ポエム
ああ疲れた
■
ポエム
開発に目覚められるかどうかはもしかしたら良いチュートリアルにで会えるかどうかじゃないだろうか
今の自分の力量に合った難易度と短い小さい経験の積み重ねを繰り返していくことで開発作業のイメージが湧いてきて、勉強にみが入っていく感じがしている
勉強だけじゃダメだけど難易度については知識がものを言うから、不勉強すぎる人は必要になる経験の数が膨れ上がっていきすぎる
ちょうど数学の習得課程として、基本的な算数が手でできつつ概念として負数や関数の知識があってより高次な定理なんかを理解して試してみることができるようになるみたいに
手の計算を無数に積み重ねていけば確かに定理まで辿り着ける可能性もあるが、経験だけでは辿り着けない成功を経て価値を実感できることもあるように思う
GCP CloudBuild を使って仕事の開発フローと同じようにビルド&イメージpush&デプロイを自動化した開発環境が欲しい
GCP CloudBuild を使ってScrewdriverのようにビルド&イメージpush&デプロイを自動化した開発環境が欲しい
使いたい
手順はこう
- まず、CloudRunへSpringBootアプリをサンプルでいいから入れる
- それをCloudBuildからデプロイできるようにする
- Github上のソースコードからデプロイできるようにする
- 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
社内研修などの際にためになる資料を集めておきます
- Think Python https://cauldron.sakura.ne.jp/thinkpython/thinkpython/ThinkPython2.pdf
- はてな研修用教科書 https://github.com/hatena/Hatena-Textbook
- Site Reliability Enginerring https://sre.google/sre-book/table-of-contents/
- 要件定義~システム設計ができる人材になれる記事 https://qiita.com/Saku731/items/741fcf0f40dd989ee4f8
- cloud-native-handson https://github.com/moritoki-study/cloudnative-hands-on
- テストファースト開発 https://yshibata.blog.ss-blog.jp/2019-10-18
- とりあえずWebサービス作る時の私の技術選定ポイント@2022/02 https://zenn.dev/moya_dev/articles/1c3da5422fb7d0
- 2021監視勉強会 https://github.com/kichiram/study/blob/main/2021/README.md
- JavaチュートリアルOracle https://docs.oracle.com/cd/E26537_01/tutorial/
こちらは有志の方が集めてるリポジトリにてかなり強い free-programming-books https://github.com/EbookFoundation/free-programming-books/blob/main/books/free-programming-books-ja.md
awsは何か試すとすぐ課金される
試す教材の選び方が悪いのかもしれんけどとにかく課金される
しかもコンソール画面がとにかく重いし全リソースいちいち解放しないと課金されるからモタつきに付き合わされてゲンナリする
EKSなんか無料枠無い(と、思う)
仕組みの見せ方が複雑すぎてやりたいことを無料にする労力がエグいし、削除する為の操作も何か意図を持って解約させないUIを彷彿とさせる面倒さ不親切さ
いやただの文句だってことはわかってる慣れるべきなんだろうけどこの不親切さはベンダーロックしたくてしょうがない気持ちが溢れ出てて萎える
対してGoogleCloudはまだマシな気がする
GKEは無料枠あるし説明がわかりやすい