Node version 22
Build & Push Docker Images / test-backend (push) Successful in 20s
Build & Push Docker Images / test-frontend (push) Successful in 21s
Build & Push Docker Images / build-backend (push) Successful in 16s
Build & Push Docker Images / build-frontend (push) Successful in 17s

This commit is contained in:
Antoni Nuñez Romeu
2026-06-29 13:50:27 +02:00
parent 17500e0567
commit 67ba352b1a
2 changed files with 38 additions and 22 deletions
+38 -20
View File
@@ -28,7 +28,7 @@ jobs:
- uses: actions/setup-node@v4 - uses: actions/setup-node@v4
with: with:
node-version: "20" node-version: "22"
cache: "npm" cache: "npm"
- name: Install backend dependencies & test - name: Install backend dependencies & test
@@ -43,10 +43,8 @@ jobs:
runs-on: macos-14 runs-on: macos-14
env: env:
SCHEME: App SCHEME: App
PROJECT: ios/App/App.xcodeproj
WORKSPACE: ios/App/App.xcworkspace WORKSPACE: ios/App/App.xcworkspace
ARCHIVE_PATH: build/App.xcarchive ARCHIVE_PATH: build/App.xcarchive
IPA_PATH: build/App.ipa
EXPORT_OPTIONS: scripts/export-options.plist EXPORT_OPTIONS: scripts/export-options.plist
steps: steps:
@@ -54,7 +52,7 @@ jobs:
- uses: actions/setup-node@v4 - uses: actions/setup-node@v4
with: with:
node-version: "20" node-version: "22"
cache: "npm" cache: "npm"
- name: Install root dependencies - name: Install root dependencies
@@ -92,6 +90,12 @@ jobs:
if: startsWith(github.ref, 'refs/tags/ios-v') if: startsWith(github.ref, 'refs/tags/ios-v')
run: | run: |
TAG_VERSION="${GITHUB_REF#refs/tags/ios-v}" TAG_VERSION="${GITHUB_REF#refs/tags/ios-v}"
if ! echo "$TAG_VERSION" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+$'; then
echo "::error::Invalid tag format '$TAG_VERSION'. Expected semver: X.Y.Z"
exit 1
fi
MAJOR=$(echo "$TAG_VERSION" | cut -d. -f1) MAJOR=$(echo "$TAG_VERSION" | cut -d. -f1)
MINOR=$(echo "$TAG_VERSION" | cut -d. -f2) MINOR=$(echo "$TAG_VERSION" | cut -d. -f2)
PATCH=$(echo "$TAG_VERSION" | cut -d. -f3) PATCH=$(echo "$TAG_VERSION" | cut -d. -f3)
@@ -100,11 +104,12 @@ jobs:
echo "Setting MARKETING_VERSION=$MAJOR.$MINOR.$PATCH" echo "Setting MARKETING_VERSION=$MAJOR.$MINOR.$PATCH"
echo "Setting CURRENT_PROJECT_VERSION=$BUILD" echo "Setting CURRENT_PROJECT_VERSION=$BUILD"
sed -i '' "s/MARKETING_VERSION = .*;/MARKETING_VERSION = $MAJOR.$MINOR.$PATCH;/" ios/App/App.xcodeproj/project.pbxproj sed -i '' "s/MARKETING_VERSION = [^;]*;/MARKETING_VERSION = $MAJOR.$MINOR.$PATCH;/" ios/App/App.xcodeproj/project.pbxproj
sed -i '' "s/CURRENT_PROJECT_VERSION = .*;/CURRENT_PROJECT_VERSION = $BUILD;/" ios/App/App.xcodeproj/project.pbxproj sed -i '' "s/CURRENT_PROJECT_VERSION = [^;]*;/CURRENT_PROJECT_VERSION = $BUILD;/" ios/App/App.xcodeproj/project.pbxproj
- name: Build Xcode archive - name: Build Xcode archive
run: | run: |
set -o pipefail
xcodebuild archive \ xcodebuild archive \
-workspace "$WORKSPACE" \ -workspace "$WORKSPACE" \
-scheme "$SCHEME" \ -scheme "$SCHEME" \
@@ -115,19 +120,20 @@ jobs:
CODE_SIGN_STYLE=Manual \ CODE_SIGN_STYLE=Manual \
DEVELOPMENT_TEAM="${{ secrets.IOS_TEAM_ID }}" \ DEVELOPMENT_TEAM="${{ secrets.IOS_TEAM_ID }}" \
PROVISIONING_PROFILE_SPECIFIER="${{ secrets.IOS_PROVISION_PROFILE_NAME }}" \ PROVISIONING_PROFILE_SPECIFIER="${{ secrets.IOS_PROVISION_PROFILE_NAME }}" \
| xcpretty --color || true 2>&1 | xcpretty --color
- name: Export IPA - name: Export IPA
run: | run: |
plutil -replace teamID -string "${{ secrets.IOS_TEAM_ID }}" "$EXPORT_OPTIONS" 2>/dev/null || true plutil -replace teamID -string "${{ secrets.IOS_TEAM_ID }}" "$EXPORT_OPTIONS"
plutil -replace provisioningProfiles.net.hacecalor.farmafinder -string "${{ secrets.IOS_PROVISION_PROFILE_NAME }}" "$EXPORT_OPTIONS" 2>/dev/null || true plutil -replace provisioningProfiles.net.hacecalor.farmafinder -string "${{ secrets.IOS_PROVISION_PROFILE_NAME }}" "$EXPORT_OPTIONS"
set -o pipefail
xcodebuild -exportArchive \ xcodebuild -exportArchive \
-archivePath "$ARCHIVE_PATH" \ -archivePath "$ARCHIVE_PATH" \
-exportOptionsPlist "$EXPORT_OPTIONS" \ -exportOptionsPlist "$EXPORT_OPTIONS" \
-exportPath build \ -exportPath build \
-allowProvisioningUpdates \ -allowProvisioningUpdates \
| xcpretty --color || true 2>&1 | xcpretty --color
- name: Upload artifact (IPA) - name: Upload artifact (IPA)
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
@@ -140,19 +146,31 @@ jobs:
if: > if: >
(github.event_name == 'push' && startsWith(github.ref, 'refs/tags/ios-v')) || (github.event_name == 'push' && startsWith(github.ref, 'refs/tags/ios-v')) ||
(github.event_name == 'workflow_dispatch' && inputs.upload_to_testflight == 'true') (github.event_name == 'workflow_dispatch' && inputs.upload_to_testflight == 'true')
run: |
xcrun altool \
--upload-app \
--type ios \
--file "$IPA_PATH" \
--apiKey "${{ secrets.APP_STORE_API_KEY_ID }}" \
--apiIssuer "${{ secrets.APP_STORE_API_ISSUER_ID }}"
env: env:
API_PRIVATE_KEY: ${{ secrets.APP_STORE_API_PRIVATE_KEY }} APP_STORE_API_KEY_ID: ${{ secrets.APP_STORE_API_KEY_ID }}
APP_STORE_API_ISSUER_ID: ${{ secrets.APP_STORE_API_ISSUER_ID }}
run: |
IPA_PATH=$(find build -name "*.ipa" -maxdepth 1 | head -1)
if [ -z "$IPA_PATH" ]; then
echo "::error::No IPA found in build/"
exit 1
fi
API_PRIVATE_KEY_PATH="$RUNNER_TEMP/app_store_api_key.p8"
echo "${{ secrets.APP_STORE_API_PRIVATE_KEY }}" > "$API_PRIVATE_KEY_PATH"
xcrun notarytool submit "$IPA_PATH" \
--key-id "$APP_STORE_API_KEY_ID" \
--issuer "$APP_STORE_API_ISSUER_ID" \
--key "$API_PRIVATE_KEY_PATH" \
--wait
rm -f "$API_PRIVATE_KEY_PATH"
- name: Summary - name: Summary
run: | run: |
if [ -f "$IPA_PATH" ]; then IPA_PATH=$(find build -name "*.ipa" -maxdepth 1 | head -1)
if [ -n "$IPA_PATH" ]; then
IPA_SIZE=$(du -h "$IPA_PATH" | cut -f1) IPA_SIZE=$(du -h "$IPA_PATH" | cut -f1)
echo "### iOS Build Summary" >> $GITHUB_STEP_SUMMARY echo "### iOS Build Summary" >> $GITHUB_STEP_SUMMARY
echo "| Item | Value |" >> $GITHUB_STEP_SUMMARY echo "| Item | Value |" >> $GITHUB_STEP_SUMMARY
@@ -161,6 +179,6 @@ jobs:
echo "| Tag | ${GITHUB_REF#refs/tags/} |" >> $GITHUB_STEP_SUMMARY echo "| Tag | ${GITHUB_REF#refs/tags/} |" >> $GITHUB_STEP_SUMMARY
echo "| Build # | ${{ github.run_number }} |" >> $GITHUB_STEP_SUMMARY echo "| Build # | ${{ github.run_number }} |" >> $GITHUB_STEP_SUMMARY
else else
echo "::error::IPA not found at $IPA_PATH" echo "::error::IPA not found in build/"
exit 1 exit 1
fi fi
-2
View File
@@ -8,8 +8,6 @@
<string>YOUR_TEAM_ID</string> <string>YOUR_TEAM_ID</string>
<key>uploadSymbols</key> <key>uploadSymbols</key>
<true/> <true/>
<key>uploadBitcode</key>
<false/>
<key>signingStyle</key> <key>signingStyle</key>
<string>manual</string> <string>manual</string>
<key>provisioningProfiles</key> <key>provisioningProfiles</key>