Skip to content

suzuito/sandbox2-go

Repository files navigation

codecov check_in_main

sandbox2-go

趣味開発用の Sandbox レポジトリ。

ディレクトリ構造

ディレクトリ構造は下記の通り。

cmd サブプロジェクト(後述)に依存しないコマンドラインユーティリティ
.service サブプロジェクト毎の開発環境を構築するためのリソース群
$subProject/ サブプロジェクト(後述)のルートディレクトリ

サブプロジェクト

本レポジトリのソースコードはサブプロジェクト毎に分類されている。 あるサブプロジェクトと別のサブプロジェクトは、基本的には、全く関係がなく独立している。 例 blogはブログサイト用のソースコードがあり、crawlerは自前クローラー用のソースコードがある。 しかしながら、blog配下のソースコードからcrawler配下のソースコードを呼び出すことについて、何も問題はない。 趣味開発なので、その辺りは緩めで運用する。 とはいえ、いうまでもなく、公開する必要のないソースコードは、なるべくサブプロジェクト外には公開しないようにすることが鉄則である。

サブプロジェクト構造制約

サブプロジェクト配下のディレクトリに対して、package-check-list.yaml制約を課す。 なるべく、ソースコードを綺麗に保っておくためである。

パッケージ依存制約

サブプロジェクト配下のディレクトリには、import-check-list.yaml制約を課す。

Development

# Install air
go install github.com/cosmtrek/air@latest

common

Test

make common-test

blog

make blog-init
make blog-init-rdb

Run

# env
cp ./.service/blog/local.env.sh.sample ./.service/blog/local.env.sh
## Add GH Token
vim ./.service/blog/local.env.sh
source ./.service/blog/local.env.sh

# server
$(go env GOPATH)/bin/air -c ./.service/blog/.air.server.toml
curl http://localhost:8080/ping

# check rdb
docker compose exec blog-mysql mysql

Insert test articles into local db

  • Login as admin
    • Access /admin/login
    • Input password
    • Click Login
  • Import markdown on repository
    • Access /admin/
    • Click *

Migration

# Create new migration
.bin/migrate create -dir .schema -ext sql init

Test

make blog-test

blog2

make blog2-init
make blog2-init-rdb

Run

# Environment variables
cp ./.service/blog2/local.env.sh.sample ./.service/blog2/local.env.sh
## Modification of environment variables
vim ./.service/blog2/local.env.sh
source ./.service/blog2/local.env.sh

# create test data
make blog2-init-rdb-test-data

# server
$(go env GOPATH)/bin/air -c ./.service/blog2/.air.server.toml
curl http://localhost:8080/ping

# js
cd blog2/_ts && npm run serve

Migration

NAME=init make blog2-migrate-create

DB

Local

mysql -u root -h 127.0.0.1 -P 3307

photodx

make photodx/bff-init

Run

$(go env GOPATH)/bin/air -c ./.service/photodx/bff/.air.toml
curl http://localhost:8080/ping

デプロイ

定義

  • github.com/suzuito/sandbox2-go モジュールをインターネット上に公開すること
  • blog CloudRun 用の Docker image を Google Container Resitory へアップロードすること

手順

  1. Github action create-release-draft を実行する。 a. Github action が release draft を作成する。
  2. Release draft を公開する。