Compare commits

...

8 Commits

Author SHA1 Message Date
github-actions[bot]
942f7da090 Bump build number to 253 2026-02-13 21:35:55 +00:00
Arkadiusz Fal
35e38a03ba Skip build number commit when already up to date
The release job fails when the build number in the repo already matches
the computed value, causing git commit to exit with code 1 on an empty
changeset. Now we check for staged changes before committing.
2026-02-13 22:22:47 +01:00
Arkadiusz Fal
f973f3cd91 Revert app icon name to Yattee2 for Icon Composer
The Yattee2.icon/ Icon Composer file is the correct source for app
icons. The previous change to AppIcon was incorrect — AppIcon.appiconset
is an empty legacy placeholder with no actual PNGs.
2026-02-13 22:10:59 +01:00
Arkadiusz Fal
e5cc5c6d13 Use macos-26 runner for Xcode 26 SDK support
iOS 26 APIs (matchedTransitionSource on ToolbarContent, etc.) require
the Xcode 26 SDK which is only available on macos-26 runners.
2026-02-13 21:51:45 +01:00
Arkadiusz Fal
71f881a580 Fix app icon name to match asset catalog
ASSETCATALOG_COMPILER_APPICON_NAME was set to "Yattee2" but the
asset catalog only has "AppIcon.appiconset".
2026-02-13 21:43:11 +01:00
Arkadiusz Fal
cd096e6235 Set code_sign_identity in update_code_signing_settings
Without explicit identity, xcodebuild defaults to "iOS Development"
which doesn't exist on CI. Set "Apple Distribution" for App Store
builds and "Developer ID Application" for notarized builds.
2026-02-13 21:37:02 +01:00
Arkadiusz Fal
895aca267a Use fastlane update_code_signing_settings for manual signing
Replaced sed-based CODE_SIGN_STYLE override with fastlane's
update_code_signing_settings which also sets PROVISIONING_PROFILE_SPECIFIER.
This fixes the YatteeShareExtension build failure where it couldn't
find a provisioning profile under manual signing.
2026-02-13 21:19:16 +01:00
Arkadiusz Fal
16609aa649 Skip GitHub release when any build job fails
Adding !failure() check so skipped builds (not selected) still allow
the release, but actual build failures block it.
2026-02-13 20:54:12 +01:00
3 changed files with 61 additions and 26 deletions

View File

@@ -47,7 +47,7 @@ env:
jobs: jobs:
determine_build_number: determine_build_number:
name: Determine build number name: Determine build number
runs-on: macos-latest runs-on: macos-26
outputs: outputs:
build_number: ${{ steps.calc.outputs.build_number }} build_number: ${{ steps.calc.outputs.build_number }}
version_number: ${{ steps.version.outputs.version_number }} version_number: ${{ steps.version.outputs.version_number }}
@@ -77,7 +77,7 @@ jobs:
if: ${{ inputs.build_ios }} if: ${{ inputs.build_ios }}
needs: [determine_build_number] needs: [determine_build_number]
name: Release iOS to TestFlight name: Release iOS to TestFlight
runs-on: macos-latest runs-on: macos-26
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1 - uses: ruby/setup-ruby@v1
@@ -85,9 +85,6 @@ jobs:
ruby-version: '3.4' ruby-version: '3.4'
bundler-cache: true bundler-cache: true
cache-version: 1 cache-version: 1
- name: Set signing to manual for CI
run: |
sed -i '' 's/CODE_SIGN_STYLE = Automatic/CODE_SIGN_STYLE = Manual/' Yattee.xcodeproj/project.pbxproj
- name: Set build number - name: Set build number
run: | run: |
sed -i '' 's/CURRENT_PROJECT_VERSION = [0-9]*/CURRENT_PROJECT_VERSION = ${{ needs.determine_build_number.outputs.build_number }}/' Yattee.xcodeproj/project.pbxproj sed -i '' 's/CURRENT_PROJECT_VERSION = [0-9]*/CURRENT_PROJECT_VERSION = ${{ needs.determine_build_number.outputs.build_number }}/' Yattee.xcodeproj/project.pbxproj
@@ -106,7 +103,7 @@ jobs:
if: ${{ inputs.build_tvos }} if: ${{ inputs.build_tvos }}
needs: [determine_build_number] needs: [determine_build_number]
name: Release tvOS to TestFlight name: Release tvOS to TestFlight
runs-on: macos-latest runs-on: macos-26
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1 - uses: ruby/setup-ruby@v1
@@ -114,9 +111,6 @@ jobs:
ruby-version: '3.4' ruby-version: '3.4'
bundler-cache: true bundler-cache: true
cache-version: 1 cache-version: 1
- name: Set signing to manual for CI
run: |
sed -i '' 's/CODE_SIGN_STYLE = Automatic/CODE_SIGN_STYLE = Manual/' Yattee.xcodeproj/project.pbxproj
- name: Set build number - name: Set build number
run: | run: |
sed -i '' 's/CURRENT_PROJECT_VERSION = [0-9]*/CURRENT_PROJECT_VERSION = ${{ needs.determine_build_number.outputs.build_number }}/' Yattee.xcodeproj/project.pbxproj sed -i '' 's/CURRENT_PROJECT_VERSION = [0-9]*/CURRENT_PROJECT_VERSION = ${{ needs.determine_build_number.outputs.build_number }}/' Yattee.xcodeproj/project.pbxproj
@@ -135,7 +129,7 @@ jobs:
if: ${{ inputs.build_mac_beta }} if: ${{ inputs.build_mac_beta }}
needs: [determine_build_number] needs: [determine_build_number]
name: Release macOS to TestFlight name: Release macOS to TestFlight
runs-on: macos-latest runs-on: macos-26
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1 - uses: ruby/setup-ruby@v1
@@ -143,9 +137,6 @@ jobs:
ruby-version: '3.4' ruby-version: '3.4'
bundler-cache: true bundler-cache: true
cache-version: 1 cache-version: 1
- name: Set signing to manual for CI
run: |
sed -i '' 's/CODE_SIGN_STYLE = Automatic/CODE_SIGN_STYLE = Manual/' Yattee.xcodeproj/project.pbxproj
- name: Set build number - name: Set build number
run: | run: |
sed -i '' 's/CURRENT_PROJECT_VERSION = [0-9]*/CURRENT_PROJECT_VERSION = ${{ needs.determine_build_number.outputs.build_number }}/' Yattee.xcodeproj/project.pbxproj sed -i '' 's/CURRENT_PROJECT_VERSION = [0-9]*/CURRENT_PROJECT_VERSION = ${{ needs.determine_build_number.outputs.build_number }}/' Yattee.xcodeproj/project.pbxproj
@@ -164,7 +155,7 @@ jobs:
if: ${{ inputs.build_mac_notarized }} if: ${{ inputs.build_mac_notarized }}
needs: [determine_build_number] needs: [determine_build_number]
name: Build and notarize macOS app name: Build and notarize macOS app
runs-on: macos-latest runs-on: macos-26
env: env:
BUILD_NUMBER: ${{ needs.determine_build_number.outputs.build_number }} BUILD_NUMBER: ${{ needs.determine_build_number.outputs.build_number }}
VERSION_NUMBER: ${{ needs.determine_build_number.outputs.version_number }} VERSION_NUMBER: ${{ needs.determine_build_number.outputs.version_number }}
@@ -175,9 +166,6 @@ jobs:
ruby-version: '3.4' ruby-version: '3.4'
bundler-cache: true bundler-cache: true
cache-version: 1 cache-version: 1
- name: Set signing to manual with Developer ID
run: |
sed -i '' 's/CODE_SIGN_STYLE = Automatic/CODE_SIGN_STYLE = Manual/' Yattee.xcodeproj/project.pbxproj
- name: Set build number - name: Set build number
run: | run: |
sed -i '' 's/CURRENT_PROJECT_VERSION = [0-9]*/CURRENT_PROJECT_VERSION = ${{ env.BUILD_NUMBER }}/' Yattee.xcodeproj/project.pbxproj sed -i '' 's/CURRENT_PROJECT_VERSION = [0-9]*/CURRENT_PROJECT_VERSION = ${{ env.BUILD_NUMBER }}/' Yattee.xcodeproj/project.pbxproj
@@ -198,7 +186,7 @@ jobs:
if-no-files-found: error if-no-files-found: error
release: release:
if: ${{ inputs.create_release && !cancelled() }} if: ${{ inputs.create_release && !cancelled() && !failure() }}
needs: [determine_build_number, ios_beta, tvos_beta, mac_beta, mac_notarized] needs: [determine_build_number, ios_beta, tvos_beta, mac_beta, mac_notarized]
name: Create GitHub release name: Create GitHub release
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -217,8 +205,10 @@ jobs:
git config --local user.name "github-actions[bot]" git config --local user.name "github-actions[bot]"
sed -i 's/CURRENT_PROJECT_VERSION = [0-9]*/CURRENT_PROJECT_VERSION = ${{ env.BUILD_NUMBER }}/' Yattee.xcodeproj/project.pbxproj sed -i 's/CURRENT_PROJECT_VERSION = [0-9]*/CURRENT_PROJECT_VERSION = ${{ env.BUILD_NUMBER }}/' Yattee.xcodeproj/project.pbxproj
git add Yattee.xcodeproj/project.pbxproj git add Yattee.xcodeproj/project.pbxproj
git commit -m "Bump build number to ${{ env.BUILD_NUMBER }}" git diff --cached --quiet && echo "Build number already up to date" || {
git push origin ${{ github.ref_name }} git commit -m "Bump build number to ${{ env.BUILD_NUMBER }}"
git push origin ${{ github.ref_name }}
}
- uses: actions/download-artifact@v4 - uses: actions/download-artifact@v4
with: with:
path: artifacts path: artifacts

View File

@@ -459,7 +459,7 @@
AUTOMATION_APPLE_EVENTS = NO; AUTOMATION_APPLE_EVENTS = NO;
CODE_SIGN_ENTITLEMENTS = Yattee/Yattee.entitlements; CODE_SIGN_ENTITLEMENTS = Yattee/Yattee.entitlements;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 252; CURRENT_PROJECT_VERSION = 253;
DEAD_CODE_STRIPPING = YES; DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = 78Z5H3M6RJ; DEVELOPMENT_TEAM = 78Z5H3M6RJ;
ENABLE_APP_SANDBOX = YES; ENABLE_APP_SANDBOX = YES;
@@ -540,7 +540,7 @@
AUTOMATION_APPLE_EVENTS = NO; AUTOMATION_APPLE_EVENTS = NO;
CODE_SIGN_ENTITLEMENTS = Yattee/Yattee.entitlements; CODE_SIGN_ENTITLEMENTS = Yattee/Yattee.entitlements;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 252; CURRENT_PROJECT_VERSION = 253;
DEAD_CODE_STRIPPING = YES; DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = 78Z5H3M6RJ; DEVELOPMENT_TEAM = 78Z5H3M6RJ;
ENABLE_APP_SANDBOX = YES; ENABLE_APP_SANDBOX = YES;
@@ -616,7 +616,7 @@
buildSettings = { buildSettings = {
CODE_SIGN_ENTITLEMENTS = YatteeShareExtension/YatteeShareExtension.entitlements; CODE_SIGN_ENTITLEMENTS = YatteeShareExtension/YatteeShareExtension.entitlements;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 252; CURRENT_PROJECT_VERSION = 253;
DEVELOPMENT_TEAM = 78Z5H3M6RJ; DEVELOPMENT_TEAM = 78Z5H3M6RJ;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = YatteeShareExtension/Info.plist; INFOPLIST_FILE = YatteeShareExtension/Info.plist;
@@ -647,7 +647,7 @@
buildSettings = { buildSettings = {
CODE_SIGN_ENTITLEMENTS = YatteeShareExtension/YatteeShareExtension.entitlements; CODE_SIGN_ENTITLEMENTS = YatteeShareExtension/YatteeShareExtension.entitlements;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 252; CURRENT_PROJECT_VERSION = 253;
DEVELOPMENT_TEAM = 78Z5H3M6RJ; DEVELOPMENT_TEAM = 78Z5H3M6RJ;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = YatteeShareExtension/Info.plist; INFOPLIST_FILE = YatteeShareExtension/Info.plist;
@@ -679,7 +679,7 @@
buildSettings = { buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)"; BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 252; CURRENT_PROJECT_VERSION = 253;
DEAD_CODE_STRIPPING = YES; DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = 78Z5H3M6RJ; DEVELOPMENT_TEAM = 78Z5H3M6RJ;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
@@ -708,7 +708,7 @@
buildSettings = { buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)"; BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 252; CURRENT_PROJECT_VERSION = 253;
DEAD_CODE_STRIPPING = YES; DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = 78Z5H3M6RJ; DEVELOPMENT_TEAM = 78Z5H3M6RJ;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;

View File

@@ -111,6 +111,24 @@ platform :ios do
api_key: api_key api_key: api_key
) )
update_code_signing_settings(
use_automatic_signing: false,
path: XCODEPROJ,
team_id: TEAM_ID,
code_sign_identity: "Apple Distribution",
profile_name: "match AppStore #{DEVELOPER_APP_IDENTIFIER}",
targets: [SCHEME]
)
update_code_signing_settings(
use_automatic_signing: false,
path: XCODEPROJ,
team_id: TEAM_ID,
code_sign_identity: "Apple Distribution",
profile_name: "match AppStore #{DEVELOPER_APP_IDENTIFIER}.ShareExtension",
targets: ["YatteeShareExtension"]
)
build_app( build_app(
scheme: SCHEME, scheme: SCHEME,
destination: "generic/platform=iOS", destination: "generic/platform=iOS",
@@ -164,6 +182,15 @@ platform :tvos do
api_key: api_key api_key: api_key
) )
update_code_signing_settings(
use_automatic_signing: false,
path: XCODEPROJ,
team_id: TEAM_ID,
code_sign_identity: "Apple Distribution",
profile_name: "match AppStore #{DEVELOPER_APP_IDENTIFIER} tvos",
targets: [SCHEME]
)
build_app( build_app(
scheme: SCHEME, scheme: SCHEME,
destination: "generic/platform=tvOS", destination: "generic/platform=tvOS",
@@ -218,6 +245,15 @@ platform :mac do
api_key: api_key api_key: api_key
) )
update_code_signing_settings(
use_automatic_signing: false,
path: XCODEPROJ,
team_id: TEAM_ID,
code_sign_identity: "Apple Distribution",
profile_name: "match AppStore #{DEVELOPER_APP_IDENTIFIER} macos",
targets: [SCHEME]
)
build_mac_app( build_mac_app(
scheme: SCHEME, scheme: SCHEME,
output_directory: "fastlane/builds/#{version}-#{build}/macOS", output_directory: "fastlane/builds/#{version}-#{build}/macOS",
@@ -268,6 +304,15 @@ platform :mac do
api_key: api_key api_key: api_key
) )
update_code_signing_settings(
use_automatic_signing: false,
path: XCODEPROJ,
team_id: TEAM_ID,
code_sign_identity: "Developer ID Application",
profile_name: "match Direct #{DEVELOPER_APP_IDENTIFIER} macos",
targets: [SCHEME]
)
build_mac_app( build_mac_app(
scheme: SCHEME, scheme: SCHEME,
output_directory: "fastlane/builds/#{version}-#{build}/macOS", output_directory: "fastlane/builds/#{version}-#{build}/macOS",