Skip to content

Commit e14bacf

Browse files
author
TakayukiCho
committed
Merge release/2024.05.09T11.46.19 into master
2 parents 1c039cb + 44ce264 commit e14bacf

18 files changed

+162
-76
lines changed

.circleci/config.yml

+1-47
Original file line numberDiff line numberDiff line change
@@ -147,33 +147,6 @@ jobs:
147147
- slack/status:
148148
fail_only: true
149149

150-
ui_test:
151-
executor:
152-
name: build
153-
steps:
154-
- run:
155-
name: Request Ui Test
156-
command: |
157-
if [ $EXEC_ENV = 'private' ]; then
158-
curl -f -u ${CIRCLECI_KEY} \
159-
-d build_parameters[CIRCLE_JOB]=e2e_test \
160-
-d build_parameters[RELEASE_BRANCH]=${CIRCLE_BRANCH} \
161-
${UI_TEST_ENDPOINT}
162-
fi
163-
164-
spm_test:
165-
executor:
166-
name: build
167-
steps:
168-
- run:
169-
name: Request Swift-PM link Test
170-
command: |
171-
if [ $EXEC_ENV = 'private' ]; then
172-
curl -f -u ${CIRCLECI_KEY} \
173-
-d build_parameters[CIRCLE_JOB]=spm_link_test \
174-
${UI_TEST_ENDPOINT}
175-
fi
176-
177150
generate_docs:
178151
executor:
179152
name: build
@@ -259,23 +232,11 @@ workflows:
259232
- test:
260233
requires:
261234
- build
262-
- ui_test:
263-
filters:
264-
branches:
265-
only:
266-
- develop
267235
- publish:
268236
filters:
269237
branches:
270238
only:
271239
- master
272-
- spm_test:
273-
requires:
274-
- build
275-
filters:
276-
branches:
277-
only:
278-
- master
279240

280241
manual_deploy:
281242
when:
@@ -290,16 +251,9 @@ workflows:
290251
- test:
291252
requires:
292253
- build
293-
- ui_test:
294-
requires:
295-
- build
296-
- spm_test:
297-
requires:
298-
- build
299254
- publish_pods:
300255
requires:
301-
- ui_test
302-
- spm_test
256+
- test
303257

304258
dry_run:
305259
when:

.github/workflows/danger.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
runs-on: macos-latest
1616
steps:
1717
- name: Cancel Previous Runs
18-
uses: styfle/cancel-workflow-action@0.9.1
18+
uses: styfle/cancel-workflow-action@0.12.1
1919
with:
2020
access_token: ${{ secrets.GH_ACCESS_TOKEN }}
2121
- uses: actions/checkout@v2

.github/workflows/release-finish.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
completed: ${{ steps.check_completion.outputs.completed }}
1515
steps:
1616
- name: Cancel Previous Runs
17-
uses: styfle/cancel-workflow-action@0.9.1
17+
uses: styfle/cancel-workflow-action@0.12.1
1818
with:
1919
access_token: ${{ secrets.GH_ACCESS_TOKEN }}
2020
all_but_latest: true

.github/workflows/release-start.yml

+13-6
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,16 @@ jobs:
5858
### Update
5959
${{ steps.find-release-targets.outputs.targets }}
6060
- name: Request beta release
61-
run : |
62-
curl -u ${{ secrets.CIRCLECI_KEY }} \
63-
-d build_parameters[CIRCLE_JOB]=release \
64-
-d build_parameters[RELEASE_BRANCH]=release/${{ steps.date.outputs.date }} \
65-
-d build_parameters[RELEASE_TARGET]=KarteTracker \
66-
${{ secrets.UI_TEST_ENDPOINT }}
61+
uses: actions/github-script@v7
62+
with:
63+
github-token: ${{ secrets.SHARED_GITHUB_ACCESS_TOKEN }}
64+
script: |
65+
await github.rest.actions.createWorkflowDispatch({
66+
owner: 'plaidev',
67+
repo: '${{vars.UITEST_REPO}}',
68+
workflow_id: 'release-test-app.yml',
69+
ref: 'master',
70+
inputs: {
71+
sdkBranch: 'release/${{ steps.date.outputs.date }}',
72+
},
73+
})

.github/workflows/spm_deploy.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
id-token: write
1313
steps:
1414
- name: Cancel Previous Runs
15-
uses: styfle/cancel-workflow-action@0.9.1
15+
uses: styfle/cancel-workflow-action@0.12.1
1616
with:
1717
access_token: ${{ secrets.GH_ACCESS_TOKEN }}
1818
- name: Checkout master

.github/workflows/spm_test.yml

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
name: "SPM Test"
2+
on:
3+
push:
4+
branches:
5+
- master
6+
7+
jobs:
8+
kick_spm_link_test:
9+
runs-on: ubuntu-latest
10+
if: ${{ vars.UITEST_REPO }}
11+
steps:
12+
- uses: actions/github-script@v7
13+
with:
14+
github-token: ${{ secrets.SHARED_GITHUB_ACCESS_TOKEN }}
15+
script: |
16+
await github.rest.actions.createWorkflowDispatch({
17+
owner: 'plaidev',
18+
repo: '${{vars.UITEST_REPO}}',
19+
workflow_id: 'spm-link-test.yml',
20+
ref: 'master',
21+
})
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
name: "UI Test before release"
2+
on:
3+
pull_request:
4+
types: [opened, reopend]
5+
branches:
6+
- 'master'
7+
8+
jobs:
9+
wait_uitest:
10+
runs-on: ubuntu-latest
11+
if: ${{ vars.UITEST_REPO }}
12+
steps:
13+
- name: Kick UI Test and wait
14+
uses: aurelien-baudet/workflow-dispatch@v2
15+
with:
16+
workflow: uitest.yml
17+
repo: plaidev/${{vars.UITEST_REPO}}
18+
token: ${{ secrets.SHARED_GITHUB_ACCESS_TOKEN }}
19+
ref: master
20+
inputs: '{ "sdkBranch": "${{github.head_ref}}", "slackChannel": "${{vars.SLACK_CHANNEL}}", "notifyOnlyFail": true }'
+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
name: "UI Test on develop"
2+
on:
3+
push:
4+
branches:
5+
- develop
6+
7+
jobs:
8+
kick_uitest:
9+
runs-on: ubuntu-latest
10+
if: ${{ vars.UITEST_REPO }}
11+
steps:
12+
- uses: actions/github-script@v7
13+
with:
14+
github-token: ${{ secrets.SHARED_GITHUB_ACCESS_TOKEN }}
15+
script: |
16+
await github.rest.actions.createWorkflowDispatch({
17+
owner: 'plaidev',
18+
repo: '${{vars.UITEST_REPO}}',
19+
workflow_id: 'uitest.yml',
20+
ref: 'master',
21+
inputs: {
22+
slackChannel: '${{vars.SLACK_CHANNEL}}',
23+
notifyOnlyFail: true,
24+
minimumOnly: true,
25+
},
26+
})

.spm-version

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2.13.0
1+
2.14.0

CHANGELOG.md

+17-2
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,31 @@
22

33
| モジュール名 | Description | 最新のバージョン |
44
| :-- | :-- | :-- |
5-
| KarteCore | イベントトラッキング機能を提供します。 | 2.26.0 |
5+
| KarteCore | イベントトラッキング機能を提供します。 | 2.27.0 |
66
| KarteInAppMessaging | アプリ内メッセージ機能を提供します。 | 2.17.0 |
77
| KarteRemoteNotification | プッシュ通知の受信および効果測定機能を提供します。 | 2.11.0 |
8-
| KarteVariables | 設定値配信機能を提供します。 | 2.9.0 |
8+
| KarteVariables | 設定値配信機能を提供します。 | 2.10.0 |
99
| KarteVisualTracking | ビジュアルトラッキング機能を提供します。 | 2.12.0 |
1010
| KarteInbox | Push通知の送信履歴を取得する機能を提供します(β版)。 | 0.1.0 |
1111
| KarteCrashReporting | クラッシュイベントのトラッキング機能を提供します。 | 2.7.1 |
1212
| KarteUtilities | KarteCore モジュール等が利用するUtility機能を提供します。通常直接参照する必要はありません。 | 3.12.0 |
1313
| KarteNotificationServiceExtension | リッチプッシュ通知機能を提供します。 | 1.2.0 |
1414

15+
16+
# Releases - 2024.05.09
17+
## Version 2.14.0
18+
19+
### Core 2.27.0
20+
** 🔨CHANGED**
21+
- サポート改善のため、ログにタイムスタンプを出力するようにしました。
22+
23+
### Veriables 2.10.0
24+
** 🔨CHANGED**
25+
- 特定の条件にマッチする変数オブジェクトをリスト形式で取得できるメソッドを追加しました。
26+
27+
** 💊FIXED**
28+
- getAllKeysでシステムが利用しているlastFetchTimeとlastFetchStatusが返されるのを修正しました
29+
1530
# Releases - 2024.04.18
1631
## Version 2.13.0
1732

Dangerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ $is_hotfix_pr = (github.branch_for_base == "master" || github.branch_for_base ==
1313
#
1414
github.dismiss_out_of_range_messages
1515
swiftlint.config_file = '.swiftlint.yml'
16-
swiftlint.binary_path = '/usr/local/bin/swiftlint'
16+
swiftlint.binary_path = '/opt/homebrew/bin/swiftlint'
1717
swiftlint.lint_files inline_mode: true
1818

1919
#

Karte.xcodeproj/project.pbxproj

+4-4
Original file line numberDiff line numberDiff line change
@@ -3828,7 +3828,7 @@
38283828
"@executable_path/Frameworks",
38293829
"@loader_path/Frameworks",
38303830
);
3831-
MARKETING_VERSION = 2.26.0;
3831+
MARKETING_VERSION = 2.27.0;
38323832
PRODUCT_BUNDLE_IDENTIFIER = io.karte.KarteCore;
38333833
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
38343834
SKIP_INSTALL = YES;
@@ -3863,7 +3863,7 @@
38633863
"@executable_path/Frameworks",
38643864
"@loader_path/Frameworks",
38653865
);
3866-
MARKETING_VERSION = 2.26.0;
3866+
MARKETING_VERSION = 2.27.0;
38673867
PRODUCT_BUNDLE_IDENTIFIER = io.karte.KarteCore;
38683868
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
38693869
SKIP_INSTALL = YES;
@@ -3960,7 +3960,7 @@
39603960
"@executable_path/Frameworks",
39613961
"@loader_path/Frameworks",
39623962
);
3963-
MARKETING_VERSION = 2.9.0;
3963+
MARKETING_VERSION = 2.10.0;
39643964
PRODUCT_BUNDLE_IDENTIFIER = io.karte.KarteVariables;
39653965
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
39663966
SKIP_INSTALL = YES;
@@ -3992,7 +3992,7 @@
39923992
"@executable_path/Frameworks",
39933993
"@loader_path/Frameworks",
39943994
);
3995-
MARKETING_VERSION = 2.9.0;
3995+
MARKETING_VERSION = 2.10.0;
39963996
PRODUCT_BUNDLE_IDENTIFIER = io.karte.KarteVariables;
39973997
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
39983998
SKIP_INSTALL = YES;

KarteCore.podspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
Pod::Spec.new do |s|
1010
s.name = 'KarteCore'
11-
s.version = '2.26.0'
11+
s.version = '2.27.0'
1212
s.summary = 'KARTE Core SDK'
1313
s.homepage = 'https://karte.io'
1414
s.author = { 'PLAID' => '[email protected]' }

KarteCore/Common/Logger/LogLayout.swift

+16-7
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,29 @@
1616

1717
import Foundation
1818

19-
internal protocol LogLayout {
20-
func layout(_ log: Logger.Log) -> String
19+
internal class LogLayout {
20+
private static let dateFormatter = {
21+
let formatter = DateFormatter()
22+
formatter.dateFormat = DateFormatter.dateFormat(fromTemplate: "yyyyMMddHHmmssSSS", options: 0, locale: nil)
23+
return formatter
24+
}()
25+
final var timestamp: String {
26+
Self.dateFormatter.string(for: Date()) ?? ""
27+
}
28+
func layout(_ log: Logger.Log) -> String { "" }
29+
deinit {}
2130
}
2231

2332
internal class DevelopmentLogLayout: LogLayout {
24-
func layout(_ log: Logger.Log) -> String {
25-
"\(log.tag.version) - \(log.level.identifier)/KARTE \(log.file):\(log.line) \(log.function) [\(log.tag.rawValue)] \(log.message)"
33+
override func layout(_ log: Logger.Log) -> String {
34+
"\(timestamp) - \(log.tag.version) - \(log.level.identifier)/KARTE \(log.file):\(log.line) \(log.function) [\(log.tag.rawValue)] \(log.message)"
2635
}
2736
deinit {}
2837
}
2938

30-
internal class ProductionLogLayout {
31-
func layout(_ log: Logger.Log) -> String {
32-
"\(log.tag.version) - \(log.level.identifier)/KARTE [\(log.tag.rawValue)] \(log.message)"
39+
internal class ProductionLogLayout: LogLayout {
40+
override func layout(_ log: Logger.Log) -> String {
41+
"\(timestamp) - \(log.tag.version) - \(log.level.identifier)/KARTE [\(log.tag.rawValue)] \(log.message)"
3342
}
3443
deinit {}
3544
}

KarteTests/KarteVariablesTests/IntegrationTests/VariablesSpec.swift

+19
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,8 @@ class VariablesSpec: QuickSpec {
183183
expect(keys.contains("var2")).to(beTrue())
184184
expect(keys.contains("var3")).to(beTrue())
185185
expect(keys.contains("var4")).to(beFalse())
186+
expect(keys.contains("lastFetchTime")).to(beFalse())
187+
expect(keys.contains("lastFetchStatus")).to(beFalse())
186188
}
187189
}
188190

@@ -206,6 +208,23 @@ class VariablesSpec: QuickSpec {
206208
}
207209
}
208210

211+
describe("filter") {
212+
it ("return matched variables") {
213+
let filteredVariables = Variables.filter {
214+
$0.hasPrefix("var")
215+
}.sorted { $0.name < $1.name }
216+
expect(filteredVariables.count).to(equal(3))
217+
expect(filteredVariables[0].string).to(equal("変数1"))
218+
expect(filteredVariables[1].string).to(equal("変数2a"))
219+
expect(filteredVariables[2].string).to(equal("変数3a"))
220+
}
221+
it("won't return when not matched") {
222+
let filteredVariables = Variables.filter {
223+
$0.hasPrefix("let")
224+
}
225+
expect(filteredVariables.count).to(equal(0))
226+
}
227+
}
209228

210229
describe("retrieve variable") {
211230
it("var1 is not nil") {

KarteVariables.podspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
Pod::Spec.new do |s|
1010
s.name = 'KarteVariables'
11-
s.version = '2.9.0'
11+
s.version = '2.10.0'
1212
s.summary = 'KARTE Variables SDK'
1313
s.homepage = 'https://karte.io'
1414
s.author = { 'PLAID' => '[email protected]' }

KarteVariables/Variables.swift

+16-1
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,22 @@ public class Variables: NSObject {
102102
/// - Returns: 全ての設定値のキーの一覧を返します。
103103
@objc
104104
public class func getAllKeys() -> [String] {
105-
return UserDefaults.standard.getAllKeys(forNamespace: .variables)
105+
return UserDefaults.standard.getAllKeys(forNamespace: .variables).filter {
106+
// こちらの2つはシステムで利用している値なので除外する
107+
!["lastFetchTime", "lastFetchStatus"].contains($0)
108+
}
109+
}
110+
111+
/// キーに特定の文字列を持つVariableのリスト取得します。<br>
112+
/// なお事前に `Variables.fetch(completion:)` を呼び出しておく必要があります。
113+
///
114+
/// - Parameter forPredicate: キーマッチ用のブロック
115+
/// - Returns: マッチしたRegexの一覧を返します。
116+
@objc
117+
public class func filter(usingPredicate predicate: (String) -> Bool) -> [Variable] {
118+
let allKeys = Variables.getAllKeys()
119+
let filteredKeys = allKeys.filter(predicate)
120+
return filteredKeys.map { Variable(name: $0) }
106121
}
107122

108123
/// 指定した設定値のキーのキャッシュを削除します<br>

0 commit comments

Comments
 (0)