دوستان سلام.
من این اکشن رو نوشتم برای بیلد کردن اپ اندرویدی و ios:
name: Build and Release Flutter App
permissions:
contents: write
packages: write
on:
release:
types: [published]
workflow_dispatch:
jobs:
build-and-attach:
name: Build APK & IPA and Attach to Release
runs-on: macos-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up Dart SDK
uses: dart-lang/setup-dart@v1
with:
sdk: "3.7.2"
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: "3.29.3"
channel: "stable"
- name: Install dependencies
run: flutter pub get
- name: Build Android APK
run: flutter build apk --release
- name: Update iOS bundle identifier
run: |
echo "Setting iOS bundle ID to ir.shahriaarrr.tomodoro"
/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier ir.shahriaarrr.tomodoro" ios/Runner/Info.plist
sed -i '' 's/PRODUCT_BUNDLE_IDENTIFIER = .*;/PRODUCT_BUNDLE_IDENTIFIER = ir.shahriaarrr.tomodoro;/g' ios/Runner.xcodeproj/project.pbxproj
- name: Install the Apple certificate and provisioning profile
env:
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
P12_PASSWORD: ${{ secrets.P12_PASSWORD }}
BUILD_PROVISION_PROFILE_BASE64: ${{ secrets.BUILD_PROVISION_PROFILE_BASE64 }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
run: |
CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12
PROVISION_PROFILE_PATH=$RUNNER_TEMP/build_provisioning_profile.mobileprovision
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
echo "$BUILD_CERTIFICATE_BASE64" | base64 --decode > "$CERTIFICATE_PATH"
echo "$BUILD_PROVISION_PROFILE_BASE64" | base64 --decode > "$PROVISION_PROFILE_PATH"
security create-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH"
security set-keychain-settings -lut 21600 "$KEYCHAIN_PATH"
security unlock-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH"
security import "$CERTIFICATE_PATH" -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k "$KEYCHAIN_PATH"
security set-key-partition-list -S apple-tool:,apple: -k "$KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH"
security list-keychain -d user -s "$KEYCHAIN_PATH"
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
cp "$PROVISION_PROFILE_PATH" ~/Library/MobileDevice/Provisioning\ Profiles
- name: Build iOS IPA
run: flutter build ipa --export-method ad-hoc
- name: Attach APK & IPA to GitHub Release
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ github.ref_name }}
files: |
build/app/outputs/flutter-apk/app-release.apk
build/ios/ipa/*.ipa
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
همه اکشن هاش درست کار میکنن ولی وقتی میرسه به مرحله install the apple certificate این ارور رو میده:
Run CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12
security: SecKeychainItemImport: One or more parameters passed to a function were not valid.
Error: Process completed with exit code 1.
کسی راهکاری داره چجوری این اکشن رو درست کنم بعد ۳۰ بار کامیت زدن؟