release: Fix publish testflight

This commit is contained in:
世界 2024-12-13 21:14:42 +08:00
parent 64a94e8144
commit 2ac2589d14
No known key found for this signature in database
GPG Key ID: CD109927C34A63C4
2 changed files with 66 additions and 17 deletions

View File

@ -245,7 +245,7 @@ jobs:
cd clients/android cd clients/android
git checkout main git checkout main
- name: Checkout dev branch - name: Checkout dev branch
if: github.ref == 'refs/heads/dev-next' && github.event_name != 'workflow_dispatch' if: github.ref == 'refs/heads/dev-next'
run: |- run: |-
cd clients/android cd clients/android
git checkout dev git checkout dev
@ -319,7 +319,7 @@ jobs:
cd clients/android cd clients/android
git checkout main git checkout main
- name: Checkout dev branch - name: Checkout dev branch
if: github.ref == 'refs/heads/dev-next' && github.event_name != 'workflow_dispatch' if: github.ref == 'refs/heads/dev-next'
run: |- run: |-
cd clients/android cd clients/android
git checkout dev git checkout dev
@ -409,7 +409,7 @@ jobs:
cd clients/apple cd clients/apple
git checkout main git checkout main
- name: Checkout dev branch - name: Checkout dev branch
if: matrix.if && github.ref == 'refs/heads/dev-next' && github.event_name != 'workflow_dispatch' if: matrix.if && github.ref == 'refs/heads/dev-next'
run: |- run: |-
cd clients/apple cd clients/apple
git checkout dev git checkout dev
@ -524,7 +524,7 @@ jobs:
path: 'dist' path: 'dist'
upload: upload:
name: Upload builds name: Upload builds
if: always() && github.event_name == 'workflow_dispatch' && inputs.build != 'publish-android' if: always() && github.event_name == 'workflow_dispatch' && (inputs.build == 'All' || inputs.build == 'Binary' || inputs.build == 'Android' || inputs.build == 'Apple' || inputs.build == 'macOS-standalone')
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: needs:
- calculate_version - calculate_version

View File

@ -100,28 +100,77 @@ findVersion:
} }
func publishTestflight(ctx context.Context) error { func publishTestflight(ctx context.Context) error {
tagVersion, err := build_shared.ReadTagVersion()
if err != nil {
return err
}
tag := tagVersion.VersionString()
client := createClient() client := createClient()
var buildsToPublish []asc.Build
for _, platform := range []string{ buildIDsResponse, _, err := client.TestFlight.ListBuildIDsForBetaGroup(ctx, groupID, nil)
"IOS", if err != nil {
"MAC_OS", return err
"TV_OS", }
buildIDS := common.Map(buildIDsResponse.Data, func(it asc.RelationshipData) string {
return it.ID
})
for _, platform := range []asc.Platform{
asc.PlatformIOS,
asc.PlatformMACOS,
asc.PlatformTVOS,
} { } {
log.Info(string(platform), " list builds")
builds, _, err := client.Builds.ListBuilds(ctx, &asc.ListBuildsQuery{ builds, _, err := client.Builds.ListBuilds(ctx, &asc.ListBuildsQuery{
FilterApp: []string{appID}, FilterApp: []string{appID},
FilterPreReleaseVersionPlatform: []string{platform}, FilterPreReleaseVersionPlatform: []string{string(platform)},
}) })
if err != nil { if err != nil {
return err return err
} }
buildsToPublish = append(buildsToPublish, builds.Data[0]) log.Info(string(platform), " ", tag, " list localizations")
} localizations, _, err := client.TestFlight.ListBetaBuildLocalizationsForBuild(ctx, builds.Data[0].ID, nil)
_, err := client.TestFlight.AddBuildsToBetaGroup(ctx, groupID, common.Map(buildsToPublish, func(it asc.Build) string {
return it.ID
}))
if err != nil { if err != nil {
return err return err
} }
localization := common.Find(localizations.Data, func(it asc.BetaBuildLocalization) bool {
return *it.Attributes.Locale == "en-US"
})
if localization.ID == "" {
log.Fatal(string(platform), " ", tag, " no en-US localization found")
}
if localization.Attributes == nil || localization.Attributes.WhatsNew == nil || *localization.Attributes.WhatsNew == "" {
log.Info(string(platform), " ", tag, " update localization")
_, _, err = client.TestFlight.UpdateBetaBuildLocalization(ctx, localization.ID, common.Ptr(
F.ToString("sing-box ", tag),
))
if err != nil {
return err
}
}
if !common.Contains(buildIDS, builds.Data[0].ID) {
log.Info(string(platform), " ", tag, " publish")
_, err = client.TestFlight.AddBuildsToBetaGroup(ctx, groupID, []string{builds.Data[0].ID})
if err != nil {
return err
}
}
log.Info(string(platform), " ", tag, " list submissions")
betaSubmissions, _, err := client.TestFlight.ListBetaAppReviewSubmissions(ctx, &asc.ListBetaAppReviewSubmissionsQuery{
FilterBuild: []string{builds.Data[0].ID},
})
if err != nil {
return err
}
if len(betaSubmissions.Data) == 0 {
log.Info(string(platform), " ", tag, " create submission")
_, _, err = client.TestFlight.CreateBetaAppReviewSubmission(ctx, builds.Data[0].ID)
if err != nil {
return err
}
continue
}
}
return nil return nil
} }