Skip to content

๐Ÿ”ต F7: API ๊ณ„์•ฝ ์ž๋™ ๊ฒ€์ฆ CI (springdoc-openapi + git diff)ย #42

@ThonApple

Description

@ThonApple

๋ฐฐ๊ฒฝ

PR #32 ์ง„ํ–‰ ์ค‘ FRONTEND.md์™€ ์ฝ”๋“œ ๊ฐ„ ๋ช…์„ธ ๋ถˆ์ผ์น˜๊ฐ€ ๋‹ค์ˆ˜ ๋ฐœ๊ฒฌ๋จ. ํ–ฅํ›„ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด ์˜ต์…˜ A ์ž๋™ํ™” โ€” ์ฝ”๋“œ์—์„œ ์ž๋™ ์ƒ์„ฑํ•œ OpenAPI ์ŠคํŽ™์„ ๋ฆฌํฌ ์ปค๋ฐ‹ ๋ฒ„์ „๊ณผ CI์—์„œ diff.

ํ•ด์•ผ ํ•  ์ผ

  1. build.gradle.kts โ€” org.springdoc.openapi-gradle-plugin ์ถ”๊ฐ€
  2. springdoc ์˜์กด์„ฑ โ€” org.springdoc:springdoc-openapi-starter-webmvc-ui
  3. ./gradlew generateOpenApiDocs โ†’ docs/openapi.json ์‚ฐ์ถœ
  4. GitHub Actions ์›Œํฌํ”Œ๋กœ โ€” .github/workflows/api-contract-check.yml
    • ./gradlew generateOpenApiDocs
    • git diff --exit-code docs/openapi.json ์‹คํŒจ ์‹œ PR fail
  5. (์„ ํƒ) oasdiff action์œผ๋กœ breaking change ์‹œ PR์— ์ž๋™ ๋Œ“๊ธ€

๊ฒ€์ฆ

  • PR์—์„œ ์ปจํŠธ๋กค๋Ÿฌ ์‘๋‹ต ์‹œ๊ทธ๋‹ˆ์ฒ˜ ๋ฐ”๊พธ๋ฉด CI๊ฐ€ ์‹คํŒจ
  • docs/openapi.json ํ•จ๊ป˜ ์ปค๋ฐ‹ํ•˜๋ฉด ํ†ต๊ณผ
  • FRONTEND.md ์™€ ๋ณ„๋„๋กœ ๋จธ์‹  ๊ฒ€์ฆ ๊ฐ€๋Šฅ

์˜์กด์„ฑ

๋…๋ฆฝ. ์ธํ”„๋ผ ์ž‘์—….

์˜ํ–ฅ ํŒŒ์ผ

build.gradle.kts, capstone-api/build.gradle.kts, .github/workflows/api-contract-check.yml, docs/openapi.json (์‹ ๊ทœ)

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions