Skip to content

chore: 本番環境向けにCIを書き換え - #67

Open
sora81dev wants to merge 15 commits into
sf-kosen:mainfrom
sora81dev:chore/update-ci-for-production
Open

chore: 本番環境向けにCIを書き換え#67
sora81dev wants to merge 15 commits into
sf-kosen:mainfrom
sora81dev:chore/update-ci-for-production

Conversation

@sora81dev

@sora81dev sora81dev commented Jul 16, 2026

Copy link
Copy Markdown
Member

要求: #65

Summary by CodeRabbit

  • Chores
    • Added Docker build exclusions to reduce build context and prevent local artifacts from entering images.
    • Updated containerization with a multi-stage pnpm build and non-root production runtime.
    • Improved Docker Compose development setup with project and package-cache mounts.
    • Standardized PNPM configuration across CI and the project.

@coderabbitai

coderabbitai Bot commented Jul 16, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Docker configuration now uses pnpm and a multi-stage Node 24 build with separate development, builder, and production stages. Compose targets development, while CI and package metadata align with pnpm.

Changes

Container Build Pipeline

Layer / File(s) Summary
Build context and pnpm foundation
.dockerignore, package.json, .github/workflows/check.yml, Dockerfile
Docker exclusions, pnpm metadata, CI setup, and a shared Node 24 base stage configure the build foundation.
Development container wiring
Dockerfile, docker-compose.yml
The development stage installs frozen dependencies, copies source files, runs pnpm dev, and is targeted by Compose with project and dependency mounts.
Production image assembly
Dockerfile
Builder and production stages compile the application, install production dependencies, copy build output, and launch as the node user.

Estimated code review effort: 2 (Simple) | ~10 minutes

Suggested reviewers: copilot

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed タイトルは本番環境向けのCIおよびDocker構成の変更に関連し、変更内容の主要な目的を簡潔に示しています。
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docker-compose.yml`:
- Around line 7-13: Correct the anonymous volume mount in the development
service from /app/node_modulejk to /app/node_modules, preserving the existing
volume configuration and other mounts.

In `@Dockerfile`:
- Around line 27-34: Update the production startup flow around the Dockerfile
CMD and tsconfig-paths dependency so the runtime does not require a
devDependency: either rewrite compiled aliases during the builder stage and
remove the tsconfig-paths/register preload, or move tsconfig-paths into
production dependencies if the preload must remain.
- Around line 16-20: Update the builder stage dependency installation command to
use pnpm rather than npm, preserving frozen-lockfile behavior so dependencies
are resolved from the project’s pnpm lockfile. Keep the existing COPY and pnpm
run build steps unchanged.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 42fcb5b1-efba-4268-b97d-1b88d5aafda2

📥 Commits

Reviewing files that changed from the base of the PR and between eb8effc and 48da81f.

📒 Files selected for processing (3)
  • .dockerignore
  • Dockerfile
  • docker-compose.yml

Comment thread docker-compose.yml
Comment thread Dockerfile Outdated
Comment thread Dockerfile Outdated
@sora81dev
sora81dev marked this pull request as ready for review July 27, 2026 06:31
Copilot AI lite review requested due to automatic review settings July 27, 2026 06:31

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
Dockerfile (1)

5-5: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Pin the pnpm version used by the image.

corepack enable enables the shim but does not, by itself, make the selected pnpm version explicit. Ensure package.json declares a packageManager version, or pin pnpm during image creation; otherwise production builds may resolve different package-manager behavior over time.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Dockerfile` at line 5, Pin the pnpm version used by the image by declaring an
explicit packageManager entry in package.json or installing a specific pnpm
version during the Dockerfile build. Update the existing corepack setup so
production builds consistently use that pinned version.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@Dockerfile`:
- Line 5: Pin the pnpm version used by the image by declaring an explicit
packageManager entry in package.json or installing a specific pnpm version
during the Dockerfile build. Update the existing corepack setup so production
builds consistently use that pinned version.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 027b86af-568e-4053-8ce3-a22765f4763b

📥 Commits

Reviewing files that changed from the base of the PR and between 48da81f and afb629d.

📒 Files selected for processing (3)
  • .dockerignore
  • Dockerfile
  • docker-compose.yml
🚧 Files skipped from review as they are similar to previous changes (2)
  • .dockerignore
  • docker-compose.yml

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the container build/dev workflow to better support a pnpm-based, multi-stage Docker build intended for production usage.

Changes:

  • Introduces a multi-stage Dockerfile (development/builder/production) using pnpm via corepack.
  • Updates docker-compose.yml to build the development stage and mount the working directory for local development.
  • Adds a .dockerignore to shrink build context and exclude sensitive/local artifacts.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

File Description
Dockerfile Reworks the image into pnpm-based multi-stage build for dev/build/prod.
docker-compose.yml Switches compose build to the development target and adds volumes for local dev.
.dockerignore Excludes VCS/meta files, env files, dependency dirs, and build outputs from Docker build context.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread docker-compose.yml
Comment on lines +10 to +13
volumes:
- .:/app
- /app/node_module
- /app/.pnpm-store
Comment thread Dockerfile
USER node
EXPOSE 3000

CMD ["node", "./build/index.js"]
@sora81dev

Copy link
Copy Markdown
Member Author

@copilot Fix the code for all comments in this review thread.

When a review comment includes a suggested change, apply the suggestion exactly.

Do not make changes beyond what is described in the linked review thread.

Comment thread Dockerfile
Comment thread Dockerfile Outdated
Co-authored-by: Keisuke Ishii <keisuke.ishii.01+gh@gmail.com>
Copilot AI review requested due to automatic review settings July 27, 2026 22:23
Co-authored-by: Keisuke Ishii <keisuke.ishii.01+gh@gmail.com>
@sora81dev

Copy link
Copy Markdown
Member Author

@Akikukeo1
再レビュー頼んだ

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

Comments suppressed due to low confidence (2)

docker-compose.yml:12

  • ボリュームのパスが /app/node_module になっていて node_modules を指していません。これだと bind mount(.:/app)でコンテナ内の依存関係が上書きされ、起動時にモジュールが見つからないなどの不具合につながります。
      - /app/node_module

docker-compose.yml:13

  • /app/.pnpm-store をボリューム化していますが、pnpm の store 既定パスは通常この場所ではありません。意図したキャッシュが効かない可能性が高いので、Dockerfile 側で PNPM_STORE_DIR(または pnpm の store-dir)を設定し、そのパスを compose でマウントする形に揃えるのが安全です。
      - /app/.pnpm-store

Comment thread Dockerfile
Comment on lines +3 to +5
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

書くなら package.json かな。

Copilot AI review requested due to automatic review settings July 27, 2026 23:05
@sora81dev
sora81dev force-pushed the chore/update-ci-for-production branch from b84b653 to b4eedfb Compare July 27, 2026 23:07

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

Comments suppressed due to low confidence (1)

docker-compose.yml:12

  • docker-compose の anonymous volume が /app/node_module になっており、bind mount(. : /app)でホスト側の node_modules がそのまま見えてしまいます。意図どおりコンテナ側の依存関係を使うには /app/node_modules をマウントしてください。
      - /app/node_module

Comment thread Dockerfile
Comment on lines +3 to +5
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

この指摘は妥当そう。

修正はこのレビューをコミットするか、

ENV PNPM_STORE_DIR=/app/.pnpm-store

を追加しておくのがよさそうです。

BuildKit の --mount=type=cache を使う場合は、この設定は不要なこともあるらしい…?

Comment thread package.json
"scripts": {
"dev": "ts-node src/index.ts",
"build": "tsc",
"start": "node -r tsconfig-paths/register ./build/index.js",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tsconfig.json を見た感じ、この指摘は妥当そう。

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot Fix the code for this review comment.

When a review comment includes a suggested change, apply the suggestion exactly.

Do not make changes beyond what is described in the linked review comment.

Copilot AI review requested due to automatic review settings July 27, 2026 23:10

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (3)

docker-compose.yml:13

  • The anonymous volume intended to mask container dependencies is misspelled as /app/node_module, so bind-mounting .:/app will still shadow the container’s node_modules and cause missing-dependency/runtime issues inside the dev container.
    volumes:
      - .:/app
      - /app/node_module
      - /app/.pnpm-store

Dockerfile:33

  • The production image will boot with FILE_TYPE=".ts" and BASE_DIR="./src" because no js arg is passed (see src/index.ts / README). Since the production stage only copies the compiled output (no ./src), loadCommands/loadActions will fail at startup (missing directories / wrong extension).
CMD ["node", "./build/index.js"]

package.json:12

  • start currently requires tsconfig-paths/register (a devDependency) and points at ./build/index.js without passing the js flag. In a production install (pnpm install --prod) this will fail due to the missing devDependency, and it won’t select the .js command/handler loader path described in the README.
    "dev": "ts-node src/index.ts",
    "build": "tsc",
    "start": "node -r tsconfig-paths/register ./build/index.js",

Removed pnpm version specification from workflow.
@Akikukeo1

Copy link
Copy Markdown
Contributor

@sora81dev b4eedfb
Copilot の指摘に伴う修正で、CIが落ちているようです。

- uses: pnpm/action-setup@v6
with:
version: 10

原因はCIと package.json のバージョン違いですね。

sora81dev#3
修正PRを作成しました。

Copilot AI review requested due to automatic review settings July 28, 2026 01:37

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 5 out of 5 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (3)

docker-compose.yml:12

  • docker-compose の anonymous volume のマウント先が /app/node_module になっており、node_modules を bind mount から分離できません(.:/app によりイメージ内でインストールした依存が隠れて、起動時に依存が見つからない状態になり得ます)。/app/node_modules に修正してください。
      - /app/node_module

Dockerfile:10

  • compose 側で /app/.pnpm-store を volume にしていますが、Dockerfile で pnpm の store-dir がそのパスに設定されていないため、この volume がキャッシュとして使われません(デフォルトだと root の home 配下などに store が作られます)。Dockerfile で store 先を /app/.pnpm-store に合わせると、dev コンテナ内での pnpm install が安定・高速化します。
WORKDIR /app
COPY package.json pnpm-lock.yaml ./
RUN corepack install

package.json:12

  • starttsconfig-paths/register を preload していますが、tsconfig-paths は devDependencies なので pnpm install --prod の環境で pnpm start すると Cannot find module 'tsconfig-paths/register' になり得ます。tsconfig.json でも baseUrl/paths は未使用(コメントアウト)なので、start は素の node 起動に揃えるのが安全です。
    "start": "node -r tsconfig-paths/register ./build/index.js",

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
Dockerfile (1)

11-16: 🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Fix the development node_modules mount path.

The image installs dependencies under /app/node_modules, but docker-compose.yml mounts /app/node_module (singular). Because .:/app hides the image contents, pnpm run dev can fail with missing dependencies such as ts-node. Change the Compose volume target to /app/node_modules.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Dockerfile` around lines 11 - 16, Update the development service volume
configuration in docker-compose.yml to mount the anonymous node_modules volume
at /app/node_modules, matching the dependency location created by the
Dockerfile’s development stage; preserve the existing project mount at /app.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@Dockerfile`:
- Around line 11-16: Update the development service volume configuration in
docker-compose.yml to mount the anonymous node_modules volume at
/app/node_modules, matching the dependency location created by the Dockerfile’s
development stage; preserve the existing project mount at /app.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 0a157b44-a880-4ecb-8921-d1ef60727246

📥 Commits

Reviewing files that changed from the base of the PR and between afb629d and b7698ac.

📒 Files selected for processing (3)
  • .github/workflows/check.yml
  • Dockerfile
  • package.json
💤 Files with no reviewable changes (1)
  • .github/workflows/check.yml

@Akikukeo1

Copy link
Copy Markdown
Contributor

@sora81dev
sora81dev#4
リファクタリングPRを作成しました。

@Akikukeo1

Copy link
Copy Markdown
Contributor

@tanahiro2010 @sora81dev

現在は USER node で実行されていますが、将来的にアプリケーションが /app 配下へ書き込む予定はありますか?

その可能性がある場合は、COPY --chown=node:node を使うなど、所有者まわりの対応も必要そうです。

該当箇所:
https://github.com/Akikukeo1/Nanase-Bot/blob/957e6dbb293048afcd0e2271900384e6010eddd6/Dockerfile#L27-L28

Refactor Dockerfile stages for clarity and efficiency
Copilot AI review requested due to automatic review settings August 6, 2026 13:20
@sora81dev

Copy link
Copy Markdown
Member Author

@Akikukeo1
現状ないです

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

docker-compose の node_modules マウントの誤りと pnpm store 設定不整合、start の prod 起動破綻リスクが残っています。

Once you've addressed the issues Copilot identified, you can request another Copilot review.

This review doesn't count toward merge requirements. Sign up for the private preview to control whether Copilot approvals count.

Review details

Suppressed comments (3)

docker-compose.yml:13

  • docker-compose の volume マウント先が /app/node_module になっており、node_modules を分離する意図(bind mount による隠蔽回避)が機能しません。結果として依存関係がホスト側に作られたり、コンテナ内の依存が見えなくなる可能性があります。
    volumes:
      - .:/app
      - /app/node_module
      - /app/.pnpm-store

package.json:12

  • start-r tsconfig-paths/register を preload していますが、tsconfig.json では baseUrl/paths が未使用(コメントアウト)であり、さらに tsconfig-paths は devDependencies なので production 依存のみで起動する環境(pnpm install --prod や production イメージ等)で pnpm start すると Cannot find module 'tsconfig-paths/register' になり得ます。必要性がないなら preload を外して素の node 起動に揃えてください。
    "start": "node -r tsconfig-paths/register ./build/index.js",

Dockerfile:10

  • compose で /app/.pnpm-store を volume にしていますが、Dockerfile 側で pnpm の store-dir を /app/.pnpm-store に設定していないため、この volume がキャッシュとして使われない可能性が高いです(依存インストールが毎回ダウンロードになり得ます)。store-dir を明示して compose の volume と揃えるのが安全です。
WORKDIR /app
COPY package.json pnpm-lock.yaml ./
RUN corepack install

  • Files reviewed: 5/5 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

We're testing this review assessment. Please use 👍 or 👎 to tell us if it's correct.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@Dockerfile`:
- Around line 14-16: Update the development dependency volume configuration used
with the Dockerfile’s development target and docker-compose setup to mount
/app/node_modules, matching pnpm’s default installation directory. Do not
introduce a custom modules-dir setting; preserve the existing development bind
mount and other volumes.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 8f4488e1-a6b8-40a7-b5e0-6c65340f8609

📥 Commits

Reviewing files that changed from the base of the PR and between b7698ac and e822157.

📒 Files selected for processing (1)
  • Dockerfile

Comment thread Dockerfile
Comment on lines +14 to +16
FROM deps AS development
COPY . .
CMD ["npm", "run", "dev"]
CMD ["pnpm", "dev"]

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "Dependency directory configuration:"
rg -n --hidden -g 'Dockerfile' -g 'docker-compose.yml' -g '.npmrc' \
  'node_module|node_modules|modules-dir|virtual-store-dir' . || true

echo "Development target mounts:"
rg -n -A8 -B3 \
  'target: development|volumes:|node_module|node_modules' \
  docker-compose.yml

Repository: sf-kosen/Nanase-Bot

Length of output: 452


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "Tracked manifest-related files:"
git ls-files | rg '(^|/)(Dockerfile|docker-compose\.ya?ml|package\.json|pnpm-workspace\.yaml|\.npmrc|pnpm-lock\.yaml)$' || true

echo
echo "Dockerfile:"
cat -n Dockerfile

echo
echo "docker-compose.yml:"
cat -n docker-compose.yml

echo
echo "package.json deps/scripts:"
python3 - <<'PY'
import json
from pathlib import Path
p=Path('package.json')
if p.exists():
    data=json.loads(p.read_text())
    for key in ('scripts','dependencies','devDependencies','packageManager'):
        print(key, data.get(key))
PY

echo
echo "pnpm config references:"
rg -n --hidden -g 'Dockerfile' -g 'docker-compose.yml' -g 'package.json' -g '.npmrc' \
  'modules-dir|virtual-store-dir|node_module|node_modules|packageManager|pnpm' . || true

Repository: sf-kosen/Nanase-Bot

Length of output: 2384


🌐 Web query:

pnpm default modules-dir node_modules virtual-store-dir pnpm 11 documentation

💡 Result:

In pnpm v11, the configuration for directory locations is managed primarily through the pnpm-workspace.yaml file or global configuration, as pnpm no longer reads settings from the pnpm field in package.json [1][2][3]. The default settings for these directories are: modules-dir Default: node_modules [4] This is the directory where pnpm installs your project's dependencies [4]. virtual-store-dir Default: node_modules/.pnpm [4] This directory acts as the virtual store containing links to the central package store [4]. It is where all direct and indirect dependencies are linked [4]. Configuration These settings can be configured in your project's pnpm-workspace.yaml file or via global configuration (config.yaml) [1][3]. For example: modulesDir: node_modules virtualStoreDir:.pnpm Note that while the default virtual-store-dir is node_modules/.pnpm, setting it to a relative path like.pnpm can help create cleaner stack traces, as the dependency paths will appear one directory higher [4][5]. Customizing the virtual-store-dir is also a common method for resolving long path issues on Windows by placing the store in the root of a drive [4][5]. Every project must have its own virtual store; it cannot be shared between multiple projects, except within a workspace where the root is shared [4].

Citations:


Align the dependency volume with pnpm’s module directory.

docker-compose.yml mounts /app/node_module, but pnpm installs dependencies into /app/node_modules by default, and this project does not configure modules-dir. The development bind mount exposes the working tree, so that volume would leave the installed dependencies unreadable; mount /app/node_modules unless a custom dependency directory is deliberately set.

Proposed compose volume change
-      - /app/node_module
+      - /app/node_modules
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Dockerfile` around lines 14 - 16, Update the development dependency volume
configuration used with the Dockerfile’s development target and docker-compose
setup to mount /app/node_modules, matching pnpm’s default installation
directory. Do not introduce a custom modules-dir setting; preserve the existing
development bind mount and other volumes.

@sora81dev sora81dev self-assigned this Aug 6, 2026
@sora81dev sora81dev added the enhancement New feature or request label Aug 6, 2026
@tanahiro2010

Copy link
Copy Markdown
Member

インフラに関しては専門外なり

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants