1.0.0 • Published 10 months ago
kbc-cinema-custom-app v1.0.0
KRB Cinema
Local環境
pnpm i
# 初回のみ
cd apps/[起動したいアプリのフォルダー]
pnpm run setup
pnpm run dev
# 一応 Dev をストップする
# shopify.app.tomlから scopes と api_version をコピーする ( 初回のみ )
pnpm shopify app deploy
pnpm run dev
個人で開発用の Custom Appを作成する場合は
- tomlファイルを
*.local.toml
か*-local.toml
にする
Local docker build
docker build -t asia-northeast2-docker.pkg.dev/kbc-movie-schedule-405807/kbc-custom-app/customer:latest -f apps/customer/Dockerfile.alpine .
docker push asia-northeast2-docker.pkg.dev/kbc-movie-schedule-405807/kbc-custom-app/customer:latest
gcloud run deploy customer --image asia-northeast2-docker.pkg.dev/kbc-movie-schedule-405807/kbc-custom-app/analytics:latest --region asia-northeast2
Database
Production
Migration
- GCPのアカウントを設定する
- localのIPを許可する
各 App .envにDATABASE_URLを設定する
# Local DATABASE_URL="mysql://username:password@db_ip_address/db_name" # Production DATABASE_URL="mysql://username:password@localhost/db_name?socket=/cloudsql/connection_name"
各App配下で以下のコマンドを実行する
pnpm prisma migrate deploy --schema=./prisma/mysql/schema.prisma
The database schema is not empty. Read more about how to baseline an existing production database:
のエラーが出た場合 BaseLineを作成する
pnpm prisma migrate resolve --applied baseline --schema=./prisma/mysql/schema.prisma && prisma migrate deploy --schema=./prisma/mysql/schema.prisma
Github CI
Run in local
brew install act
# Dockerを起動する
# Rootにて
act pull_request -e .github/pull_request_event.json
# > Medium
Turbo repo remote cache setup
- Step 1
docker pull fox1t/turborepo-remote-cache:latest
docker tag fox1t/turborepo-remote-cache:latest asia-northeast2-docker.pkg.dev/kbc-movie-schedule-405807/turbo-remote-caching/fox1t/turborepo-remote-cache:latest
docker push asia-northeast2-docker.pkg.dev/kbc-movie-schedule-405807/turbo-remote-caching/fox1t/turborepo-remote-cache:latest
- Step 2
Webhookの設定
App toml (実例)
[webhooks]
api_version = "2024-07"
[[webhooks.subscriptions]]
topics = [ "metaobjects/create", "metaobjects/update", "metaobjects/delete" ]
uri = "https://glad-counting-introducing-consultants.trycloudflare.com/webhooks/movie"
filter = "type:movie"
metafield_namespaces = [ "custom", "$app" ]
[[webhooks.subscriptions]]
topics = [ "orders/fulfilled" ]
uri = "https://glad-counting-introducing-consultants.trycloudflare.com/webhooks/orders-fulfilled"
metafield_namespaces = [ "custom", "$app" ]
Graphql (実例)
query getWebhook {
webhookSubscriptions(first: 20) {
nodes {
id
topic
filter
metafieldNamespaces
endpoint {
... on WebhookHttpEndpoint {
callbackUrl
}
}
}
}
}
mutation registerWebhook {
webhookSubscriptionCreate(
topic: METAOBJECTS_DELETE
webhookSubscription: {
# filter: "type:movie"
callbackUrl: "https://latest-reserved-interracial-ps.trycloudflare.com/webhooks/movie",
metafieldNamespaces: ["custom", "$app"],
format: JSON,
}
) {
userErrors {
field
message
}
webhookSubscription {
apiVersion {
displayName
}
endpoint {
... on WebhookHttpEndpoint {
callbackUrl
}
}
filter
topic
}
}
}
mutation updateWebhook {
webhookSubscriptionUpdate(
id: "gid://shopify/WebhookSubscription/1539109650752",
webhookSubscription: {
callbackUrl: "https://glad-counting-introducing-consultants.trycloudflare.com/webhooks/movie"
}
) {
userErrors {
field
message
}
webhookSubscription {
apiVersion {
displayName
}
endpoint {
... on WebhookHttpEndpoint {
callbackUrl
}
}
filter
topic
}
}
}
1.0.0
10 months ago