Compare commits

..
Author SHA1 Message Date
Quinlan Jung 5c629b3a16 add shellAppSdkVersion param to iosShellAppBuilder 2019-11-15 13:44:03 -08:00
37 changed files with 2600 additions and 3042 deletions

No files matched your search

+7 -7
View File
@@ -115,7 +115,7 @@ commands:
default: ios default: ios
sdk_version: sdk_version:
type: string type: string
default: sdk36 default: sdk32
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: sdk36 default: sdk32
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: sdk35 sdk_version: sdk32
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: sdk35 sdk_version: sdk32
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: sdk36 sdk_version: sdk32
platform: android platform: android
- run: - run:
name: Fetch Android shell app name: Fetch Android shell app
command: SDK_VERSION=sdk36 ./scripts/android/fetchRemoteAndroidTarball.sh command: SDK_VERSION=sdk32 ./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: sdk36 sdk_version: sdk32
platform: android platform: android
android_staging_deploy: android_staging_deploy:
+2 -2
View File
@@ -1,3 +1,5 @@
!/src/node_modules
node_modules node_modules
yarn-error.log yarn-error.log
google-cloud-credentials.json google-cloud-credentials.json
@@ -5,8 +7,6 @@ google-cloud-credentials.json
/build/ /build/
/workingdir/* /workingdir/*
/artifacts/* /artifacts/*
.history
shell.apk shell.apk
.secrets* .secrets*
+1 -1
View File
@@ -1 +1 @@
v12.16.1 v8.15.1
-115
View File
@@ -7,121 +7,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## Unreleased ## Unreleased
### Added
- Added iOS shell app for SDK 37.
- Added Android shell app for SDK 37.
### 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 ## [0.12.9] - 2019-11-14
### Added ### Added
+1 -1
View File
@@ -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.4.0 FROM gcr.io/exponentjs/turtle-android-base:0.1.0
ADD . /app/turtle ADD . /app/turtle
+1 -12
View File
@@ -3,18 +3,7 @@
const subcommand = process.argv[2]; const subcommand = process.argv[2];
if (subcommand) { if (subcommand) {
let platform; const [, platform] = subcommand.split(':');
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;
-1
View File
@@ -1 +0,0 @@
configureAndroidSdk.sh
+31 -26
View File
@@ -17,7 +17,6 @@ RUN dpkg --add-architecture i386 && \
build-essential\ build-essential\
bzip2:i386\ bzip2:i386\
file\ file\
jq\
lib32ncurses5\ lib32ncurses5\
lib32z1\ lib32z1\
libc6:i386\ libc6:i386\
@@ -32,7 +31,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 12.16.1 ENV NODE_VERSION 8.12.0
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 \
@@ -55,33 +54,39 @@ 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 configureAndroidSdk.sh /tmp/configureAndroidSdk.sh ADD scripts/android/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 5.6.3 # Install gradle
RUN wget https://services.gradle.org/distributions/gradle-5.6.3-all.zip RUN wget https://services.gradle.org/distributions/gradle-4.4-all.zip
RUN unzip -qq gradle-5.6.3-all.zip RUN unzip -qq gradle-4.4-all.zip
RUN cp -r gradle-5.6.3 /usr/local RUN mv gradle-4.4 /usr/local
RUN rm gradle-4.4-all.zip
RUN mkdir -p /root/.gradle/wrapper/dists/gradle-5.6.3-all/7wpcz6s7ut7bllr9k6e1hazxc ENV GRADLE_HOME /usr/local/gradle-4.4
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
+1 -1
View File
@@ -1,5 +1,5 @@
self: super: self: super:
{ {
nodejs = super.nodejs-12_x; nodejs = super.nodejs-8_x;
} }
+21 -87
View File
@@ -2,78 +2,11 @@ with (import ./default.nix {});
let let
# These expressions can be deleted when react native depends on version of ndk = androidenv.androidndk_17c.override { fullNDK = true; };
# ndk present in nixpkgs. ndk_root = "${ndk}/libexec/${ndk.name}";
os = if stdenv.system == "x86_64-linux" then "linux" sdk_path = if stdenv.isDarwin
else if stdenv.system == "x86_64-darwin" then "macosx" else throw "unsupported system architecture: ${stdenv.system}"; then "/Library/Android/sdk"
ndk_17c_src = if stdenv.isDarwin then fetchurl { else "/Android/Sdk"; # intentional Capital S
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
@@ -90,27 +23,28 @@ mkShell rec {
nativeBuildInputs = [ nativeBuildInputs = [
awscli awscli
curl curl
fastlane
git git
nodejs nodejs-8_x
openjdk8 openjdk8
yarn yarn
]; ];
passthru = { inherit ndk ndkRoot; }; passthru = { inherit ndk; };
shellHook = '' shellHook = ''
${./install-ndk-17c.sh} ${ndk} ${ndkRoot} ${./install-ndk-17c.sh} ${ndk} ${ndk_root}
# grep -v = should clean up build logs, see https://stackoverflow.com/a/52464819/1123156 yes | ${androidenv.androidsdk_9_0}/bin/sdkmanager --licenses --sdk_root="$ANDROID_SDK_ROOT"
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" "platforms;android-28" | grep -v =
'' + lib.optionalString stdenv.isLinux '' yes | ${androidenv.androidsdk_9_0}/bin/sdkmanager --sdk_root="$ANDROID_SDK_ROOT" "build-tools;28.0.3" | grep -v =
for dep in lib lib64; do ${lib.optionalString stdenv.isLinux ''
if [ -L /$dep ] || [ ! -e /$dep ]; then for dep in lib lib64; do
echo "Creating /$dep" if [ -L /$dep ] || [ ! -e /$dep ]; then
ln -s ${stdenv.cc.libc}/$dep /$dep echo "Creating /$dep"
else ln -s ${stdenv.cc.libc}/$dep /$dep
echo "Using existing /$dep" else
fi echo "Using existing /$dep"
done fi
done
''}
''; '';
} }
+3 -3
View File
@@ -1,7 +1,7 @@
{ {
"url": "https://github.com/NixOS/nixpkgs-channels.git", "url": "https://github.com/NixOS/nixpkgs-channels.git",
"rev": "42f0be81ae05a8fe6d6e8e7f1c28652e7746e046", "rev": "80738ed9dc0ce48d7796baed5364eef8072c794d",
"date": "2020-03-01T07:21:40-03:00", "date": "2018-11-17T11:18:10+01:00",
"sha256": "1rxb5kmghkzazqcv4d8yczdiv2srs4r7apx4idc276lcikm0hdmf", "sha256": "0anmvr6b47gbbyl9v2fn86mfkcwgpbd5lf0yf3drgm8pbv57c1dc",
"fetchSubmodules": false "fetchSubmodules": false
} }
+9 -15
View File
@@ -1,6 +1,6 @@
{ {
"name": "turtle-cli", "name": "turtle-cli",
"version": "0.13.10", "version": "0.12.9",
"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,9 +22,7 @@
"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",
@@ -55,7 +53,7 @@
"react-native" "react-native"
], ],
"engines": { "engines": {
"node": ">=10" "node": ">=8"
}, },
"author": "Expo <[email protected]>", "author": "Expo <[email protected]>",
"license": "MIT", "license": "MIT",
@@ -86,13 +84,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": "^25.1.0", "jest": "^23.6.0",
"lint-staged": "^8.1.5", "lint-staged": "^8.1.5",
"nock": "^10.0.1", "nock": "^10.0.1",
"nodemon": "^2.0.2", "nodemon": "^1.18.11",
"release-it": "^12.3.4", "release-it": "^12.3.4",
"rimraf": "^2.6.2", "rimraf": "^2.6.2",
"ts-jest": "^25.2.1", "ts-jest": "^23.10.4",
"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",
@@ -103,8 +101,8 @@
}, },
"dependencies": { "dependencies": {
"@expo/spawn-async": "^1.4.2", "@expo/spawn-async": "^1.4.2",
"@expo/xdl": "57.5.2", "@expo/xdl": "56.5.0",
"@google-cloud/logging-bunyan": "^2.0.3", "@google-cloud/logging-bunyan": "^0.9.5",
"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",
@@ -125,17 +123,13 @@
"request-progress": "^3.0.0", "request-progress": "^3.0.0",
"request-promise": "^4.2.5", "request-promise": "^4.2.5",
"semver": "^6.0.0", "semver": "^6.0.0",
"sharp": "0.24.1", "sharp": "0.22.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.11.4" "@expo/traveling-fastlane-darwin": "1.9.9"
},
"volta": {
"node": "12.16.1",
"yarn": "1.22.0"
} }
} }
@@ -3,8 +3,6 @@
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
@@ -15,12 +13,10 @@ 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 $DOCKER_BASE_DIR > /dev/null pushd $ROOT_DIR > /dev/null
cp $CONFIGURE_ANDROID_SDK_PATH . echo docker build -f docker-base/Dockerfile -t "$IMAGE_VERSION_FULL_NAME" -t "$IMAGE_LATEST_FULL_NAME" .
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"
gcloud docker -- push "$IMAGE_VERSION_FULL_NAME" echo gcloud docker -- push "$IMAGE_VERSION_FULL_NAME"
gcloud docker -- push "$IMAGE_LATEST_FULL_NAME" echo 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
-2
View File
@@ -18,5 +18,3 @@ 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 ]]
+1 -1
View File
@@ -23,6 +23,6 @@ export DATADOG_DISABLED="true"
export TURTLE_SDK_VERSIONS_SECRET_TOKEN="noop" 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=sdk35 $ROOT_DIR/scripts/ios/fetchRemoteIosTarball.sh SDK_VERSION=sdk32 $ROOT_DIR/scripts/ios/fetchRemoteIosTarball.sh
yarn test:smoke:ios yarn test:smoke:ios
+1
View File
@@ -0,0 +1 @@
s3://exp-artifacts/android-shell-builder-89b2d24c86737d5a489c6a18467e31b2f9ce9005.tar.gz
+1
View File
@@ -0,0 +1 @@
s3://exp-artifacts/android-shell-builder-f796aaffa0b5715079b2950faf26c2ff4e53e4c0.tar.gz
+1
View File
@@ -0,0 +1 @@
s3://exp-artifacts/android-shell-builder-aebd669d6573b0b3c802871d94cdb8b4116678d2.tar.gz
-1
View File
@@ -1 +0,0 @@
s3://exp-artifacts/android-shell-builder-bb08bdc180fccd8f90e99dafb4e0ac456232531b.tar.gz
-1
View File
@@ -1 +0,0 @@
s3://exp-artifacts/android-shell-builder-1a6203cf1555c3b956a311ed539eafeb7594f030.tar.gz
+1 -1
View File
@@ -1 +1 @@
s3://exp-artifacts/ios-expo-client-aadfc350d8e4ebf8dce9ce08723bb7e07d563846.tar.gz s3://exp-artifacts/ios-expo-client-d31aaf53daca6aa65d8cb1090fb60c73a9c47075.tar.gz
+1
View File
@@ -0,0 +1 @@
s3://exp-artifacts/ios-shell-builder-sdk-latest-55848298c7332f7586c4281fa691a4ca31548532.tar.gz
+1
View File
@@ -0,0 +1 @@
s3://exp-artifacts/ios-shell-builder-sdk-latest-edd02214dd84368c197df32a2d30a901d6c766ff.tar.gz
+1
View File
@@ -0,0 +1 @@
s3://exp-artifacts/ios-shell-builder-sdk-latest-36b57e8ebb96aa8dce286c89bd56e8708eca819d.tar.gz
-1
View File
@@ -1 +0,0 @@
s3://exp-artifacts/ios-shell-builder-sdk-latest-661a51216c2241dcfdd930517968cd1d0e0ee237.tar.gz
-1
View File
@@ -1 +0,0 @@
s3://exp-artifacts/ios-shell-builder-sdk-latest-aadfc350d8e4ebf8dce9ce08723bb7e07d563846.tar.gz
Binary file not shown.
+1 -1
View File
@@ -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), only HTTPS URLs are supported!', 'the URL of an externally hosted manifest (for self-hosted apps).',
) )
.option( .option(
'--release-channel <channel-name>', '--release-channel <channel-name>',
+9 -10
View File
@@ -5,6 +5,7 @@ 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';
@@ -22,8 +23,7 @@ const REQUIRED_TOOLS: IToolDefinition[] = [
}, },
{ {
command: 'javac', command: 'javac',
missingDescription: missingDescription: `Please install JDK (version ${JAVA_REQUIRED_VERSION}) - check https://jdk.java.net/`,
`Please install JDK 8 - keep in mind that other versions are not supported by Android`,
testFn: async () => { testFn: async () => {
const { status, stdout, stderr } = await ExponentTools.spawnAsyncThrowError( const { status, stdout, stderr } = await ExponentTools.spawnAsyncThrowError(
'java', 'java',
@@ -34,13 +34,11 @@ const REQUIRED_TOOLS: IToolDefinition[] = [
return false; return false;
} }
const matchResult = stderr.match(/.*version "(.*)"/); const matchResult = stderr.match(/.*version ".*\.(.*)\..*"/);
if (matchResult) { if (matchResult) {
const [, currentFullJavaVersion] = matchResult; const [, currentJavaVersion] = matchResult;
const javaMajorVersionPosition = currentFullJavaVersion.startsWith('1.') ? 1 : 0; if (Number(currentJavaVersion) !== JAVA_REQUIRED_VERSION) {
const javaMajorVersion = Number(currentFullJavaVersion.split('.')[javaMajorVersionPosition]); throw new Error(`You're using a wrong Java version, please install version ${JAVA_REQUIRED_VERSION}`);
if (javaMajorVersion !== JAVA_REQUIRED_VERSION) {
throw new Error(`You're on Java ${currentFullJavaVersion}, please install version ${JAVA_REQUIRED_VERSION}`);
} }
} else { } else {
logger.warn(`Couldn't find Java version number, assuming you're on Java ${JAVA_REQUIRED_VERSION}...`); logger.warn(`Couldn't find Java version number, assuming you're on Java ${JAVA_REQUIRED_VERSION}...`);
@@ -68,8 +66,9 @@ 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();
_setEnvVars(sdkConfig.envVars); const ndkConfig = await ensureAndroidNDKIsPresent();
_alterPath(sdkConfig.path); _setEnvVars({ ...sdkConfig.envVars, ...ndkConfig.envVars });
_alterPath([...sdkConfig.path, ...sdkConfig.path]);
} }
function formatShellAppTarballUriPath(sdkMajorVersion: string) { function formatShellAppTarballUriPath(sdkMajorVersion: string) {
+53
View File
@@ -0,0 +1,53 @@
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 -11
View File
@@ -1,5 +1,3 @@
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';
@@ -56,13 +54,6 @@ 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,
@@ -101,7 +92,6 @@ 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`, {}),
@@ -116,7 +106,7 @@ const buildJobObject = async (
platform, platform,
projectDir, projectDir,
sdkVersion: _.get(appJSON, 'expo.sdkVersion'), sdkVersion: _.get(appJSON, 'expo.sdkVersion'),
experienceName, experienceName: `@${username}/${_.get(appJSON, 'expo.slug')}`,
...(credentials && { credentials }), ...(credentials && { credentials }),
}; };
const url = getExperienceUrl(job.experienceName, job.config.publicUrl); const url = getExperienceUrl(job.experienceName, job.config.publicUrl);
+1 -1
View File
@@ -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,
+1 -1
View File
@@ -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);
+1 -1
View File
@@ -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-12_x --command node "$@" exec nix run -f "$(dirname "$0")/../../../nix" nodejs-8_x --command node "$@"
+1 -1
View File
@@ -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-12_x --command npm "$@" exec nix run -f "$(dirname "$0")/../../../nix" nodejs-8_x --command npm "$@"
+1 -1
View File
@@ -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-12_x --command npx "$@" exec nix run -f "$(dirname "$0")/../../../nix" nodejs-8_x --command npx "$@"
+2442 -2728
View File
File diff suppressed because it is too large. Load diff