![PyPI Now Supports iOS and Android Wheels for Mobile Python Development](https://cdn.sanity.io/images/cgdhsj6q/production/96416c872705517a6a65ad9646ce3e7caef623a0-1024x1024.webp?w=400&fit=max&auto=format)
Security News
PyPI Now Supports iOS and Android Wheels for Mobile Python Development
PyPI now supports iOS and Android wheels, making it easier for Python developers to distribute mobile packages.
fastlane-plugin-zealot
Advanced tools
上传移动应用(iPhone、Android)到 Zealot 自建 App 分发系统。
Zealot 是一个开源自部署移动应用分发平台,提供 iOS、Android SDK、fastlane 等丰富组件库,打包分发流程、上传应用竟然如此简单、解决开发人员频繁打包的烦恼 🖖
这是一个 fastlane 插件。如果要使用 fastlane-plugin-zealot
可通过下面方法添加到 fastlane 体系中:
$ fastlane add_plugin zealot
插件包含多个 actions 提供大家使用:
上传 iOS/Android App 至 Zealot 系统,插件会通过参数和 CI 系统自动获取很多辅助信息。包括但不仅限于:
+-----------------+-----------------------------------+------------------------+----------+
| zealot Options |
+-----------------+-----------------------------------+------------------------+----------+
| Key | Description | Env Var | Default |
+-----------------+-----------------------------------+------------------------+----------+
| endpoint | The endpoint of zealot | ZEALOT_ENDPOINT | |
| token | The token of user | ZEALOT_TOKEN | |
| channel_key | The key of app's channel | ZEALOT_CHANNEL_KEY | |
| file | The path of app file. Optional | ZEALOT_FILE | |
| | if you use the `gym`, `ipa`, | | |
| | `xcodebuild` or `gradle` action. | | |
| name | The name of app to display on | ZEALOT_NAME | |
| | zealot | | |
| changelog | The changelog of app | ZEALOT_CHANGELOG | |
| slug | The slug of app | ZEALOT_SLUG | |
| release_type | The release type of app | ZEALOT_RELEASE_TYPE | |
| branch | The name of git branch | ZEALOT_BRANCH | |
| git_commit | The hash of git commit | ZEALOT_GIT_COMMIT | |
| custom_fields | The key-value hash of custom | ZEALOT_CUSTOM_FIELDS | |
| | fields | | |
| password | The password of app to download | ZEALOT_PASSWORD | |
| source | The name of upload source | ZEALOT_SOURCE | fastlane |
| ci_url | The name of upload source | ZEALOT_CI_CURL | |
| timeout | Request timeout in seconds | ZEALOT_TIMEOUT | |
| hide_user_token | replase user token to *** to | ZEALOT_HIDE_USER_TOKEN | true |
| | keep secret | | |
| verify_ssl | Should verify SSL of zealot | ZEALOT_VERIFY_SSL | true |
| | service | | |
| fail_on_error | Should an error uploading app | ZEALOT_FAIL_ON_ERROR | false |
| | cause a failure | | |
+-----------------+-----------------------------------+------------------------+----------+
* = default value is dependent on the user's system
+-----------------------+---------------------------------------------+
| zealot Output Variables |
+-----------------------+---------------------------------------------+
| Key | Description |
+-----------------------+---------------------------------------------+
| ZEALOT_APP_ID | The id of app |
| ZEALOT_RELEASE_ID | The id of app's release |
| ZEALOT_RELEASE_URL | The release URL of the newly uploaded build |
| ZEALOT_INSTALL_URL | The install URL of the newly uploaded build |
| ZEALOT_QRCODE_URL | The QRCode URL of the newly uploaded build |
| ZEAALOT_ERROR_MESSAGE | The error message during upload process |
+-----------------------+---------------------------------------------+
# 自动根据上面结果来获取信息上传
lane :automatic_upload do
# iOS
gym
# Android
gradle
# 根据 CI 系统自动获取提交日志
ci_changelog
zealot(
endpoint: 'http://localhost:3000',
token: '...',
channel_key: '...'
)
# 或者通过环境变量配置参数
ENV['ZEALOT_ENDPOINT'] = 'http://localhost:3000'
ENV['ZEALOT_TOKEN'] = '...'
ENV['ZEALOT_CHANNEL_KEY'] = '...'
# 这里就无需再配置参数
zealot
end
# 上传指定文件
lane :upload_file do
zealot(
endpoint: 'http://localhost:3000',
token: '...',
channel_key: '...',
file: '.ipa_or_apk',
custom_fields: {
api_env: '测试环境'
}
)
end
上传 iOS 的 dSYM 或 Android 的 Proguard 调试文件到 Zealot
+--------------------+-----------------------------------+---------------------------+---------+
| zealot_debug_file Options |
+--------------------+-----------------------------------+---------------------------+---------+
| Key | Description | Env Var | Default |
+--------------------+-----------------------------------+---------------------------+---------+
| endpoint | The endpoint of zealot | ZEALOT_ENDPOINT | |
| token | The token of user | ZEALOT_TOKEN | |
| channel_key | Any channel key of app | ZEALOT_CHANNEL_KEY | |
| zip_file | Using given the path of zip file | DF_DSYM_ZIP_FILE | |
| | to direct upload | | |
| platform | The name of platfrom, avaiable | ZEALOT_PLATFORM | |
| | value are | | |
| | ios,mac,macos,osx,android | | |
| path | The path of debug file | ZEALOT_PATH | |
| | (iOS/macOS is archive path for | | |
| | Xcode, Android is path for app | | |
| | project) | | |
| xcode_scheme | The scheme name of app | ZEALOT_XCODE_SCHEME | |
| android_build_type | The build type of app | ZEALOT_ANDROID_BUILD_TYPE | release |
| android_flavor | The product flavor of app | ZEALOT_ANDROID_FLAVOR | |
| extra_files | A set file names | ZEALOT_EXTRA_FILES | [] |
| output_path | The output path of compressed | DF_DSYM_OUTPUT_PATH | . |
| | dSYM file | | |
| release_version | The release version of app | ZEALOT_RELEASE_VERSION | |
| | (Android needs) | | |
| build_version | The build version of app | ZEALOT_BUILD_VERSION | |
| | (Android needs) | | |
| overwrite | Overwrite output compressed file | DF_DSYM_OVERWRITE | false |
| | if it existed | | |
| timeout | Request timeout in seconds | ZEALOT_TIMEOUT | |
| verify_ssl | Should verify SSL of zealot | ZEALOT_VERIFY_SSL | true |
| | service | | |
| fail_on_error | Should an error uploading app | ZEALOT_FAIL_ON_ERROR | false |
| | cause a failure? (true/false) | | |
+--------------------+-----------------------------------+---------------------------+---------+
* = default value is dependent on the user's system
+-----------------------+-----------------------------------------+
| zealot_debug_file Output Variables |
+-----------------------+-----------------------------------------+
| Key | Description |
+-----------------------+-----------------------------------------+
| ZEAALOT_ERROR_MESSAGE | The error message during upload process |
+-----------------------+-----------------------------------------+
# 自动根据上面结果来获取信息上传
lane :automatic_upload do
# iOS
gym
# Android
gradle
# 根据 CI 系统自动获取提交日志
ci_changelog
ENV['ZEALOT_ENDPOINT'] = 'http://localhost:3000'
ENV['ZEALOT_TOKEN'] = '...'
ENV['ZEALOT_CHANNEL_KEY'] = '...'
# 自动上传 App 和调试文件
zealot
zealot_debug_file
end
同步指定 Apple 开发者账号的设备列表信息到 Zealot,主要是为了让使用者更清晰看到每个设备 udid 记录的名称,提供两种授权方式:
+---------------+-----------------------------------------------------------------------------+------------------------+---------+
| zealot_sync_devices Options |
+---------------+-----------------------------------------------------------------------------+------------------------+---------+
| Key | Description | Env Var(s) | Default |
+---------------+-----------------------------------------------------------------------------+------------------------+---------+
| endpoint | The endpoint of zealot | ZEALOT_ENDPOINT | |
| token | The token of user | ZEALOT_TOKEN | |
| username | The apple id (username) of Apple Developer Portal | ZEALOT_USERNAME | * |
| api_key_path | Path to your App Store Connect API Key JSON file | ZEALOT_API_PATH | |
| | (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key | | |
| | -json-file) | | |
| api_key | Your App Store Connect API Key information | ZEALOT_API_KEY | * |
| | (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key | | |
| | -hash-option) | | |
| team_id | The ID of your Developer Portal team if you're in multiple teams | ZEALOT_APPLE_TEAM_ID | * |
| team_name | The name of your Developer Portal team if you're in multiple teams | ZEALOT_APPLE_TEAM_NAME | * |
| platform | The platform to use (optional) | ZEALOT_APPLE_PLATFORM | ios |
| verify_ssl | Should verify SSL of zealot service | ZEALOT_VERIFY_SSL | true |
| timeout | Request timeout in seconds | ZEALOT_TIMEOUT | |
| fail_on_error | Should an error http request cause a failure? (true/false) | ZEALOT_FAIL_ON_ERROR | false |
+---------------+-----------------------------------------------------------------------------+------------------------+---------+
lane :sync do
# 使用 Apple API Key 方式授权,无需密码和二次验证
zealot_sync_devices(
endpoint: "...",
token: "...",
api_key_path: "/path/to/your/api_key_json_file",
team_id: "..."
)
# 使用传统的密码授权
zealot_sync_devices(
endpoint: "...",
token: "...",
username: "...",
team_id: "..."
)
end
检查应用版本是否已经上传,避免重复打包、上传已经上传的应用,目前支持两种方式检查:
参数和各平台实际值对应关系
参数 | iOS | Android |
---|---|---|
bundle_id | bundle_id | package_name |
release_version | CFBundleShortVersionString | versionName |
build_version | CFBundleVersion | versionCode |
+-----------------+---------------------------------+------------------------+---------+
| zealot_version_check Options |
+-----------------+---------------------------------+------------------------+---------+
| Key | Description | Env Var | Default |
+-----------------+---------------------------------+------------------------+---------+
| endpoint | The endpoint of zealot | ZEALOT_ENDPOINT | |
| token | The token of user | ZEALOT_TOKEN | |
| channel_key | The key of app's channel | ZEALOT_CHANNEL_KEY | |
| bundle_id | The bundle id(package name) of | ZEALOT_BUNDLE_ID | |
| | app | | |
| release_version | The release version of app | ZEALOT_RELEASE_VERSION | |
| build_version | The build version of app | ZEALOT_BUILD_VERSION | |
| git_commit | The latest git commit of app | ZEALOT_GIT_COMMIT | |
| verify_ssl | Should verify SSL of zealot | ZEALOT_VERIFY_SSL | true |
| | service | | |
| hide_user_token | replase user token to *** to | ZEALOT_HIDE_USER_TOKEN | true |
| | keep secret | | |
| fail_on_error | Should an error http request | ZEALOT_FAIL_ON_ERROR | false |
| | cause a failure? (true/false) | | |
+-----------------+---------------------------------+------------------------+---------+
* = default value is dependent on the user's system
+------------------------+---------------------------------------------+
| zealot_version_check Output Variables |
+------------------------+---------------------------------------------+
| Key | Description |
+------------------------+---------------------------------------------+
| ZEALOT_VERSION_EXISTED | The result of app verison existed (Boolean) |
| ZEAALOT_ERROR_MESSAGE | The error message during upload process |
+------------------------+---------------------------------------------+
Access the output values using `lane_context[SharedValues::VARIABLE_NAME]`
+-----------------------------------+
| zealot_version_check Return Value |
+-----------------------------------+
| Fastlane::Boolean |
检查范例 Fastfile
文件 来看看如何使用插件吧
使用本插件过程中遇到的任何问题和反馈请提交问题。
FAQs
Unknown package
We found that fastlane-plugin-zealot demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
PyPI now supports iOS and Android wheels, making it easier for Python developers to distribute mobile packages.
Security News
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.