mirror of
https://github.com/expo/turtle.git
synced 2026-11-14 19:12:55 -10:00
Compare commits
86
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7a5b402bca | ||
|
|
63d3e82cd7 | ||
|
|
b2f8fdd342 | ||
|
|
4d9b3bdee9 | ||
|
|
15c165be26 | ||
|
|
f63e34ace3 | ||
|
|
e4ec82d1db | ||
|
|
941a605591 | ||
|
|
8b9ad9846b | ||
|
|
d488177daa | ||
|
|
1ef3564adf | ||
|
|
1e29177bd0 | ||
|
|
aa1605a5db | ||
|
|
2f628efda3 | ||
|
|
7f95b533ad | ||
|
|
478d9ebe2b | ||
|
|
0d1366b180 | ||
|
|
8615f2eb9b | ||
|
|
a3b7867f10 | ||
|
|
656c53dde6 | ||
|
|
e1fed149be | ||
|
|
752b767800 | ||
|
|
4b2ff4fced | ||
|
|
a6501db230 | ||
|
|
73e249854a | ||
|
|
1fb5d448fb | ||
|
|
f1e1ef782b | ||
|
|
81c905ed95 | ||
|
|
ecdc8486fe | ||
|
|
6adaaf5dd1 | ||
|
|
57c7dbfb43 | ||
|
|
cee42b1d6c | ||
|
|
69905bd886 | ||
|
|
37a8cff615 | ||
|
|
c8992aa2f4 | ||
|
|
38e05bc20a | ||
|
|
4a8e14fa8b | ||
|
|
77c7fce666 | ||
|
|
7f6faecbd1 | ||
|
|
718e3e9ab6 | ||
|
|
2a120fa22c | ||
|
|
1b6e482be5 | ||
|
|
5072a98b50 | ||
|
|
0584fd20fb | ||
|
|
701d6afcf7 | ||
|
|
87515eae23 | ||
|
|
27de1abc09 | ||
|
|
f5fb3ae4b6 | ||
|
|
9a4f97c4ed | ||
|
|
1bbcd8f0cc | ||
|
|
415f0dd2aa | ||
|
|
86766ddfef | ||
|
|
e976e86607 | ||
|
|
6399d64033 | ||
|
|
3d8dc3cab8 | ||
|
|
ae1a6e8820 | ||
|
|
52eb27c7b8 | ||
|
|
4b9d90544a | ||
|
|
7871bb039a | ||
|
|
507102dfac | ||
|
|
d6dd722d8b | ||
|
|
b2aed931b5 | ||
|
|
4e6ffc1235 | ||
|
|
811cc433ca | ||
|
|
52cbd973b3 | ||
|
|
397bd15203 | ||
|
|
1f6f6f7caf | ||
|
|
0e7b0633d5 | ||
|
|
2b890be48e | ||
|
|
fac39ba644 | ||
|
|
a28f407f03 | ||
|
|
eee18d2f18 | ||
|
|
6457adba57 | ||
|
|
6ad71bd512 | ||
|
|
0ee897531f | ||
|
|
8c46d1c8bf | ||
|
|
d87873637b | ||
|
|
d6496996b6 | ||
|
|
2df39da2e6 | ||
|
|
6925e290cc | ||
|
|
9e2557b6f4 | ||
|
|
d743f8313e | ||
|
|
7df3f70e9c | ||
|
|
34cf811fd7 | ||
|
|
1d825e6310 | ||
|
|
dd6c806e0f |
No files matched your search
@@ -115,7 +115,7 @@ commands:
|
|||||||
default: ios
|
default: ios
|
||||||
sdk_version:
|
sdk_version:
|
||||||
type: string
|
type: string
|
||||||
default: sdk32
|
default: sdk36
|
||||||
steps:
|
steps:
|
||||||
- restore_cache:
|
- restore_cache:
|
||||||
key: "workingdir-v1-<< parameters.platform >>-<< parameters.sdk_version >>"
|
key: "workingdir-v1-<< parameters.platform >>-<< parameters.sdk_version >>"
|
||||||
@@ -130,7 +130,7 @@ commands:
|
|||||||
default: ios
|
default: ios
|
||||||
sdk_version:
|
sdk_version:
|
||||||
type: string
|
type: string
|
||||||
default: sdk32
|
default: sdk36
|
||||||
steps:
|
steps:
|
||||||
- save_cache:
|
- save_cache:
|
||||||
key: "workingdir-v1-<< parameters.platform >>-<< parameters.sdk_version >>"
|
key: "workingdir-v1-<< parameters.platform >>-<< parameters.sdk_version >>"
|
||||||
@@ -186,14 +186,14 @@ jobs:
|
|||||||
- run: yarn
|
- run: yarn
|
||||||
- save_yarn_cache
|
- save_yarn_cache
|
||||||
- restore_workingdir_cache:
|
- restore_workingdir_cache:
|
||||||
sdk_version: sdk32
|
sdk_version: sdk35
|
||||||
platform: ios
|
platform: ios
|
||||||
- run:
|
- run:
|
||||||
name: Run iOS smoke tests
|
name: Run iOS smoke tests
|
||||||
command: ./scripts/tests/runIOSSmokeTestsCI.sh
|
command: ./scripts/tests/runIOSSmokeTestsCI.sh
|
||||||
- save_workingdir_cache:
|
- save_workingdir_cache:
|
||||||
workingdir: /Users/distiller/project/workingdir
|
workingdir: /Users/distiller/project/workingdir
|
||||||
sdk_version: sdk32
|
sdk_version: sdk35
|
||||||
platform: ios
|
platform: ios
|
||||||
|
|
||||||
android_smoke_tests:
|
android_smoke_tests:
|
||||||
@@ -205,11 +205,11 @@ jobs:
|
|||||||
- run: yarn
|
- run: yarn
|
||||||
- save_yarn_cache
|
- save_yarn_cache
|
||||||
- restore_workingdir_cache:
|
- restore_workingdir_cache:
|
||||||
sdk_version: sdk32
|
sdk_version: sdk36
|
||||||
platform: android
|
platform: android
|
||||||
- run:
|
- run:
|
||||||
name: Fetch Android shell app
|
name: Fetch Android shell app
|
||||||
command: SDK_VERSION=sdk32 ./scripts/android/fetchRemoteAndroidTarball.sh
|
command: SDK_VERSION=sdk36 ./scripts/android/fetchRemoteAndroidTarball.sh
|
||||||
- run:
|
- run:
|
||||||
name: Run Android smoke tests
|
name: Run Android smoke tests
|
||||||
command: |
|
command: |
|
||||||
@@ -217,7 +217,7 @@ jobs:
|
|||||||
--run "./scripts/tests/runAndroidSmokeTestsCI.sh"
|
--run "./scripts/tests/runAndroidSmokeTestsCI.sh"
|
||||||
- save_workingdir_cache:
|
- save_workingdir_cache:
|
||||||
workingdir: ~/turtle/workingdir
|
workingdir: ~/turtle/workingdir
|
||||||
sdk_version: sdk32
|
sdk_version: sdk36
|
||||||
platform: android
|
platform: android
|
||||||
|
|
||||||
android_staging_deploy:
|
android_staging_deploy:
|
||||||
|
|||||||
+2
-2
@@ -1,5 +1,3 @@
|
|||||||
!/src/node_modules
|
|
||||||
|
|
||||||
node_modules
|
node_modules
|
||||||
yarn-error.log
|
yarn-error.log
|
||||||
google-cloud-credentials.json
|
google-cloud-credentials.json
|
||||||
@@ -7,6 +5,8 @@ google-cloud-credentials.json
|
|||||||
/build/
|
/build/
|
||||||
/workingdir/*
|
/workingdir/*
|
||||||
/artifacts/*
|
/artifacts/*
|
||||||
|
.history
|
||||||
|
|
||||||
shell.apk
|
shell.apk
|
||||||
.secrets*
|
.secrets*
|
||||||
|
|
||||||
|
|||||||
@@ -6,3 +6,4 @@ SENTRY_DSN=""
|
|||||||
ENVIRONMENT="development"
|
ENVIRONMENT="development"
|
||||||
REDIS_URL="redis://localhost:6379/0"
|
REDIS_URL="redis://localhost:6379/0"
|
||||||
REDIS_CONFIG_URL="redis://localhost:6379/0"
|
REDIS_CONFIG_URL="redis://localhost:6379/0"
|
||||||
|
TURTLE_SDK_VERSIONS_SECRET_TOKEN="xeiw7yigha<a_r5aich!oW9Ik2eish8the9Na6Jae-ghoo5ua/t8nu5AeheiTew4"
|
||||||
+292
-4
@@ -1,4 +1,5 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
@@ -6,248 +7,535 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
## [0.12.1] - 2019-09-20
|
### Added
|
||||||
|
|
||||||
|
- Added iOS shell app for SDK 37.
|
||||||
|
- Added Android shell app for SDK 37.
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
|
- Updated iOS client shell app to support SDK 37.
|
||||||
|
- Replace `/` with `__` in the artifact filename to fix a strange bug with selecting APK file in Android Studio.
|
||||||
|
- Print currently using Java version if it's not 8.
|
||||||
|
|
||||||
|
### Removed
|
||||||
|
|
||||||
|
- Dropped support for SDK 33.
|
||||||
|
|
||||||
|
## [0.13.10] - 2020-03-09
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Added validation for `--public-url`.
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Changed the way of installing NDK - it's installed with `sdkmanager` now.
|
||||||
|
- Upgraded NDK to 17.2.4988734.
|
||||||
|
- Upgraded Node.js version to 12.16.1.
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- A bug where the `platform` field in logs wasn't set correctly when using a shortcut command.
|
||||||
|
- Removed all remaining instances of `UIWebView` in iOS app builds.
|
||||||
|
|
||||||
|
### Removed
|
||||||
|
|
||||||
|
- Dropped support for Node.js versions older than 10.
|
||||||
|
- Dropped support for building Expo SDK 31 and 32 apps.
|
||||||
|
|
||||||
|
## [0.13.9] - 2020-02-13
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Fixed Notifications.getDevicePushTokenAsync() erroring occasionally on iOS SDK 36.
|
||||||
|
|
||||||
|
## [0.13.8] - 2020-01-27
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Fixed `react-native-maps` native module not being properly initialized (https://github.com/expo/expo/pull/6844)
|
||||||
|
- Fixed Android standalone apps crashing on startup (https://github.com/expo/expo/pull/6825)
|
||||||
|
|
||||||
|
## [0.13.7] - 2020-01-15
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Bumped `traveling-fastlane` to 1.11.4 to update CA certs
|
||||||
|
|
||||||
|
## [0.13.6] - 2019-12-17
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Fixed issue with missing request handler for assets-library urls.
|
||||||
|
|
||||||
|
## [0.13.4] - 2019-12-13
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Support for building iOS apps with a wildcard provisioning profile.
|
||||||
|
|
||||||
|
## [0.13.3] - 2019-12-12
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Removed private API usage from iOS SDK 36 tarball
|
||||||
|
|
||||||
|
## [0.13.2] - 2019-12-10
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Fixed Android App Bundle builds
|
||||||
|
- Fixed issue with Root View Background Color and AppLoading on Android SDK 36 builds
|
||||||
|
|
||||||
|
## [0.13.1] - 2019-12-09
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Fixed Android shell app for SDK 36
|
||||||
|
|
||||||
|
## [0.13.0] - 2019-12-09
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Added iOS and Android shell apps for SDK 36
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Updated iOS client shell app to support SDK 36
|
||||||
|
|
||||||
|
## [0.12.12] - 2019-11-22
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- A bug that caused `expo.owner` value not to be used if defined.
|
||||||
|
|
||||||
|
## [0.12.11] - 2019-11-20
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Bumped `traveling-fastlane` to 1.11.0
|
||||||
|
|
||||||
|
## [0.12.10] - 2019-11-15
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Add `shellAppSdkVersion` param to `IOSShellAppBuilder` so entitlement keys get properly added in (https://github.com/expo/turtle/pull/162)
|
||||||
|
|
||||||
|
## [0.12.9] - 2019-11-14
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Support for customizing Facebook SDK behavior at buildtime (autoinitialization, logging app events, logging Advertiser ID) (https://github.com/expo/expo/pull/5924)
|
||||||
|
|
||||||
|
## [0.12.8] - 2019-10-29
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Updated Android shell app for SDK 35 to fix `Linking.openUrl` not opening app if it's already foregrounded (https://github.com/expo/expo/issues/6058)
|
||||||
|
- Enforce Java 8 when using turtle-cli.
|
||||||
|
|
||||||
|
## [0.12.7] - 2019-10-25
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Updated Android shell app for SDK 35 to fix occasional crash in background due to GCM registration service (https://github.com/expo/expo/issues/4207)
|
||||||
|
|
||||||
|
## [0.12.5] - 2019-10-18
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Updated iOS shell app for SDK 35 to fix crash when calling `WebBrowser.dismissBrowser` on iOS 13 (https://github.com/expo/expo/issues/5742)
|
||||||
|
|
||||||
|
## [0.12.4] - 2019-10-11
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Updated Android shell app for SDK 35 to fix occasional crash on launch (https://github.com/expo/expo/issues/5917)
|
||||||
|
|
||||||
|
## [0.12.3] - 2019-10-09
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Updated iOS client shell app for SDK 35 to fix it from crashing on startup due to having an incomplete GoogleService-Info.plist file.
|
||||||
|
|
||||||
|
## [0.12.2] - 2019-09-27
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Updated Android shell app for SDK 35 to fix crash on Android <=7 due to battery module
|
||||||
|
|
||||||
|
## [0.12.1] - 2019-09-20
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
- Updated iOS shell apps for SDK 33 and 34 to fix iOS 13 issues with fishhook, notification tokens, and ShareSheet
|
- Updated iOS shell apps for SDK 33 and 34 to fix iOS 13 issues with fishhook, notification tokens, and ShareSheet
|
||||||
- Updated iOS shell app for SDK 35 with a minor fix
|
- Updated iOS shell app for SDK 35 with a minor fix
|
||||||
|
|
||||||
## [0.12.0] - 2019-09-19
|
## [0.12.0] - 2019-09-19
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- Support for SDK 35 iOS and Android builds.
|
- Support for SDK 35 iOS and Android builds.
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
|
|
||||||
- Support for SDK 27-30 iOS and Android builds.
|
- Support for SDK 27-30 iOS and Android builds.
|
||||||
|
|
||||||
## [0.11.3] - 2019-09-19
|
## [0.11.3] - 2019-09-19
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Updated SDK34 Android shell app with `expo-branch` fixes.
|
- Updated SDK34 Android shell app with `expo-branch` fixes.
|
||||||
|
|
||||||
## [0.11.2] - 2019-08-21
|
## [0.11.2] - 2019-08-21
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- Support for GoogleService-Info.plist (>=34.0.0).
|
- Support for GoogleService-Info.plist (>=34.0.0).
|
||||||
|
|
||||||
## [0.11.1] - 2019-08-08
|
## [0.11.1] - 2019-08-08
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Updated iOS client shell app with the latest fixes (up to 2.12.3).
|
- Updated iOS client shell app with the latest fixes (up to 2.12.3).
|
||||||
|
|
||||||
## [0.11.0] - 2019-08-07
|
## [0.11.0] - 2019-08-07
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Enabled back optional modules support, but only for specific unimodules.
|
- Enabled back optional modules support, but only for specific unimodules.
|
||||||
- Updated SDK34 Android shell app with the latest fixes (up to 2.12.2).
|
- Updated SDK34 Android shell app with the latest fixes (up to 2.12.2).
|
||||||
- Updated SDK34 iOS shell app with the latest fixes (up to 2.12.3).
|
- Updated SDK34 iOS shell app with the latest fixes (up to 2.12.3).
|
||||||
|
|
||||||
## [0.10.0] - 2019-08-01
|
## [0.10.0] - 2019-08-01
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Fully disabled optional modules on Android for now.
|
- Fully disabled optional modules on Android for now.
|
||||||
- Updated iOS shell apps for SDK 33 and 34 to fix scoped permissions issue.
|
- Updated iOS shell apps for SDK 33 and 34 to fix scoped permissions issue.
|
||||||
- Updated Android shell app for SDK 34 to work after disabling optional modules.
|
- Updated Android shell app for SDK 34 to work after disabling optional modules.
|
||||||
|
|
||||||
## [0.9.1] - 2019-07-29
|
## [0.9.1] - 2019-07-29
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- `release-it` version to `12.3.4`.
|
- `release-it` version to `12.3.4`.
|
||||||
|
|
||||||
## [0.9.0] - 2019-07-29
|
## [0.9.0] - 2019-07-29
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- Android, iOS standalone shell apps and iOS Expo client shell app for SDK34.
|
- Android, iOS standalone shell apps and iOS Expo client shell app for SDK34.
|
||||||
- Xcode license check for iOS builds.
|
- Xcode license check for iOS builds.
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- Setting `Constants.nativeAppVersion` for Android standalone builds (actually fixed in [expo/expo-cli#878](https://github.com/expo/expo-cli/pull/878)).
|
- Setting `Constants.nativeAppVersion` for Android standalone builds (actually fixed in [expo/expo-cli#878](https://github.com/expo/expo-cli/pull/878)).
|
||||||
- Passing `expo.android.config` object from `app.json` to the Android builder.
|
- Passing `expo.android.config` object from `app.json` to the Android builder.
|
||||||
- Fixed crash on launch for iOS standalone apps on iOS 13 (all SDK versions).
|
- Fixed crash on launch for iOS standalone apps on iOS 13 (all SDK versions).
|
||||||
- Fixed occasional issue on iOS (SDK 33) where the JS bundle cannot be found ("No cache exists for this resource: shell-app.bundle") and a reload would be required.
|
- Fixed occasional issue on iOS (SDK 33) where the JS bundle cannot be found ("No cache exists for this resource: shell-app.bundle") and a reload would be required.
|
||||||
|
|
||||||
## [0.8.11] - 2019-07-16
|
## [0.8.11] - 2019-07-16
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- Android debug builds.
|
- Android debug builds.
|
||||||
|
|
||||||
## [0.8.10] - 2019-07-16
|
## [0.8.10] - 2019-07-16
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- iOS simulator builds.
|
- iOS simulator builds.
|
||||||
|
|
||||||
## [0.8.9] - 2019-07-15
|
## [0.8.9] - 2019-07-15
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- User authentication.
|
- User authentication.
|
||||||
|
|
||||||
## [0.8.8] - 2019-07-11
|
## [0.8.8] - 2019-07-11
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- LocalAuthentication module on iOS (fixes [expo/expo#663](https://github.com/expo/expo/issues/663)).
|
- LocalAuthentication module on iOS (fixes [expo/expo#663](https://github.com/expo/expo/issues/663)).
|
||||||
|
|
||||||
## [0.8.7] - 2019-07-05
|
## [0.8.7] - 2019-07-05
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- Adhoc Builds: use provisioningProfileId if specified.
|
- Adhoc Builds: use provisioningProfileId if specified.
|
||||||
- Registering supported SDK versions in Redis.
|
- Registering supported SDK versions in Redis.
|
||||||
- Support for 64 bit builds in SDK33.
|
- Support for 64 bit builds in SDK33.
|
||||||
|
|
||||||
## [0.8.6] - 2019-06-25
|
## [0.8.6] - 2019-06-25
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- Added support for Android build modes: debug or release.
|
- Added support for Android build modes: debug or release.
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- Upgrading the shell app for a given SDK version when the previous version is already downloaded (bug in `turtle-cli`).
|
- Upgrading the shell app for a given SDK version when the previous version is already downloaded (bug in `turtle-cli`).
|
||||||
- Updated Android shell app for SDK33 to include `[email protected]` which fixes crashes on Android 9.0 when showing some Lottie animations.
|
- Updated Android shell app for SDK33 to include `[email protected]` which fixes crashes on Android 9.0 when showing some Lottie animations.
|
||||||
- Schema for `buildModes`.
|
- Schema for `buildModes`.
|
||||||
- Updated @expo/xdl to 55.0.7 (fixed reading from binary plist).
|
- Updated @expo/xdl to 55.0.7 (fixed reading from binary plist).
|
||||||
|
|
||||||
## [0.8.4] - 2019-06-13
|
## [0.8.4] - 2019-06-13
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Upgraded `sharp` from `0.21.3` to `0.22.1`.
|
- Upgraded `sharp` from `0.21.3` to `0.22.1`.
|
||||||
- `gulp-cli` is no longer required to build an app with `turtle-cli`.
|
- `gulp-cli` is no longer required to build an app with `turtle-cli`.
|
||||||
|
|
||||||
## [0.8.3] - 2019-06-13
|
## [0.8.3] - 2019-06-13
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- Running Android Turtle process with `supervisor` (pod is restarted if there were 5 failures in the last 10 minutes).
|
- Running Android Turtle process with `supervisor` (pod is restarted if there were 5 failures in the last 10 minutes).
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- `turtle-cli` is now fetching the app manifest before running the build.
|
- `turtle-cli` is now fetching the app manifest before running the build.
|
||||||
|
|
||||||
## [0.8.2] - 2019-06-11
|
## [0.8.2] - 2019-06-11
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Updated Android shell app for SDK33 to remove `expo-face-detector` and `expo-payments-stripe` from standalone builds.
|
- Updated Android shell app for SDK33 to remove `expo-face-detector` and `expo-payments-stripe` from standalone builds.
|
||||||
- Updated Android shell app for SDK33 to get rid of `node_modules` for `tools-public`.
|
- Updated Android shell app for SDK33 to get rid of `node_modules` for `tools-public`.
|
||||||
- From now on, `turtle-cli` installs dependencies for `tools-public` in shell apps for SDK versions < 33.
|
- From now on, `turtle-cli` installs dependencies for `tools-public` in shell apps for SDK versions < 33.
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- Android builds with turtle-cli by installing all unmodules if `dependencies` is empty.
|
- Android builds with turtle-cli by installing all unmodules if `dependencies` is empty.
|
||||||
|
|
||||||
## [0.8.1] - 2019-06-10
|
## [0.8.1] - 2019-06-10
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Add expo dependencies when resolving unimodules.
|
- Add expo dependencies when resolving unimodules.
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- Support for Android tarballs without `universe-package.json`.
|
- Support for Android tarballs without `universe-package.json`.
|
||||||
|
|
||||||
## [0.8.0] - 2019-06-07
|
## [0.8.0] - 2019-06-07
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- Turtle CLI logo to the project (created by [@zularizal](https://github.com/zularizal))!
|
- Turtle CLI logo to the project (created by [@zularizal](https://github.com/zularizal))!
|
||||||
- Shell apps for SDK 33.
|
- Shell apps for SDK 33.
|
||||||
- Support for Android App Bundles (App bundles are built by default, use `-t apk` to build apk).
|
- Support for Android App Bundles (App bundles are built by default, use `-t apk` to build apk).
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Updated Android shell app for SDK 32 to fix AppAuth issue (https://github.com/expo/expo/pull/4115) and to fix a newer than expected JSC version.
|
- Updated Android shell app for SDK 32 to fix AppAuth issue (https://github.com/expo/expo/pull/4115) and to fix a newer than expected JSC version.
|
||||||
- Default value for build timeout to 15 minutes.
|
- Default value for build timeout to 15 minutes.
|
||||||
- Added filtering of logs (strips out download progress) when downloading SDK tools.
|
- Added filtering of logs (strips out download progress) when downloading SDK tools.
|
||||||
- `xdl` -> `@expo/xdl`, updated `@expo/xdl`.
|
- `xdl` -> `@expo/xdl`, updated `@expo/xdl`.
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- Generating Android keystore in turtle when one is not passed to turtle-cli (https://github.com/expo/turtle/pull/65).
|
- Generating Android keystore in turtle when one is not passed to turtle-cli (https://github.com/expo/turtle/pull/65).
|
||||||
- Upload logs to s3 if build has been canceled or timed out.
|
- Upload logs to s3 if build has been canceled or timed out.
|
||||||
- Unhandled exception on asset download (xdl).
|
- Unhandled exception on asset download (xdl).
|
||||||
|
|
||||||
## [0.7.2] - 2019-05-09
|
## [0.7.2] - 2019-05-09
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- Support for Android tarballs without `universe-package.json`.
|
- Support for Android tarballs without `universe-package.json`.
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Upgraded `@expo/traveling-fastlane-darwin` to 1.9.4 (fixes issues with generating provisioning profiles for ad-hoc builds).
|
- Upgraded `@expo/traveling-fastlane-darwin` to 1.9.4 (fixes issues with generating provisioning profiles for ad-hoc builds).
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
|
|
||||||
- Support for `CLIENT_LOGGER_LEVEL` env variable.
|
- Support for `CLIENT_LOGGER_LEVEL` env variable.
|
||||||
|
|
||||||
## [0.7.1] - 2019-05-06
|
## [0.7.1] - 2019-05-06
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- Resolving `fastlane` version when `LC_ALL` is not set.
|
- Resolving `fastlane` version when `LC_ALL` is not set.
|
||||||
|
|
||||||
## [0.7.0] - 2019-05-06
|
## [0.7.0] - 2019-05-06
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- Support for custom Android builds.
|
- Support for custom Android builds.
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Refactored logger.
|
- Refactored logger.
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- `platform` log field wrongly set to `ios` for Android builds (when using `turtle-cli`).
|
- `platform` log field wrongly set to `ios` for Android builds (when using `turtle-cli`).
|
||||||
- Brought back `jobID` and `experienceName` fields to Android logs.
|
- Brought back `jobID` and `experienceName` fields to Android logs.
|
||||||
|
|
||||||
## [0.6.1] - 2019-04-23
|
## [0.6.1] - 2019-04-23
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- Checking fastlane version before running build (turtle-cli).
|
- Checking fastlane version before running build (turtle-cli).
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Updated iOS shell app for SDK 32 to fix AppAuth issue.
|
- Updated iOS shell app for SDK 32 to fix AppAuth issue.
|
||||||
- Babel replaced by ttypescript.
|
- Babel replaced by ttypescript.
|
||||||
- Updated xdl to 53.5.3 and @expo/spawn-async to 1.4.2, so that error stack traces should be more informative now.
|
- Updated xdl to 53.5.3 and @expo/spawn-async to 1.4.2, so that error stack traces should be more informative now.
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- Brought back `jobID` and `experienceName` fields to GCloud logs.
|
- Brought back `jobID` and `experienceName` fields to GCloud logs.
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
|
|
||||||
- `buidAndroidTarballLocally.sh` script (it has been moved to expo repository - [expo/expo#4022](https://github.com/expo/expo/pull/4022)).
|
- `buidAndroidTarballLocally.sh` script (it has been moved to expo repository - [expo/expo#4022](https://github.com/expo/expo/pull/4022)).
|
||||||
|
|
||||||
## [0.6.0] - 2019-04-09
|
## [0.6.0] - 2019-04-09
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Removed Branch module from Android shell apps for all SDK versions.
|
- Removed Branch module from Android shell apps for all SDK versions.
|
||||||
|
|
||||||
## [0.5.15] - 2019-04-03
|
## [0.5.15] - 2019-04-03
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- Turtle smoke tests are now being executed on CircleCI from the context of this repository.
|
- Turtle smoke tests are now being executed on CircleCI from the context of this repository.
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Updated iOS shell app for SDK 32 (fixes [this loading issue for slow connections](https://github.com/expo/expo/issues/3574)).
|
- Updated iOS shell app for SDK 32 (fixes [this loading issue for slow connections](https://github.com/expo/expo/issues/3574)).
|
||||||
- Minor infra changes (doesn't affect users).
|
- Minor infra changes (doesn't affect users).
|
||||||
- Error logs format - error objects are now passed in an object being passed as the first argument to logger function.
|
- Error logs format - error objects are now passed in an object being passed as the first argument to logger function.
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
|
|
||||||
- Sending logs to loggly.
|
- Sending logs to loggly.
|
||||||
|
|
||||||
## [0.5.14] - 2019-03-22
|
## [0.5.14] - 2019-03-22
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- `--config` parameter for turtle-cli commands, which allows to specify a custom path to app.json file
|
- `--config` parameter for turtle-cli commands, which allows to specify a custom path to app.json file
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Updated iOS shell app for SDK 32 (fixes [this notifications issue](https://github.com/expo/expo/issues/3663)).
|
- Updated iOS shell app for SDK 32 (fixes [this notifications issue](https://github.com/expo/expo/issues/3663)).
|
||||||
|
|
||||||
## [0.5.13] - 2019-03-12
|
## [0.5.13] - 2019-03-12
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- Android SDK version support validation.
|
- Android SDK version support validation.
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- iOS Enterprise builds don't compile bitcode now.
|
- iOS Enterprise builds don't compile bitcode now.
|
||||||
|
|
||||||
## [0.5.12] - 2019-02-26
|
## [0.5.12] - 2019-02-26
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- Google Cloud logger (as a bunyan stream).
|
- Google Cloud logger (as a bunyan stream).
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Android builder passes the manifest from a build job message if it's available.
|
- Android builder passes the manifest from a build job message if it's available.
|
||||||
|
|
||||||
## [0.5.11] - 2019-02-22
|
## [0.5.11] - 2019-02-22
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- Builder for iOS client apps.
|
- Builder for iOS client apps.
|
||||||
|
|
||||||
## [0.5.10] - 2019-02-19
|
## [0.5.10] - 2019-02-19
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- Registering Turtle version in Redis.
|
- Registering Turtle version in Redis.
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Update Android shell app for SDK 32 to fix [update](https://github.com/expo/expo/issues/3504) and [back button](https://github.com/expo/expo/issues/1786) issues.
|
- Update Android shell app for SDK 32 to fix [update](https://github.com/expo/expo/issues/3504) and [back button](https://github.com/expo/expo/issues/1786) issues.
|
||||||
|
|
||||||
## [0.5.9] - 2019-02-06
|
## [0.5.9] - 2019-02-06
|
||||||
|
|
||||||
- Update iOS shell app for SDK 32 (fixes bare notifications [issue](https://github.com/expo/expo/issues/3223)).
|
- Update iOS shell app for SDK 32 (fixes bare notifications [issue](https://github.com/expo/expo/issues/3223)).
|
||||||
|
|
||||||
## [0.5.7] - 2019-01-31
|
## [0.5.7] - 2019-01-31
|
||||||
|
|
||||||
- Update Android shell app for SDK 32 to fix bundled assets issue.
|
- Update Android shell app for SDK 32 to fix bundled assets issue.
|
||||||
|
|
||||||
## [0.5.6] - 2019-01-25
|
## [0.5.6] - 2019-01-25
|
||||||
|
|
||||||
- Update iOS shell app for SDK 30, 31 and 32 (built with xcode 10.1).
|
- Update iOS shell app for SDK 30, 31 and 32 (built with xcode 10.1).
|
||||||
|
|
||||||
## [0.5.5] - 2019-01-24
|
## [0.5.5] - 2019-01-24
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- Sending build duration in AWS SQS messages (of `FINISHED` and `ERRORED` types).
|
- Sending build duration in AWS SQS messages (of `FINISHED` and `ERRORED` types).
|
||||||
|
|
||||||
## [0.5.4] - 2019-01-22
|
## [0.5.4] - 2019-01-22
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Update iOS shell app for SDK32 to [`expo/expo#0847c10`](https://github.com/expo/expo/commit/0847c1073d38c366866f3d9279ddd662da47dc9b), i.e. v2.10.3 with fixed WebView navigation scheme and upgraded Facebook SDK.
|
- Update iOS shell app for SDK32 to [`expo/expo#0847c10`](https://github.com/expo/expo/commit/0847c1073d38c366866f3d9279ddd662da47dc9b), i.e. v2.10.3 with fixed WebView navigation scheme and upgraded Facebook SDK.
|
||||||
|
|
||||||
## [0.5.3] - 2019-01-21
|
## [0.5.3] - 2019-01-21
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- Building Android standalone apps ([not accepted license issue](https://github.com/expo/expo/issues/3266)) - updated Android build tools (`build-tools;28.0.3`, `platforms;android-28`).
|
- Building Android standalone apps ([not accepted license issue](https://github.com/expo/expo/issues/3266)) - updated Android build tools (`build-tools;28.0.3`, `platforms;android-28`).
|
||||||
|
|
||||||
## [0.5.2] - 2019-01-18
|
## [0.5.2] - 2019-01-18
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- The link (in README) to the repository containing `turtle-cli` usage example.
|
- The link (in README) to the repository containing `turtle-cli` usage example.
|
||||||
- [Contributing guide](CONTRIBUTING.md).
|
- [Contributing guide](CONTRIBUTING.md).
|
||||||
- [Code of Conduct](CODE_OF_CONDUCT.md).
|
- [Code of Conduct](CODE_OF_CONDUCT.md).
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
|
|
||||||
- `eslint`
|
- `eslint`
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Fix all `tslint` errors.
|
- Fix all `tslint` errors.
|
||||||
|
|
||||||
## [0.5.1] - 2019-01-16
|
## [0.5.1] - 2019-01-16
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Update Android shell app for SDK32 that includes `[email protected]`.
|
- Update Android shell app for SDK32 that includes `[email protected]`.
|
||||||
|
|
||||||
## [0.5.0] - 2019-01-16
|
## [0.5.0] - 2019-01-16
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- Turtle version is added to the `onFinish` and `onError` build messages.
|
- Turtle version is added to the `onFinish` and `onError` build messages.
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- A version property value being sent to the queue. It's now the version number
|
- A version property value being sent to the queue. It's now the version number
|
||||||
from `package.json` instead of `new`/`old` indicator.
|
from `package.json` instead of `new`/`old` indicator.
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
|
|
||||||
- `--push-p12-path` parameter for `turtle build:ios` command,
|
- `--push-p12-path` parameter for `turtle build:ios` command,
|
||||||
a Push Notifications Certificate is no longer required to perform a successful
|
a Push Notifications Certificate is no longer required to perform a successful
|
||||||
iOS standalone app build.
|
iOS standalone app build.
|
||||||
|
|
||||||
## [0.4.3] - 2019-01-09
|
## [0.4.3] - 2019-01-09
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Update iOS shell app for SDK32.
|
- Update iOS shell app for SDK32.
|
||||||
- Update Android shell app for SDK32.
|
- Update Android shell app for SDK32.
|
||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
# see docker-base/Dockerfile to learn what's installed in the turtle-android-base image
|
# see docker-base/Dockerfile to learn what's installed in the turtle-android-base image
|
||||||
FROM gcr.io/exponentjs/turtle-android-base:0.1.0
|
FROM gcr.io/exponentjs/turtle-android-base:0.4.0
|
||||||
|
|
||||||
ADD . /app/turtle
|
ADD . /app/turtle
|
||||||
|
|
||||||
|
|||||||
+12
-1
@@ -3,7 +3,18 @@
|
|||||||
|
|
||||||
const subcommand = process.argv[2];
|
const subcommand = process.argv[2];
|
||||||
if (subcommand) {
|
if (subcommand) {
|
||||||
const [, platform] = subcommand.split(':');
|
let platform;
|
||||||
|
if (subcommand.length === 2) {
|
||||||
|
const letter = subcommand[1];
|
||||||
|
if (letter === 'a') {
|
||||||
|
platform = 'android';
|
||||||
|
} else if (letter === 'i') {
|
||||||
|
platform = 'ios';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
const [, maybePlatform] = subcommand.split(':');
|
||||||
|
platform = maybePlatform;
|
||||||
|
}
|
||||||
if (platform === 'ios' || platform === 'android') {
|
if (platform === 'ios' || platform === 'android') {
|
||||||
// so that logs have correct platform set
|
// so that logs have correct platform set
|
||||||
process.env.PLATFORM = platform;
|
process.env.PLATFORM = platform;
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
configureAndroidSdk.sh
|
||||||
+26
-31
@@ -17,6 +17,7 @@ RUN dpkg --add-architecture i386 && \
|
|||||||
build-essential\
|
build-essential\
|
||||||
bzip2:i386\
|
bzip2:i386\
|
||||||
file\
|
file\
|
||||||
|
jq\
|
||||||
lib32ncurses5\
|
lib32ncurses5\
|
||||||
lib32z1\
|
lib32z1\
|
||||||
libc6:i386\
|
libc6:i386\
|
||||||
@@ -31,7 +32,7 @@ RUN dpkg --add-architecture i386 && \
|
|||||||
apt-get clean
|
apt-get clean
|
||||||
|
|
||||||
ENV NPM_CONFIG_LOGLEVEL warn
|
ENV NPM_CONFIG_LOGLEVEL warn
|
||||||
ENV NODE_VERSION 8.12.0
|
ENV NODE_VERSION 12.16.1
|
||||||
|
|
||||||
RUN curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz" \
|
RUN curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz" \
|
||||||
&& tar -xJf "node-v$NODE_VERSION-linux-x64.tar.xz" -C /usr/local --strip-components=1 \
|
&& tar -xJf "node-v$NODE_VERSION-linux-x64.tar.xz" -C /usr/local --strip-components=1 \
|
||||||
@@ -54,39 +55,33 @@ ENV PATH ${ANDROID_HOME}/tools:${PATH}
|
|||||||
ENV PATH ${ANDROID_HOME}/tools/bin:${PATH}
|
ENV PATH ${ANDROID_HOME}/tools/bin:${PATH}
|
||||||
ENV PATH ${ANDROID_HOME}/build-tools/28.0.3/:${PATH}
|
ENV PATH ${ANDROID_HOME}/build-tools/28.0.3/:${PATH}
|
||||||
|
|
||||||
ADD scripts/android/configureAndroidSdk.sh /tmp/configureAndroidSdk.sh
|
ADD configureAndroidSdk.sh /tmp/configureAndroidSdk.sh
|
||||||
RUN /tmp/configureAndroidSdk.sh --install-all-platforms
|
RUN /tmp/configureAndroidSdk.sh --install-all-platforms
|
||||||
|
|
||||||
# Install Android NDK
|
|
||||||
ENV ANDROID_NDK_VERSION android-ndk-r10e
|
|
||||||
ENV ANDROID_NDK_FILE ${ANDROID_NDK_VERSION}-linux-x86_64.bin
|
|
||||||
ENV ANDROID_NDK_URL https://dl.google.com/android/ndk/${ANDROID_NDK_FILE}
|
|
||||||
ENV ANDROID_NDK /opt/${ANDROID_NDK_VERSION}
|
|
||||||
ENV PATH $ANDROID_NDK:$PATH
|
|
||||||
|
|
||||||
# i have no clue why some of this is here, but it's working elsewhere
|
|
||||||
# it appears to install the NDK version expo needs, so that's cool
|
|
||||||
RUN mkdir /ndk_setup && cd /ndk_setup && \
|
|
||||||
curl -L ${ANDROID_NDK_URL} > ${ANDROID_NDK_FILE} && \
|
|
||||||
chmod +x ${ANDROID_NDK_FILE} && \
|
|
||||||
sync && \
|
|
||||||
./${ANDROID_NDK_FILE} && \
|
|
||||||
mv ./${ANDROID_NDK_VERSION} ${ANDROID_NDK} && \
|
|
||||||
cp -R \
|
|
||||||
${ANDROID_NDK}/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64 \
|
|
||||||
${ANDROID_NDK}/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86 && \
|
|
||||||
cp -R \
|
|
||||||
${ANDROID_NDK}/toolchains/x86-4.8/prebuilt/linux-x86_64 \
|
|
||||||
${ANDROID_NDK}/toolchains/x86-4.8/prebuilt/linux-x86 && \
|
|
||||||
cd && rm -rf /ndk_setup
|
|
||||||
|
|
||||||
# Support Gradle
|
# Support Gradle
|
||||||
ENV TERM dumb
|
ENV TERM dumb
|
||||||
|
|
||||||
# Install gradle
|
# Install gradle 5.6.3
|
||||||
RUN wget https://services.gradle.org/distributions/gradle-4.4-all.zip
|
RUN wget https://services.gradle.org/distributions/gradle-5.6.3-all.zip
|
||||||
RUN unzip -qq gradle-4.4-all.zip
|
RUN unzip -qq gradle-5.6.3-all.zip
|
||||||
RUN mv gradle-4.4 /usr/local
|
RUN cp -r gradle-5.6.3 /usr/local
|
||||||
RUN rm gradle-4.4-all.zip
|
|
||||||
ENV GRADLE_HOME /usr/local/gradle-4.4
|
RUN mkdir -p /root/.gradle/wrapper/dists/gradle-5.6.3-all/7wpcz6s7ut7bllr9k6e1hazxc
|
||||||
|
RUN mv gradle-5.6.3-all.zip /root/.gradle/wrapper/dists/gradle-5.6.3-all/7wpcz6s7ut7bllr9k6e1hazxc
|
||||||
|
RUN mv gradle-5.6.3 /root/.gradle/wrapper/dists/gradle-5.6.3-all/7wpcz6s7ut7bllr9k6e1hazxc
|
||||||
|
RUN touch /root/.gradle/wrapper/dists/gradle-5.6.3-all/7wpcz6s7ut7bllr9k6e1hazxc/gradle-5.6.3-all.zip.ok
|
||||||
|
RUN touch /root/.gradle/wrapper/dists/gradle-5.6.3-all/7wpcz6s7ut7bllr9k6e1hazxc/gradle-5.6.3-all.zip.lck
|
||||||
|
RUN chmod 755 /root/.gradle/wrapper/dists/gradle-5.6.3-all/7wpcz6s7ut7bllr9k6e1hazxc/gradle-5.6.3/bin/gradle
|
||||||
|
|
||||||
|
ENV GRADLE_HOME /usr/local/gradle-5.6.3
|
||||||
ENV PATH ${GRADLE_HOME}/bin:$PATH
|
ENV PATH ${GRADLE_HOME}/bin:$PATH
|
||||||
|
|
||||||
|
# Install gradle 4.10.2
|
||||||
|
RUN wget https://services.gradle.org/distributions/gradle-4.10.2-all.zip
|
||||||
|
RUN mkdir -p /root/.gradle/wrapper/dists/gradle-4.10.2-all/9fahxiiecdb76a5g3aw9oi8rv
|
||||||
|
RUN unzip -qq gradle-4.10.2-all.zip
|
||||||
|
RUN mv gradle-4.10.2-all.zip /root/.gradle/wrapper/dists/gradle-4.10.2-all/9fahxiiecdb76a5g3aw9oi8rv
|
||||||
|
RUN mv gradle-4.10.2 /root/.gradle/wrapper/dists/gradle-4.10.2-all/9fahxiiecdb76a5g3aw9oi8rv
|
||||||
|
RUN touch /root/.gradle/wrapper/dists/gradle-4.10.2-all/9fahxiiecdb76a5g3aw9oi8rv/gradle-4.10.2-all.zip.ok
|
||||||
|
RUN touch /root/.gradle/wrapper/dists/gradle-4.10.2-all/9fahxiiecdb76a5g3aw9oi8rv/gradle-4.10.2-all.zip.lck
|
||||||
|
RUN chmod 755 /root/.gradle/wrapper/dists/gradle-4.10.2-all/9fahxiiecdb76a5g3aw9oi8rv/gradle-4.10.2/bin/gradle
|
||||||
@@ -138,6 +138,11 @@ spec:
|
|||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: turtle-js-config
|
name: turtle-js-config
|
||||||
key: datadog_app_key
|
key: datadog_app_key
|
||||||
|
- name: TURTLE_SDK_VERSIONS_SECRET_TOKEN
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: turtle-js-config
|
||||||
|
key: turtle_sdk_versions_secret_token
|
||||||
# other vars
|
# other vars
|
||||||
- name: GRADLE_DAEMON_DISABLED
|
- name: GRADLE_DAEMON_DISABLED
|
||||||
value: "1"
|
value: "1"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
self: super:
|
self: super:
|
||||||
|
|
||||||
{
|
{
|
||||||
nodejs = super.nodejs-8_x;
|
nodejs = super.nodejs-12_x;
|
||||||
}
|
}
|
||||||
+87
-21
@@ -2,11 +2,78 @@ with (import ./default.nix {});
|
|||||||
|
|
||||||
let
|
let
|
||||||
|
|
||||||
ndk = androidenv.androidndk_17c.override { fullNDK = true; };
|
# These expressions can be deleted when react native depends on version of
|
||||||
ndk_root = "${ndk}/libexec/${ndk.name}";
|
# ndk present in nixpkgs.
|
||||||
sdk_path = if stdenv.isDarwin
|
os = if stdenv.system == "x86_64-linux" then "linux"
|
||||||
then "/Library/Android/sdk"
|
else if stdenv.system == "x86_64-darwin" then "macosx" else throw "unsupported system architecture: ${stdenv.system}";
|
||||||
else "/Android/Sdk"; # intentional Capital S
|
ndk_17c_src = if stdenv.isDarwin then fetchurl {
|
||||||
|
url = http://dl.google.com/android/repository/android-ndk-r17c-darwin-x86_64.zip;
|
||||||
|
sha256 = "11iyxgqp017fchn54kkns9mrax73m73xm5wgis266dsq2g36dn73";
|
||||||
|
} else fetchurl {
|
||||||
|
url = https://dl.google.com/android/repository/android-ndk-r17c-linux-x86_64.zip;
|
||||||
|
sha256 = "12b5h5p8b2ia38825dnnacn7b47c0inpys8jp82r42iks3dilm1z";
|
||||||
|
};
|
||||||
|
ndk_runtime_paths = lib.makeBinPath [ coreutils file findutils gawk gnugrep gnused jdk python3 which ]; #+ ":${platform-tools}/platform-tools";
|
||||||
|
ndk = stdenv.mkDerivation {
|
||||||
|
name = "ndk-17c";
|
||||||
|
src = ndk_17c_src;
|
||||||
|
buildInputs = [ unzip autoPatchelfHook makeWrapper python2 ] ++ lib.optional (os == "linux") [ glibc stdenv.cc.cc ncurses5 zlib libcxx.out ];
|
||||||
|
unpackPhase = ''
|
||||||
|
mkdir extractedzip
|
||||||
|
cd extractedzip
|
||||||
|
unpackFile "$src"
|
||||||
|
if [ "$(find . -mindepth 1 -maxdepth 1 -type d | wc -l)" -eq 1 ]
|
||||||
|
then
|
||||||
|
cd "$(find . -mindepth 1 -maxdepth 1 -type d)"
|
||||||
|
fi
|
||||||
|
sourceRoot="$PWD"
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
packageBaseDir=$out/libexec/android-sdk/ndk-bundle
|
||||||
|
mkdir -p $packageBaseDir
|
||||||
|
cd $packageBaseDir
|
||||||
|
cp -av $sourceRoot/* .
|
||||||
|
'' + lib.optionalString (os == "linux") ''
|
||||||
|
patchShebangs .
|
||||||
|
wrapProgram $(pwd)/build/tools/make_standalone_toolchain.py --prefix PATH : "${ndk_runtime_paths}"
|
||||||
|
rm -rf docs tests
|
||||||
|
# Patch the executables of the toolchains, but not the libraries -- they are needed for crosscompiling
|
||||||
|
addAutoPatchelfSearchPath $out/libexec/android-sdk/ndk-bundle/toolchains/renderscript/prebuilt/linux-x86_64/lib64
|
||||||
|
find toolchains -type d -name bin | while read dir
|
||||||
|
do
|
||||||
|
autoPatchelf "$dir"
|
||||||
|
done
|
||||||
|
# fix ineffective PROGDIR / MYNDKDIR determination
|
||||||
|
for i in ndk-build
|
||||||
|
do
|
||||||
|
sed -i -e 's|^PROGDIR=`dirname $0`|PROGDIR=`dirname $(readlink -f $(which $0))`|' $i
|
||||||
|
done
|
||||||
|
# Patch executables
|
||||||
|
autoPatchelf prebuilt/linux-x86_64
|
||||||
|
# wrap
|
||||||
|
for i in ndk-build
|
||||||
|
do
|
||||||
|
wrapProgram "$(pwd)/$i" --prefix PATH : "${ndk_runtime_paths}"
|
||||||
|
done
|
||||||
|
# make some executables available in PATH
|
||||||
|
mkdir -p $out/bin
|
||||||
|
for i in ndk-build
|
||||||
|
do
|
||||||
|
ln -sf ../../libexec/android-sdk/ndk-bundle/$i $out/bin/$i
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
dontStrip = true;
|
||||||
|
dontPatchELF = true;
|
||||||
|
dontAutoPatchelf = true;
|
||||||
|
noAuditTmpdir = true;
|
||||||
|
};
|
||||||
|
ndkRoot = "${ndk}/libexec/android-sdk/ndk-bundle";
|
||||||
|
|
||||||
|
sdk = androidenv.androidPkgs_9_0.androidsdk;
|
||||||
|
sdk_path = if stdenv.isDarwin
|
||||||
|
then "/Library/Android/sdk"
|
||||||
|
else "/Android/Sdk"; # intentional Capital S
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
@@ -23,28 +90,27 @@ mkShell rec {
|
|||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
awscli
|
awscli
|
||||||
curl
|
curl
|
||||||
|
fastlane
|
||||||
git
|
git
|
||||||
nodejs-8_x
|
nodejs
|
||||||
openjdk8
|
openjdk8
|
||||||
yarn
|
yarn
|
||||||
];
|
];
|
||||||
|
|
||||||
passthru = { inherit ndk; };
|
passthru = { inherit ndk ndkRoot; };
|
||||||
|
|
||||||
shellHook = ''
|
shellHook = ''
|
||||||
${./install-ndk-17c.sh} ${ndk} ${ndk_root}
|
${./install-ndk-17c.sh} ${ndk} ${ndkRoot}
|
||||||
yes | ${androidenv.androidsdk_9_0}/bin/sdkmanager --licenses --sdk_root="$ANDROID_SDK_ROOT"
|
# grep -v = should clean up build logs, see https://stackoverflow.com/a/52464819/1123156
|
||||||
yes | ${androidenv.androidsdk_9_0}/bin/sdkmanager --sdk_root="$ANDROID_SDK_ROOT" "platforms;android-28" | grep -v =
|
yes | ${sdk}/bin/sdkmanager --sdk_root="$ANDROID_SDK_ROOT" "build-tools;28.0.3" | grep -v =
|
||||||
yes | ${androidenv.androidsdk_9_0}/bin/sdkmanager --sdk_root="$ANDROID_SDK_ROOT" "build-tools;28.0.3" | grep -v =
|
'' + lib.optionalString stdenv.isLinux ''
|
||||||
${lib.optionalString stdenv.isLinux ''
|
for dep in lib lib64; do
|
||||||
for dep in lib lib64; do
|
if [ -L /$dep ] || [ ! -e /$dep ]; then
|
||||||
if [ -L /$dep ] || [ ! -e /$dep ]; then
|
echo "Creating /$dep"
|
||||||
echo "Creating /$dep"
|
ln -s ${stdenv.cc.libc}/$dep /$dep
|
||||||
ln -s ${stdenv.cc.libc}/$dep /$dep
|
else
|
||||||
else
|
echo "Using existing /$dep"
|
||||||
echo "Using existing /$dep"
|
fi
|
||||||
fi
|
done
|
||||||
done
|
|
||||||
''}
|
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
+3
-3
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"url": "https://github.com/NixOS/nixpkgs-channels.git",
|
"url": "https://github.com/NixOS/nixpkgs-channels.git",
|
||||||
"rev": "80738ed9dc0ce48d7796baed5364eef8072c794d",
|
"rev": "42f0be81ae05a8fe6d6e8e7f1c28652e7746e046",
|
||||||
"date": "2018-11-17T11:18:10+01:00",
|
"date": "2020-03-01T07:21:40-03:00",
|
||||||
"sha256": "0anmvr6b47gbbyl9v2fn86mfkcwgpbd5lf0yf3drgm8pbv57c1dc",
|
"sha256": "1rxb5kmghkzazqcv4d8yczdiv2srs4r7apx4idc276lcikm0hdmf",
|
||||||
"fetchSubmodules": false
|
"fetchSubmodules": false
|
||||||
}
|
}
|
||||||
+17
-9
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "turtle-cli",
|
"name": "turtle-cli",
|
||||||
"version": "0.12.1",
|
"version": "0.13.10",
|
||||||
"description": "The command-line tool for building standalone Expo apps",
|
"description": "The command-line tool for building standalone Expo apps",
|
||||||
"preferGlobal": true,
|
"preferGlobal": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@@ -22,7 +22,9 @@
|
|||||||
"test:unit": "yarn test --config jest/unit-config.json",
|
"test:unit": "yarn test --config jest/unit-config.json",
|
||||||
"test:smoke": "yarn test --config jest/smoke-config.json --forceExit",
|
"test:smoke": "yarn test --config jest/smoke-config.json --forceExit",
|
||||||
"test:smoke:android": "PLATFORM=android yarn test:smoke --testNamePattern=android",
|
"test:smoke:android": "PLATFORM=android yarn test:smoke --testNamePattern=android",
|
||||||
|
"test:smoke:android:record": "PLATFORM=android EXPENV_OVERRIDES=local-common,local,local-queue expenv yarn test:smoke --testNamePattern=android",
|
||||||
"test:smoke:ios": "PLATFORM=ios yarn test:smoke --testNamePattern=iOS",
|
"test:smoke:ios": "PLATFORM=ios yarn test:smoke --testNamePattern=iOS",
|
||||||
|
"test:smoke:ios:record": "PLATFORM=ios EXPENV_OVERRIDES=local-common,local,local-queue expenv yarn test:smoke --testNamePattern=iOS",
|
||||||
"release": "./scripts/release.sh",
|
"release": "./scripts/release.sh",
|
||||||
"release:beta": "./scripts/releaseBeta.sh",
|
"release:beta": "./scripts/releaseBeta.sh",
|
||||||
"release:update:turtle-cli-example": "./scripts/updateTurtleCliExampleRepo.sh",
|
"release:update:turtle-cli-example": "./scripts/updateTurtleCliExampleRepo.sh",
|
||||||
@@ -53,7 +55,7 @@
|
|||||||
"react-native"
|
"react-native"
|
||||||
],
|
],
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=10"
|
||||||
},
|
},
|
||||||
"author": "Expo <[email protected]>",
|
"author": "Expo <[email protected]>",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@@ -75,6 +77,7 @@
|
|||||||
"@types/progress": "^2.0.1",
|
"@types/progress": "^2.0.1",
|
||||||
"@types/raven": "^2.5.1",
|
"@types/raven": "^2.5.1",
|
||||||
"@types/request": "^2.47.1",
|
"@types/request": "^2.47.1",
|
||||||
|
"@types/request-promise": "^4.1.44",
|
||||||
"@types/semver": "^6.0.0",
|
"@types/semver": "^6.0.0",
|
||||||
"@types/sharp": "^0.17.8",
|
"@types/sharp": "^0.17.8",
|
||||||
"@types/tar": "^4.0.0",
|
"@types/tar": "^4.0.0",
|
||||||
@@ -83,13 +86,13 @@
|
|||||||
"@types/webpack-dev-server": "^3.1.7",
|
"@types/webpack-dev-server": "^3.1.7",
|
||||||
"@types/which": "^1.3.1",
|
"@types/which": "^1.3.1",
|
||||||
"husky": "^1.3.1",
|
"husky": "^1.3.1",
|
||||||
"jest": "^23.6.0",
|
"jest": "^25.1.0",
|
||||||
"lint-staged": "^8.1.5",
|
"lint-staged": "^8.1.5",
|
||||||
"nock": "^10.0.1",
|
"nock": "^10.0.1",
|
||||||
"nodemon": "^1.18.11",
|
"nodemon": "^2.0.2",
|
||||||
"release-it": "^12.3.4",
|
"release-it": "^12.3.4",
|
||||||
"rimraf": "^2.6.2",
|
"rimraf": "^2.6.2",
|
||||||
"ts-jest": "^23.10.4",
|
"ts-jest": "^25.2.1",
|
||||||
"ts-node": "^8.0.3",
|
"ts-node": "^8.0.3",
|
||||||
"ts-transformer-imports": "^0.4.1",
|
"ts-transformer-imports": "^0.4.1",
|
||||||
"tsconfig-paths": "^3.8.0",
|
"tsconfig-paths": "^3.8.0",
|
||||||
@@ -100,8 +103,8 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@expo/spawn-async": "^1.4.2",
|
"@expo/spawn-async": "^1.4.2",
|
||||||
"@expo/xdl": "56.2.2-alpha.2",
|
"@expo/xdl": "57.5.2",
|
||||||
"@google-cloud/logging-bunyan": "^0.9.5",
|
"@google-cloud/logging-bunyan": "^2.0.3",
|
||||||
"async-retry": "^1.2.1",
|
"async-retry": "^1.2.1",
|
||||||
"aws-sdk": "^2.226.1",
|
"aws-sdk": "^2.226.1",
|
||||||
"bunyan": "^1.8.12",
|
"bunyan": "^1.8.12",
|
||||||
@@ -120,14 +123,19 @@
|
|||||||
"raven": "^2.6.2",
|
"raven": "^2.6.2",
|
||||||
"request": "^2.88.0",
|
"request": "^2.88.0",
|
||||||
"request-progress": "^3.0.0",
|
"request-progress": "^3.0.0",
|
||||||
|
"request-promise": "^4.2.5",
|
||||||
"semver": "^6.0.0",
|
"semver": "^6.0.0",
|
||||||
"sharp": "0.22.1",
|
"sharp": "0.24.1",
|
||||||
"source-map-support": "^0.5.6",
|
"source-map-support": "^0.5.6",
|
||||||
"tar": "^4.4.6",
|
"tar": "^4.4.6",
|
||||||
"uuid": "^3.2.1",
|
"uuid": "^3.2.1",
|
||||||
"which": "^1.3.1"
|
"which": "^1.3.1"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"@expo/traveling-fastlane-darwin": "1.9.9"
|
"@expo/traveling-fastlane-darwin": "1.11.4"
|
||||||
|
},
|
||||||
|
"volta": {
|
||||||
|
"node": "12.16.1",
|
||||||
|
"yarn": "1.22.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3,6 +3,8 @@
|
|||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
|
|
||||||
ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )"/../.. && pwd )"
|
ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )"/../.. && pwd )"
|
||||||
|
CONFIGURE_ANDROID_SDK_PATH="$ROOT_DIR/scripts/android/configureAndroidSdk.sh"
|
||||||
|
DOCKER_BASE_DIR="$ROOT_DIR/docker-base"
|
||||||
|
|
||||||
IMAGE_TAG="$1"
|
IMAGE_TAG="$1"
|
||||||
if [[ -z "$IMAGE_TAG" ]]; then
|
if [[ -z "$IMAGE_TAG" ]]; then
|
||||||
@@ -13,10 +15,12 @@ fi
|
|||||||
IMAGE_VERSION_FULL_NAME="gcr.io/exponentjs/turtle-android-base:$IMAGE_TAG"
|
IMAGE_VERSION_FULL_NAME="gcr.io/exponentjs/turtle-android-base:$IMAGE_TAG"
|
||||||
IMAGE_LATEST_FULL_NAME="gcr.io/exponentjs/turtle-android-base:latest"
|
IMAGE_LATEST_FULL_NAME="gcr.io/exponentjs/turtle-android-base:latest"
|
||||||
|
|
||||||
pushd $ROOT_DIR > /dev/null
|
pushd $DOCKER_BASE_DIR > /dev/null
|
||||||
echo docker build -f docker-base/Dockerfile -t "$IMAGE_VERSION_FULL_NAME" -t "$IMAGE_LATEST_FULL_NAME" .
|
cp $CONFIGURE_ANDROID_SDK_PATH .
|
||||||
|
docker build -t "$IMAGE_VERSION_FULL_NAME" -t "$IMAGE_LATEST_FULL_NAME" .
|
||||||
echo "Successfully built $IMAGE_VERSION_FULL_NAME Docker image"
|
echo "Successfully built $IMAGE_VERSION_FULL_NAME Docker image"
|
||||||
echo gcloud docker -- push "$IMAGE_VERSION_FULL_NAME"
|
gcloud docker -- push "$IMAGE_VERSION_FULL_NAME"
|
||||||
echo gcloud docker -- push "$IMAGE_LATEST_FULL_NAME"
|
gcloud docker -- push "$IMAGE_LATEST_FULL_NAME"
|
||||||
echo "Successfully pushed $IMAGE_VERSION_FULL_NAME Docker image to GCloud"
|
echo "Successfully pushed $IMAGE_VERSION_FULL_NAME Docker image to GCloud"
|
||||||
|
rm -rf `basename $CONFIGURE_ANDROID_SDK_PATH`
|
||||||
popd > /dev/null
|
popd > /dev/null
|
||||||
@@ -18,3 +18,5 @@ yes | $SDKMANAGER \
|
|||||||
"extras;android;m2repository" \
|
"extras;android;m2repository" \
|
||||||
"extras;google;m2repository" \
|
"extras;google;m2repository" \
|
||||||
"extras;google;google_play_services" | grep -v '='; [[ ${PIPESTATUS[1]} = 0 ]]
|
"extras;google;google_play_services" | grep -v '='; [[ ${PIPESTATUS[1]} = 0 ]]
|
||||||
|
|
||||||
|
yes | $SDKMANAGER "ndk;17.2.4988734" | grep -v '='; [[ ${PIPESTATUS[1]} = 0 ]]
|
||||||
@@ -22,5 +22,6 @@ export API_PORT="443"
|
|||||||
export REDIS_URL="noop"
|
export REDIS_URL="noop"
|
||||||
export REDIS_CONFIG_URL="noop"
|
export REDIS_CONFIG_URL="noop"
|
||||||
export DATADOG_DISABLED="true"
|
export DATADOG_DISABLED="true"
|
||||||
|
export TURTLE_SDK_VERSIONS_SECRET_TOKEN="noop"
|
||||||
|
|
||||||
yarn test:smoke:android
|
yarn test:smoke:android
|
||||||
@@ -20,8 +20,9 @@ export API_PORT="443"
|
|||||||
export REDIS_URL="noop"
|
export REDIS_URL="noop"
|
||||||
export REDIS_CONFIG_URL="noop"
|
export REDIS_CONFIG_URL="noop"
|
||||||
export DATADOG_DISABLED="true"
|
export DATADOG_DISABLED="true"
|
||||||
|
export TURTLE_SDK_VERSIONS_SECRET_TOKEN="noop"
|
||||||
|
|
||||||
ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )"/../.. && pwd )"
|
ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )"/../.. && pwd )"
|
||||||
SDK_VERSION=sdk32 $ROOT_DIR/scripts/ios/fetchRemoteIosTarball.sh
|
SDK_VERSION=sdk35 $ROOT_DIR/scripts/ios/fetchRemoteIosTarball.sh
|
||||||
|
|
||||||
yarn test:smoke:ios
|
yarn test:smoke:ios
|
||||||
@@ -22,5 +22,6 @@ export API_PORT="443"
|
|||||||
export REDIS_URL="noop"
|
export REDIS_URL="noop"
|
||||||
export REDIS_CONFIG_URL="noop"
|
export REDIS_CONFIG_URL="noop"
|
||||||
export DATADOG_DISABLED="true"
|
export DATADOG_DISABLED="true"
|
||||||
|
export TURTLE_SDK_VERSIONS_SECRET_TOKEN="noop"
|
||||||
|
|
||||||
yarn test:unit
|
yarn test:unit
|
||||||
@@ -1 +0,0 @@
|
|||||||
s3://exp-artifacts/android-shell-builder-89b2d24c86737d5a489c6a18467e31b2f9ce9005.tar.gz
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
s3://exp-artifacts/android-shell-builder-f796aaffa0b5715079b2950faf26c2ff4e53e4c0.tar.gz
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
s3://exp-artifacts/android-shell-builder-aebd669d6573b0b3c802871d94cdb8b4116678d2.tar.gz
|
|
||||||
@@ -1 +1 @@
|
|||||||
s3://exp-artifacts/android-shell-builder-e5c29efb465c5421250eece19210c9eb61a972a8.tar.gz
|
s3://exp-artifacts/android-shell-builder-7ce098f40cc82a2f61fed9f1f515d695a83c55b2.tar.gz
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
s3://exp-artifacts/android-shell-builder-bb08bdc180fccd8f90e99dafb4e0ac456232531b.tar.gz
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
s3://exp-artifacts/android-shell-builder-1a6203cf1555c3b956a311ed539eafeb7594f030.tar.gz
|
||||||
@@ -1 +1 @@
|
|||||||
s3://exp-artifacts/ios-expo-client-bfa75682546bef336b6b68318cb26bcef3eacb2c.tar.gz
|
s3://exp-artifacts/ios-expo-client-aadfc350d8e4ebf8dce9ce08723bb7e07d563846.tar.gz
|
||||||
@@ -1 +0,0 @@
|
|||||||
s3://exp-artifacts/ios-shell-builder-sdk-latest-55848298c7332f7586c4281fa691a4ca31548532.tar.gz
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
s3://exp-artifacts/ios-shell-builder-sdk-latest-edd02214dd84368c197df32a2d30a901d6c766ff.tar.gz
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
s3://exp-artifacts/ios-shell-builder-sdk-latest-36b57e8ebb96aa8dce286c89bd56e8708eca819d.tar.gz
|
|
||||||
@@ -1 +1 @@
|
|||||||
s3://exp-artifacts/ios-shell-builder-sdk-latest-63a8747443392411aaaf9cba12958666acca3a4e.tar.gz
|
s3://exp-artifacts/ios-shell-builder-sdk-latest-0115c48ddac4f63e5215541dff804871ef8c1e03.tar.gz
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
s3://exp-artifacts/ios-shell-builder-sdk-latest-661a51216c2241dcfdd930517968cd1d0e0ee237.tar.gz
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
s3://exp-artifacts/ios-shell-builder-sdk-latest-aadfc350d8e4ebf8dce9ce08723bb7e07d563846.tar.gz
|
||||||
Binary file not shown.
@@ -15,7 +15,7 @@ function setCommonCommandOptions(cmd: any) {
|
|||||||
.option('-o --output <output-file-path>', 'output file path')
|
.option('-o --output <output-file-path>', 'output file path')
|
||||||
.option(
|
.option(
|
||||||
'--public-url <url>',
|
'--public-url <url>',
|
||||||
'the URL of an externally hosted manifest (for self-hosted apps).',
|
'the URL of an externally hosted manifest (for self-hosted apps), only HTTPS URLs are supported!',
|
||||||
)
|
)
|
||||||
.option(
|
.option(
|
||||||
'--release-channel <channel-name>',
|
'--release-channel <channel-name>',
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import { ExponentTools } from '@expo/xdl';
|
|||||||
import fs from 'fs-extra';
|
import fs from 'fs-extra';
|
||||||
import _which from 'which';
|
import _which from 'which';
|
||||||
|
|
||||||
import ensureAndroidNDKIsPresent from 'turtle/bin/setup/android/ndk';
|
|
||||||
import ensureAndroidSDKIsPresent from 'turtle/bin/setup/android/sdk';
|
import ensureAndroidSDKIsPresent from 'turtle/bin/setup/android/sdk';
|
||||||
import { checkSystem, ensureShellAppIsPresent } from 'turtle/bin/setup/utils/common';
|
import { checkSystem, ensureShellAppIsPresent } from 'turtle/bin/setup/utils/common';
|
||||||
import { IToolDefinition } from 'turtle/bin/setup/utils/toolsDetector';
|
import { IToolDefinition } from 'turtle/bin/setup/utils/toolsDetector';
|
||||||
@@ -15,6 +14,7 @@ import { PLATFORMS } from 'turtle/constants';
|
|||||||
import logger from 'turtle/logger';
|
import logger from 'turtle/logger';
|
||||||
|
|
||||||
const which = util.promisify(_which);
|
const which = util.promisify(_which);
|
||||||
|
const JAVA_REQUIRED_VERSION = 8;
|
||||||
const REQUIRED_TOOLS: IToolDefinition[] = [
|
const REQUIRED_TOOLS: IToolDefinition[] = [
|
||||||
{
|
{
|
||||||
command: 'bash',
|
command: 'bash',
|
||||||
@@ -22,16 +22,30 @@ const REQUIRED_TOOLS: IToolDefinition[] = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
command: 'javac',
|
command: 'javac',
|
||||||
missingDescription: 'Please install JDK (version 8 or newer) - check https://jdk.java.net/',
|
missingDescription:
|
||||||
|
`Please install JDK 8 - keep in mind that other versions are not supported by Android`,
|
||||||
testFn: async () => {
|
testFn: async () => {
|
||||||
const { status, stdout } = await ExponentTools.spawnAsyncThrowError(
|
const { status, stdout, stderr } = await ExponentTools.spawnAsyncThrowError(
|
||||||
'javac',
|
'java',
|
||||||
['-version'],
|
['-version'],
|
||||||
{ stdio: 'pipe' },
|
{ stdio: 'pipe' },
|
||||||
);
|
);
|
||||||
if (stdout.match(/no java runtime present/i)) {
|
if (stdout.match(/no java runtime present/i)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const matchResult = stderr.match(/.*version "(.*)"/);
|
||||||
|
if (matchResult) {
|
||||||
|
const [, currentFullJavaVersion] = matchResult;
|
||||||
|
const javaMajorVersionPosition = currentFullJavaVersion.startsWith('1.') ? 1 : 0;
|
||||||
|
const javaMajorVersion = Number(currentFullJavaVersion.split('.')[javaMajorVersionPosition]);
|
||||||
|
if (javaMajorVersion !== JAVA_REQUIRED_VERSION) {
|
||||||
|
throw new Error(`You're on Java ${currentFullJavaVersion}, please install version ${JAVA_REQUIRED_VERSION}`);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
logger.warn(`Couldn't find Java version number, assuming you're on Java ${JAVA_REQUIRED_VERSION}...`);
|
||||||
|
}
|
||||||
|
|
||||||
return status === 0;
|
return status === 0;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -54,9 +68,8 @@ export default async function setup(sdkVersion?: string) {
|
|||||||
async function prepareAndroidEnv() {
|
async function prepareAndroidEnv() {
|
||||||
await fs.ensureDir(config.directories.androidDependenciesDir);
|
await fs.ensureDir(config.directories.androidDependenciesDir);
|
||||||
const sdkConfig = await ensureAndroidSDKIsPresent();
|
const sdkConfig = await ensureAndroidSDKIsPresent();
|
||||||
const ndkConfig = await ensureAndroidNDKIsPresent();
|
_setEnvVars(sdkConfig.envVars);
|
||||||
_setEnvVars({ ...sdkConfig.envVars, ...ndkConfig.envVars });
|
_alterPath(sdkConfig.path);
|
||||||
_alterPath([...sdkConfig.path, ...sdkConfig.path]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function formatShellAppTarballUriPath(sdkMajorVersion: string) {
|
function formatShellAppTarballUriPath(sdkMajorVersion: string) {
|
||||||
|
|||||||
@@ -1,53 +0,0 @@
|
|||||||
import os from 'os';
|
|
||||||
import path from 'path';
|
|
||||||
|
|
||||||
import decompress from 'decompress';
|
|
||||||
import fs from 'fs-extra';
|
|
||||||
|
|
||||||
import * as utils from 'turtle/bin/setup/utils/common';
|
|
||||||
import download from 'turtle/bin/setup/utils/downloader';
|
|
||||||
import config from 'turtle/config';
|
|
||||||
import logger from 'turtle/logger';
|
|
||||||
|
|
||||||
const ANDROID_NDK_URL = `https://dl.google.com/android/repository/android-ndk-r10e-${os.platform()}-x86_64.zip`;
|
|
||||||
|
|
||||||
const LOGGER_FIELDS = { buildPhase: 'setting up environment' };
|
|
||||||
const l = logger.child(LOGGER_FIELDS);
|
|
||||||
|
|
||||||
export default async function ensureAndroidNDKIsPresent() {
|
|
||||||
const androidNdkDir = path.join(config.directories.androidDependenciesDir, 'ndk');
|
|
||||||
await utils.removeDirectoryUnlessReady(androidNdkDir);
|
|
||||||
if (!(await fs.pathExists(androidNdkDir))) {
|
|
||||||
await fs.ensureDir(androidNdkDir);
|
|
||||||
const androidNdkDownloadPath = utils.formatArtifactDownloadPath(ANDROID_NDK_URL);
|
|
||||||
|
|
||||||
try {
|
|
||||||
l.info('Downloading Android NDK');
|
|
||||||
await fs.ensureDir(config.directories.artifactsDir);
|
|
||||||
await download(ANDROID_NDK_URL, androidNdkDownloadPath);
|
|
||||||
l.info('Decompressing Android NDK');
|
|
||||||
await decompress(androidNdkDownloadPath, androidNdkDir, { strip: 1 });
|
|
||||||
await utils.markDirectoryAsReady(androidNdkDir);
|
|
||||||
l.info('Android NDK installed successfully');
|
|
||||||
} catch (err) {
|
|
||||||
await fs.remove(androidNdkDir);
|
|
||||||
throw err;
|
|
||||||
} finally {
|
|
||||||
await fs.remove(androidNdkDownloadPath);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
envVars: _createEnvVars(androidNdkDir),
|
|
||||||
path: _createPaths(androidNdkDir),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function _createEnvVars(androidNdkDir: string) {
|
|
||||||
return {
|
|
||||||
ANDROID_NDK: androidNdkDir,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function _createPaths(androidNdkDir: string) {
|
|
||||||
return [androidNdkDir];
|
|
||||||
}
|
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import _url from 'url';
|
||||||
|
|
||||||
import { ExponentTools } from '@expo/xdl';
|
import { ExponentTools } from '@expo/xdl';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import uuid from 'uuid';
|
import uuid from 'uuid';
|
||||||
@@ -54,6 +56,13 @@ export function createBuilderAction({
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (cmd.publicUrl) {
|
||||||
|
const parsedPublicUrl = _url.parse(cmd.publicUrl);
|
||||||
|
if (parsedPublicUrl.protocol !== 'https:') {
|
||||||
|
throw new ErrorWithCommandHelp('--public-url is invalid - only HTTPS urls are supported');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const args = {
|
const args = {
|
||||||
releaseChannel: cmd.releaseChannel || 'default',
|
releaseChannel: cmd.releaseChannel || 'default',
|
||||||
buildType: cmd.type,
|
buildType: cmd.type,
|
||||||
@@ -92,6 +101,7 @@ const buildJobObject = async (
|
|||||||
{ releaseChannel, buildType, buildMode, username, publicUrl, projectDir }: any,
|
{ releaseChannel, buildType, buildMode, username, publicUrl, projectDir }: any,
|
||||||
credentials: any,
|
credentials: any,
|
||||||
) => {
|
) => {
|
||||||
|
const experienceName = `@${_.get(appJSON, 'expo.owner', username)}/${_.get(appJSON, 'expo.slug')}`;
|
||||||
const job = {
|
const job = {
|
||||||
config: {
|
config: {
|
||||||
..._.get(appJSON, `expo.${platform}.config`, {}),
|
..._.get(appJSON, `expo.${platform}.config`, {}),
|
||||||
@@ -106,7 +116,7 @@ const buildJobObject = async (
|
|||||||
platform,
|
platform,
|
||||||
projectDir,
|
projectDir,
|
||||||
sdkVersion: _.get(appJSON, 'expo.sdkVersion'),
|
sdkVersion: _.get(appJSON, 'expo.sdkVersion'),
|
||||||
experienceName: `@${username}/${_.get(appJSON, 'expo.slug')}`,
|
experienceName,
|
||||||
...(credentials && { credentials }),
|
...(credentials && { credentials }),
|
||||||
};
|
};
|
||||||
const url = getExperienceUrl(job.experienceName, job.config.publicUrl);
|
const url = getExperienceUrl(job.experienceName, job.config.publicUrl);
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ export default async function buildAndroid(jobData: IJob): Promise<IJobResult> {
|
|||||||
const s3FileExtension = jobData.config.buildType === ANDROID_BUILD_TYPES.APP_BUNDLE ? 'aab' : 'apk';
|
const s3FileExtension = jobData.config.buildType === ANDROID_BUILD_TYPES.APP_BUNDLE ? 'aab' : 'apk';
|
||||||
const s3Filename = `${jobData.experienceName}-${randomHex}-signed.${s3FileExtension}`;
|
const s3Filename = `${jobData.experienceName}-${randomHex}-signed.${s3FileExtension}`;
|
||||||
const s3FileKey = `android/${s3Filename}`;
|
const s3FileKey = `android/${s3Filename}`;
|
||||||
const fakeUploadFilename = s3Filename.replace('/', '\\');
|
const fakeUploadFilename = s3Filename.replace('/', '__');
|
||||||
|
|
||||||
const artifactUrl = await uploadBuildToS3({
|
const artifactUrl = await uploadBuildToS3({
|
||||||
uploadPath: outputFilePath,
|
uploadPath: outputFilePath,
|
||||||
|
|||||||
@@ -131,7 +131,7 @@ export function createBuilderContext(job: IJob): IContext {
|
|||||||
const s3FileExtension = buildType === IOS_BUILD_TYPES.SIMULATOR ? 'tar.gz' : 'ipa';
|
const s3FileExtension = buildType === IOS_BUILD_TYPES.SIMULATOR ? 'tar.gz' : 'ipa';
|
||||||
const s3Filename = `${job.experienceName}-${appUUID}-${buildType}.${s3FileExtension}`;
|
const s3Filename = `${job.experienceName}-${appUUID}-${buildType}.${s3FileExtension}`;
|
||||||
if (config.builder.fakeUpload) {
|
if (config.builder.fakeUpload) {
|
||||||
const fakeUploadFilename = s3Filename.replace('/', '\\');
|
const fakeUploadFilename = s3Filename.replace('/', '__');
|
||||||
context.fakeUploadBuildPath = job.fakeUploadBuildPath
|
context.fakeUploadBuildPath = job.fakeUploadBuildPath
|
||||||
? job.fakeUploadBuildPath
|
? job.fakeUploadBuildPath
|
||||||
: join(job.fakeUploadDir || config.directories.fakeUploadDir, fakeUploadFilename);
|
: join(job.fakeUploadDir || config.directories.fakeUploadDir, fakeUploadFilename);
|
||||||
|
|||||||
@@ -61,4 +61,4 @@ async function cleanup(ctx: IContext) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const getTemporaryDirs = (ctx: IContext) =>
|
const getTemporaryDirs = (ctx: IContext) =>
|
||||||
Object.values(pick(ctx, ['appDir', 'provisioningProfileDir']));
|
Object.values(pick(ctx, ['appDir', 'provisioningProfileDir'])) as string[];
|
||||||
@@ -36,6 +36,7 @@ export default async function runShellAppBuilder(ctx: IContext, job: IJob): Prom
|
|||||||
manifest,
|
manifest,
|
||||||
output: ctx.outputPath,
|
output: ctx.outputPath,
|
||||||
verbose: true,
|
verbose: true,
|
||||||
|
shellAppSdkVersion: sdkVersion,
|
||||||
};
|
};
|
||||||
if (buildType === IOS_BUILD_TYPES.CLIENT) {
|
if (buildType === IOS_BUILD_TYPES.CLIENT) {
|
||||||
Object.assign(shellAppParams, {
|
Object.assign(shellAppParams, {
|
||||||
|
|||||||
@@ -89,4 +89,7 @@ export default {
|
|||||||
path.join(os.platform() === 'darwin' ? '/private' : '/', 'tmp', 'turtle'),
|
path.join(os.platform() === 'darwin' ? '/private' : '/', 'tmp', 'turtle'),
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
|
www: {
|
||||||
|
sdkVersionsSecretToken: env('TURTLE_SDK_VERSIONS_SECRET_TOKEN'),
|
||||||
|
},
|
||||||
};
|
};
|
||||||
+23
-9
@@ -55,20 +55,34 @@ export async function getJob() {
|
|||||||
async function processJob(jobData: any) {
|
async function processJob(jobData: any) {
|
||||||
const receiptHandle = jobData.ReceiptHandle;
|
const receiptHandle = jobData.ReceiptHandle;
|
||||||
const { priority } = jobData;
|
const { priority } = jobData;
|
||||||
|
|
||||||
let timeoutId;
|
let timeoutId;
|
||||||
try {
|
try {
|
||||||
const rawJob = JSON.parse(jobData.Body);
|
let rawJob;
|
||||||
timeoutId = failAfterMaxJobTime(priority, receiptHandle, rawJob);
|
let job;
|
||||||
const job = await sanitizeJob(rawJob);
|
try {
|
||||||
|
rawJob = JSON.parse(jobData.Body);
|
||||||
|
timeoutId = failAfterMaxJobTime(priority, receiptHandle, rawJob);
|
||||||
|
logger.info(
|
||||||
|
{ buildJobId: rawJob.id, messageId: jobData.MessageId },
|
||||||
|
`Processing job with priority=${priority.slice(0, priority.length - 8)} timestamp=${Date.now()}`,
|
||||||
|
);
|
||||||
|
job = await sanitizeJob(rawJob);
|
||||||
|
} catch (err) {
|
||||||
|
logger.error({ err, ...rawJob && { buildJobId: rawJob.id } }, 'The build job is invalid');
|
||||||
|
// send message only if we've managed to parse the job json
|
||||||
|
if (rawJob) {
|
||||||
|
await sqs.sendMessage(rawJob.id, BUILD.JOB_STATES.ERRORED, {
|
||||||
|
turtleVersion,
|
||||||
|
buildDuration: 0,
|
||||||
|
reason: 'The build job is invalid',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
setCurrentJobId(job.id);
|
setCurrentJobId(job.id);
|
||||||
const pingerHandle = sqs.changeMessageVisibilityRecurring(priority, jobData.ReceiptHandle, job.id);
|
const pingerHandle = sqs.changeMessageVisibilityRecurring(priority, jobData.ReceiptHandle, job.id);
|
||||||
|
|
||||||
logger.info(
|
|
||||||
`Doing job MessageId=${jobData.MessageId} BuildId=${job.id} `
|
|
||||||
+ `Priority=${priority.slice(0, priority.length - 8)} ${Date.now()}`,
|
|
||||||
);
|
|
||||||
|
|
||||||
const cancelled = await redis.checkIfCancelled(job.id);
|
const cancelled = await redis.checkIfCancelled(job.id);
|
||||||
if (cancelled) {
|
if (cancelled) {
|
||||||
logger.info('The job has been cancelled');
|
logger.info('The job has been cancelled');
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
import EventEmitter from 'events';
|
import EventEmitter from 'events';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
|
|
||||||
|
|||||||
+8
-16
@@ -6,10 +6,7 @@ import { doJob } from 'turtle/jobManager';
|
|||||||
import logger from 'turtle/logger';
|
import logger from 'turtle/logger';
|
||||||
import setup from 'turtle/setup';
|
import setup from 'turtle/setup';
|
||||||
import { checkShouldExit, setShouldExit, turtleVersion } from 'turtle/turtleContext';
|
import { checkShouldExit, setShouldExit, turtleVersion } from 'turtle/turtleContext';
|
||||||
import { getRedisClient } from 'turtle/utils/redis';
|
import { setSupportedSdkVersions, setTurtleVersion } from 'turtle/utils/versions';
|
||||||
|
|
||||||
const REDIS_TURTLE_VERSION_KEY = 'turtle:version';
|
|
||||||
const REDIS_TURTLE_SUPPORTED_SDK_VERSIONS_KEY = `turtle:${config.platform}:sdkVersions`;
|
|
||||||
|
|
||||||
process.on('unhandledRejection', (err) => logger.error({ err }, 'Unhandled promise rejection'));
|
process.on('unhandledRejection', (err) => logger.error({ err }, 'Unhandled promise rejection'));
|
||||||
|
|
||||||
@@ -37,25 +34,20 @@ async function main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const redis = await getRedisClient();
|
await setTurtleVersion(turtleVersion);
|
||||||
if (redis) {
|
logger.info(`Registered Turtle version (${turtleVersion}) in www`);
|
||||||
await redis.set(REDIS_TURTLE_VERSION_KEY, turtleVersion);
|
const sdkVersions = (await findSupportedSdkVersions(config.platform)).map((version) => `${version}.0.0`);
|
||||||
logger.info(`Registered Turtle version (${turtleVersion}) in Redis`);
|
await setSupportedSdkVersions(config.platform, sdkVersions);
|
||||||
const sdkVersions = (await findSupportedSdkVersions(config.platform)).join(',');
|
logger.info(`Registered supported SDK versions (${sdkVersions}) in www`);
|
||||||
await redis.set(REDIS_TURTLE_SUPPORTED_SDK_VERSIONS_KEY, sdkVersions);
|
|
||||||
logger.info(`Registered supported SDK versions (${sdkVersions}) in Redis`);
|
|
||||||
} else {
|
|
||||||
logger.warn('Couldn\'t set supported SDK versions in Redis (failed to connect to Redis)');
|
|
||||||
}
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
logger.error({ err }, 'Failed to set versions in Redis');
|
logger.error({ err }, 'Failed to register versions in www');
|
||||||
}
|
}
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
try {
|
try {
|
||||||
await doJob();
|
await doJob();
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
logger.error({ err }, 'Failed to do a job');
|
logger.error({ err }, 'Failed to process a job');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,49 @@
|
|||||||
|
import { URL } from 'url';
|
||||||
|
|
||||||
|
import request from 'request-promise';
|
||||||
|
|
||||||
|
import config from 'turtle/config';
|
||||||
|
|
||||||
|
async function setSupportedSdkVersions(platform: string, sdkVersions: string[]) {
|
||||||
|
const { href } = new URL('/--/api/v2/standalone-build/setSupportedSDKVersions', resolveWWWEndpoint());
|
||||||
|
await request({
|
||||||
|
method: 'POST',
|
||||||
|
uri: href,
|
||||||
|
headers: {
|
||||||
|
'secret-token': config.www.sdkVersionsSecretToken,
|
||||||
|
},
|
||||||
|
body: {
|
||||||
|
platform,
|
||||||
|
sdkVersions,
|
||||||
|
},
|
||||||
|
json: true,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function setTurtleVersion(version: string) {
|
||||||
|
const { href } = new URL('/--/api/v2/standalone-build/setTurtleVersion', resolveWWWEndpoint());
|
||||||
|
await request({
|
||||||
|
method: 'POST',
|
||||||
|
uri: href,
|
||||||
|
headers: {
|
||||||
|
'secret-token': config.www.sdkVersionsSecretToken,
|
||||||
|
},
|
||||||
|
body: {
|
||||||
|
version,
|
||||||
|
},
|
||||||
|
json: true,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function resolveWWWEndpoint() {
|
||||||
|
const currentEnv = config.deploymentEnv;
|
||||||
|
if (currentEnv === 'production') {
|
||||||
|
return 'https://expo.io';
|
||||||
|
} else if (currentEnv === 'staging') {
|
||||||
|
return 'https://staging.expo.io';
|
||||||
|
} else {
|
||||||
|
return 'http://127.0.0.1:3000';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export { setSupportedSdkVersions, setTurtleVersion };
|
||||||
@@ -2,6 +2,9 @@ import * as schemas from 'turtle/jobsSchemas';
|
|||||||
|
|
||||||
export async function sanitizeJob(job: any) {
|
export async function sanitizeJob(job: any) {
|
||||||
const schema = (schemas as any)[job.platform];
|
const schema = (schemas as any)[job.platform];
|
||||||
|
if (!schema) {
|
||||||
|
throw new Error(`Unsupported platform: ${job.platform}`);
|
||||||
|
}
|
||||||
const { error, value } = schema.validate(job, { stripUnknown: true });
|
const { error, value } = schema.validate(job, { stripUnknown: true });
|
||||||
if (error) {
|
if (error) {
|
||||||
throw error;
|
throw error;
|
||||||
|
|||||||
+1
-1
@@ -1,3 +1,3 @@
|
|||||||
#! /usr/bin/env bash
|
#! /usr/bin/env bash
|
||||||
# This file was generated by nix-binstubs
|
# This file was generated by nix-binstubs
|
||||||
exec nix run -f "$(dirname "$0")/../../../nix" nodejs-8_x --command node "$@"
|
exec nix run -f "$(dirname "$0")/../../../nix" nodejs-12_x --command node "$@"
|
||||||
+1
-1
@@ -1,3 +1,3 @@
|
|||||||
#! /usr/bin/env bash
|
#! /usr/bin/env bash
|
||||||
# This file was generated by nix-binstubs
|
# This file was generated by nix-binstubs
|
||||||
exec nix run -f "$(dirname "$0")/../../../nix" nodejs-8_x --command npm "$@"
|
exec nix run -f "$(dirname "$0")/../../../nix" nodejs-12_x --command npm "$@"
|
||||||
+1
-1
@@ -1,3 +1,3 @@
|
|||||||
#! /usr/bin/env bash
|
#! /usr/bin/env bash
|
||||||
# This file was generated by nix-binstubs
|
# This file was generated by nix-binstubs
|
||||||
exec nix run -f "$(dirname "$0")/../../../nix" nodejs-8_x --command npx "$@"
|
exec nix run -f "$(dirname "$0")/../../../nix" nodejs-12_x --command npx "$@"
|
||||||
Reference in new issue
Block a user