From ee50a128b9904a9e0fdd5324d8a56e8f5ef5c405 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=9D=80=EC=A7=80?= Date: Wed, 23 Sep 2026 00:04:06 +0900 Subject: [PATCH 1/8] =?UTF-8?q?chore:=20SPM=20=EC=9D=98=EC=A1=B4=EC=84=B1?= =?UTF-8?q?=20=EB=B2=84=EC=A0=84=20=EA=B3=A0=EC=A0=95=EC=9D=84=20=EC=9C=84?= =?UTF-8?q?=ED=95=B4=20Package.resolved=20=EC=B6=94=EC=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 - .../contents.xcworkspacedata | 7 + .../xcshareddata/swiftpm/Package.resolved | 231 ++++++++++++++++++ 3 files changed, 238 insertions(+), 1 deletion(-) create mode 100644 koin.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 koin.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved diff --git a/.gitignore b/.gitignore index 452381ef0..95779d219 100644 --- a/.gitignore +++ b/.gitignore @@ -117,6 +117,5 @@ koin.xcworkspace/ xcshareddata/xcschemes/* xcuserdata/* Pods/ -project.xcworkspace/ GoogleService-Info.plist GoogleService-Info-Stage.plist \ No newline at end of file diff --git a/koin.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/koin.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..0c055514e --- /dev/null +++ b/koin.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/koin.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/koin.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 000000000..d6c56a9c3 --- /dev/null +++ b/koin.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,231 @@ +{ + "originHash" : "b0349f547cd95f1cb8895eaa644928c7770e7efae0cdb9491ee6d5f1c68d0e72", + "pins" : [ + { + "identity" : "abseil-cpp-binary", + "kind" : "remoteSourceControl", + "location" : "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/google/abseil-cpp-binary.git", + "state" : { + "revision" : "bbe8b69694d7873315fd3a4ad41efe043e1c07c5", + "version" : "1.2024072200.0" + } + }, + { + "identity" : "alamofire", + "kind" : "remoteSourceControl", + "location" : "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/Alamofire/Alamofire", + "state" : { + "revision" : "7595cbcf59809f9977c5f6378500de2ad73b7ddb", + "version" : "5.12.0" + } + }, + { + "identity" : "app-check", + "kind" : "remoteSourceControl", + "location" : "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/google/app-check.git", + "state" : { + "revision" : "61b85103a1aeed8218f17c794687781505fbbef5", + "version" : "11.2.0" + } + }, + { + "identity" : "cosmos", + "kind" : "remoteSourceControl", + "location" : "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/evgenyneu/Cosmos.git", + "state" : { + "revision" : "40ba10aaf175bf50abefd0e518bd3b40862af3b1", + "version" : "25.0.1" + } + }, + { + "identity" : "firebase-ios-sdk", + "kind" : "remoteSourceControl", + "location" : "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/firebase/firebase-ios-sdk", + "state" : { + "revision" : "8d5b4189f1f482df8d5c58c9985ea70491ef5382", + "version" : "12.14.0" + } + }, + { + "identity" : "google-ads-on-device-conversion-ios-sdk", + "kind" : "remoteSourceControl", + "location" : "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/googleads/google-ads-on-device-conversion-ios-sdk", + "state" : { + "revision" : "9bfcc6cf435b2e7c5562c1900b8680c594fa9a64", + "version" : "3.6.0" + } + }, + { + "identity" : "googleappmeasurement", + "kind" : "remoteSourceControl", + "location" : "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/google/GoogleAppMeasurement.git", + "state" : { + "revision" : "219e564a8510e983e675c94f77f7f7c50049f22d", + "version" : "12.14.0" + } + }, + { + "identity" : "googledatatransport", + "kind" : "remoteSourceControl", + "location" : "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/google/GoogleDataTransport.git", + "state" : { + "revision" : "617af071af9aa1d6a091d59a202910ac482128f9", + "version" : "10.1.0" + } + }, + { + "identity" : "googleutilities", + "kind" : "remoteSourceControl", + "location" : "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/google/GoogleUtilities.git", + "state" : { + "revision" : "60da361632d0de02786f709bdc0c4df340f7613e", + "version" : "8.1.0" + } + }, + { + "identity" : "grpc-binary", + "kind" : "remoteSourceControl", + "location" : "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/google/grpc-binary.git", + "state" : { + "revision" : "75b31c842f664a0f46a2e590a570e370249fd8f6", + "version" : "1.69.1" + } + }, + { + "identity" : "gtm-session-fetcher", + "kind" : "remoteSourceControl", + "location" : "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/google/gtm-session-fetcher.git", + "state" : { + "revision" : "c0ac7575d70050c2973ba2318bd5af47f8e8153a", + "version" : "5.3.0" + } + }, + { + "identity" : "interop-ios-for-google-sdks", + "kind" : "remoteSourceControl", + "location" : "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/google/interop-ios-for-google-sdks.git", + "state" : { + "revision" : "040d087ac2267d2ddd4cca36c757d1c6a05fdbfe", + "version" : "101.0.0" + } + }, + { + "identity" : "kakao-ios-sdk", + "kind" : "remoteSourceControl", + "location" : "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/kakao/kakao-ios-sdk", + "state" : { + "revision" : "32626459f03d9a3622f91cfc001c6dc97cae33a9", + "version" : "2.27.3" + } + }, + { + "identity" : "kingfisher", + "kind" : "remoteSourceControl", + "location" : "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/onevcat/Kingfisher.git", + "state" : { + "revision" : "cf8be20d07654570554c8a8a4952bc8a5766a8b0", + "version" : "8.9.0" + } + }, + { + "identity" : "leveldb", + "kind" : "remoteSourceControl", + "location" : "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/firebase/leveldb.git", + "state" : { + "revision" : "a0bc79961d7be727d258d33d5a6b2f1023270ba1", + "version" : "1.22.5" + } + }, + { + "identity" : "lottie-spm", + "kind" : "remoteSourceControl", + "location" : "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/airbnb/lottie-spm", + "state" : { + "revision" : "69faaefa7721fba9e434a52c16adf4329c9084db", + "version" : "4.6.0" + } + }, + { + "identity" : "nanopb", + "kind" : "remoteSourceControl", + "location" : "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/firebase/nanopb.git", + "state" : { + "revision" : "b7e1104502eca3a213b46303391ca4d3bc8ddec1", + "version" : "2.30910.0" + } + }, + { + "identity" : "promises", + "kind" : "remoteSourceControl", + "location" : "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/google/promises.git", + "state" : { + "revision" : "540318ecedd63d883069ae7f1ed811a2df00b6ac", + "version" : "2.4.0" + } + }, + { + "identity" : "rxswift", + "kind" : "remoteSourceControl", + "location" : "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/ReactiveX/RxSwift.git", + "state" : { + "revision" : "132aea4f236ccadc51590b38af0357a331d51fa2", + "version" : "6.10.2" + } + }, + { + "identity" : "snapkit", + "kind" : "remoteSourceControl", + "location" : "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/SnapKit/SnapKit", + "state" : { + "revision" : "2842e6e84e82eb9a8dac0100ca90d9444b0307f4", + "version" : "5.7.1" + } + }, + { + "identity" : "spm-nmapsgeometry", + "kind" : "remoteSourceControl", + "location" : "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/navermaps/SPM-NMapsGeometry.git", + "state" : { + "revision" : "436d5e2e684f557faf5ef5862fd6633a42d7af11", + "version" : "1.0.2" + } + }, + { + "identity" : "spm-nmapsmap", + "kind" : "remoteSourceControl", + "location" : "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/navermaps/SPM-NMapsMap", + "state" : { + "revision" : "d527147b0bf31260166a7063e3ed854a03f8239c", + "version" : "3.23.2" + } + }, + { + "identity" : "swiftrater", + "kind" : "remoteSourceControl", + "location" : "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/takecian/SwiftRater.git", + "state" : { + "revision" : "a4241b31f35fd4c98a901ecd336f47337d2aba5d", + "version" : "2.2.3" + } + }, + { + "identity" : "swiftsoup", + "kind" : "remoteSourceControl", + "location" : "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/scinfu/SwiftSoup.git", + "state" : { + "revision" : "49dcadd93161f4a44b4994d3a3e8de9f085aface", + "version" : "2.13.5" + } + }, + { + "identity" : "then", + "kind" : "remoteSourceControl", + "location" : "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/devxoul/Then", + "state" : { + "revision" : "d41ef523faef0f911369f79c0b96815d9dbb6d7a", + "version" : "3.0.0" + } + } + ], + "version" : 3 +} From ce37da7cebf4b85236be98ac737f8f017545b39f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=9D=80=EC=A7=80?= Date: Wed, 23 Sep 2026 00:05:08 +0900 Subject: [PATCH 2/8] =?UTF-8?q?chore:=20.gitignore=20=EC=A4=91=EB=B3=B5=20?= =?UTF-8?q?=EB=B0=8F=20=EB=8F=99=EC=9E=91=ED=95=98=EC=A7=80=20=EC=95=8A?= =?UTF-8?q?=EB=8A=94=20=EA=B7=9C=EC=B9=99=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 95779d219..4eedef04c 100644 --- a/.gitignore +++ b/.gitignore @@ -111,11 +111,6 @@ iOSInjectionProject/ .DS_Store *.xcuserstate *.xcconfig -xcuserdata/ -DerivedData/ koin.xcworkspace/ -xcshareddata/xcschemes/* -xcuserdata/* -Pods/ GoogleService-Info.plist -GoogleService-Info-Stage.plist \ No newline at end of file +GoogleService-Info-Stage.plist From eeb4e5810686bbba833e5a7c96ddd2516d4e2abe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=9D=80=EC=A7=80?= Date: Wed, 23 Sep 2026 00:39:13 +0900 Subject: [PATCH 3/8] =?UTF-8?q?chore:=20xcconfig=20=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=EC=9D=B4=20=EC=95=B1=20=EB=B2=88=EB=93=A4=EC=97=90=20=EB=B3=B5?= =?UTF-8?q?=EC=82=AC=EB=90=98=EC=A7=80=20=EC=95=8A=EB=8F=84=EB=A1=9D=20Cop?= =?UTF-8?q?y=20Bundle=20Resources=EC=97=90=EC=84=9C=20=EC=A0=9C=EC=99=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- koin.xcodeproj/project.pbxproj | 4 ---- 1 file changed, 4 deletions(-) diff --git a/koin.xcodeproj/project.pbxproj b/koin.xcodeproj/project.pbxproj index 58363302c..e4f130a92 100644 --- a/koin.xcodeproj/project.pbxproj +++ b/koin.xcodeproj/project.pbxproj @@ -783,8 +783,6 @@ B68D2CE72EA505B000F3B479 /* ToastMessageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B68D2CE62EA505B000F3B479 /* ToastMessageView.swift */; }; B68D2CE92EA505B800F3B479 /* ToastVariant.swift in Sources */ = {isa = PBXBuildFile; fileRef = B68D2CE82EA505B800F3B479 /* ToastVariant.swift */; }; B68D2CEB2EA50C1E00F3B479 /* UIViewController+Toast.swift in Sources */ = {isa = PBXBuildFile; fileRef = B68D2CEA2EA50C1E00F3B479 /* UIViewController+Toast.swift */; }; - B6A0D62A2EEB01E600A19521 /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = B6A0D6292EEB01E600A19521 /* Debug.xcconfig */; }; - B6A0D62C2EEB01F100A19521 /* Release.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = B6A0D62B2EEB01F100A19521 /* Release.xcconfig */; }; D0A71C4F2F1B8340009E2D71 /* KoinDropdownHost.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0A71C4E2F1B8340009E2D71 /* KoinDropdownHost.swift */; }; D19A00013000000000000002 /* NotificationRowModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D19A00013000000000000001 /* NotificationRowModel.swift */; }; D19A00013000000000000004 /* NotificationListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D19A00013000000000000003 /* NotificationListView.swift */; }; @@ -5831,10 +5829,8 @@ D27DD0B22BA608310081FD36 /* Assets.xcassets in Resources */, 83D5E9C82CCB844D00C6D4CD /* (null) in Resources */, 83D5E9C82CCB844D00C6D4CD /* (null) in Resources */, - B6A0D62A2EEB01E600A19521 /* Debug.xcconfig in Resources */, D261BBAB2D7B456A00A67F06 /* PrivacyInfo.xcprivacy in Resources */, D8F5C5562E6F144300FB6708 /* floatingLogo.json in Resources */, - B6A0D62C2EEB01F100A19521 /* Release.xcconfig in Resources */, D80AD4E42E6C6BC30061334B /* waveLogo.json in Resources */, 7C50F8DC300FC03B00A87BAE /* AppIcon.icon in Resources */, ); From ace1c0e83bac6b119c110af2d52d62b57604a3fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=9D=80=EC=A7=80?= Date: Wed, 23 Sep 2026 00:54:38 +0900 Subject: [PATCH 4/8] =?UTF-8?q?setting:=20develop=20=EB=8C=80=EC=83=81=20P?= =?UTF-8?q?R=EC=97=90=EC=84=9C=20=EB=B9=8C=EB=93=9C=20=EB=B0=8F=20?= =?UTF-8?q?=EC=9C=A0=EB=8B=9B=20=ED=85=8C=EC=8A=A4=ED=8A=B8=EB=A5=BC=20?= =?UTF-8?q?=EC=8B=A4=ED=96=89=ED=95=98=EB=8A=94=20CI=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/pr-build-and-test.yml | 43 +++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 .github/workflows/pr-build-and-test.yml diff --git a/.github/workflows/pr-build-and-test.yml b/.github/workflows/pr-build-and-test.yml new file mode 100644 index 000000000..bf5538858 --- /dev/null +++ b/.github/workflows/pr-build-and-test.yml @@ -0,0 +1,43 @@ +name: PR Build & Test + +on: + pull_request: + branches: [develop] + +# 같은 PR에 새 커밋이 올라오면 이전 실행은 취소 +concurrency: + group: pr-build-and-test-${{ github.head_ref }} + cancel-in-progress: true + +jobs: + unit-test: + runs-on: macos-26 + steps: + - uses: actions/checkout@v4 + + - name: Secrets 복원 + env: + DEBUG_XCCONFIG: ${{ secrets.DEBUG_XCCONFIG }} + GOOGLE_SERVICE_STAGE_PLIST: ${{ secrets.GOOGLE_SERVICE_STAGE_PLIST }} + run: | + # xcconfig만 있는 폴더라 클론 시 존재하지 않음 + mkdir -p Koin/Core/Configuration + echo "$DEBUG_XCCONFIG" | base64 --decode > Koin/Core/Configuration/Debug.xcconfig + echo "$GOOGLE_SERVICE_STAGE_PLIST" | base64 --decode > GoogleService-Info-Stage.plist + + - name: Xcode 버전 고정 + run: sudo xcode-select -s /Applications/Xcode_26.4.1.app + + - name: SPM 캐시 + uses: actions/cache@v4 + with: + path: SourcePackages + key: spm-${{ hashFiles('koin.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved') }} + + - name: 빌드 & 테스트 + run: | + xcodebuild test \ + -project koin.xcodeproj \ + -scheme koin-stage \ + -destination 'platform=iOS Simulator,name=iPhone 17,OS=26.4' \ + -clonedSourcePackagesDirPath SourcePackages From 534220d5233dc952d7f71413662e704eed02f6d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=9D=80=EC=A7=80?= Date: Wed, 23 Sep 2026 21:14:57 +0900 Subject: [PATCH 5/8] =?UTF-8?q?fix:=20CI=20=EC=8B=9C=EB=AE=AC=EB=A0=88?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=20destination=EC=9D=84=20OS=3Dlatest?= =?UTF-8?q?=EB=A1=9C=20=EC=A7=80=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/pr-build-and-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr-build-and-test.yml b/.github/workflows/pr-build-and-test.yml index bf5538858..9f39549e2 100644 --- a/.github/workflows/pr-build-and-test.yml +++ b/.github/workflows/pr-build-and-test.yml @@ -39,5 +39,5 @@ jobs: xcodebuild test \ -project koin.xcodeproj \ -scheme koin-stage \ - -destination 'platform=iOS Simulator,name=iPhone 17,OS=26.4' \ + -destination 'platform=iOS Simulator,name=iPhone 17 Pro,OS=latest' \ -clonedSourcePackagesDirPath SourcePackages From f958e3d7f7ff29dc1b60e6a30eb7254f792b96ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=9D=80=EC=A7=80?= Date: Wed, 23 Sep 2026 21:31:41 +0900 Subject: [PATCH 6/8] =?UTF-8?q?fix:=20concurrency=20=EA=B7=B8=EB=A3=B9?= =?UTF-8?q?=EC=9D=84=20PR=20=EB=B2=88=ED=98=B8=20=EA=B8=B0=EC=A4=80?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/pr-build-and-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr-build-and-test.yml b/.github/workflows/pr-build-and-test.yml index 9f39549e2..592964132 100644 --- a/.github/workflows/pr-build-and-test.yml +++ b/.github/workflows/pr-build-and-test.yml @@ -6,7 +6,7 @@ on: # 같은 PR에 새 커밋이 올라오면 이전 실행은 취소 concurrency: - group: pr-build-and-test-${{ github.head_ref }} + group: pr-build-and-test-${{ github.event.pull_request.number }} cancel-in-progress: true jobs: From 912a9450cdfde107de5b5cd391ee3d36d2a8bad5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=9D=80=EC=A7=80?= Date: Wed, 23 Sep 2026 21:33:03 +0900 Subject: [PATCH 7/8] =?UTF-8?q?fix:=20=EC=95=A1=EC=85=98=20SHA=20=EA=B3=A0?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/pr-build-and-test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr-build-and-test.yml b/.github/workflows/pr-build-and-test.yml index 592964132..a28f4fa3a 100644 --- a/.github/workflows/pr-build-and-test.yml +++ b/.github/workflows/pr-build-and-test.yml @@ -13,7 +13,7 @@ jobs: unit-test: runs-on: macos-26 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Secrets 복원 env: @@ -29,7 +29,7 @@ jobs: run: sudo xcode-select -s /Applications/Xcode_26.4.1.app - name: SPM 캐시 - uses: actions/cache@v4 + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: SourcePackages key: spm-${{ hashFiles('koin.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved') }} From 73189f40c5347d8dd79829b8104176a396a65b60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=9D=80=EC=A7=80?= Date: Wed, 23 Sep 2026 21:34:16 +0900 Subject: [PATCH 8/8] =?UTF-8?q?chore:=20=EC=9B=8C=ED=81=AC=ED=94=8C?= =?UTF-8?q?=EB=A1=9C=20=EA=B6=8C=ED=95=9C=EC=9D=84=20=EC=9D=BD=EA=B8=B0=20?= =?UTF-8?q?=EC=A0=84=EC=9A=A9=EC=9C=BC=EB=A1=9C=20=EC=A0=9C=ED=95=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/pr-build-and-test.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/pr-build-and-test.yml b/.github/workflows/pr-build-and-test.yml index a28f4fa3a..54116674a 100644 --- a/.github/workflows/pr-build-and-test.yml +++ b/.github/workflows/pr-build-and-test.yml @@ -9,7 +9,12 @@ concurrency: group: pr-build-and-test-${{ github.event.pull_request.number }} cancel-in-progress: true +# 코드를 읽기만 하면 되므로 최소 권한만 부여 +permissions: + contents: read + jobs: + # fork에서 올린 PR에는 Secrets가 전달되지 않아 실행되지 않음 (같은 레포 브랜치 PR만 지원) unit-test: runs-on: macos-26 steps: