Skip to content

Instantly share code, notes, and snippets.

@iynere
Last active September 27, 2017 01:30
Show Gist options
  • Select an option

  • Save iynere/db38b9039efb12aee800e0607287bc6f to your computer and use it in GitHub Desktop.

Select an option

Save iynere/db38b9039efb12aee800e0607287bc6f to your computer and use it in GitHub Desktop.
applicaster Dockerfile https://hub.docker.com/r/iynere/applicaster & config.yml
notify:
webhooks:
- url: https://zapp.applicaster.com/callbacks/build_status/circleci_builds
- url: https://zapp-dev.herokuapp.com/callbacks/build_status/circleci_builds
version: 2
jobs:
build:
working_directory: ~/zapp
docker:
- image: iynere/applicaster:java-ruby-node-v1
environment:
ANDROID_HOME: /home/circleci/android-sdk
JAVA_HOME: /usr/lib/jvm/java-1.8.0-openjdk-amd64
CIRCLE_ARTIFACTS: /home/circleci/zapp/artifacts
GRADLE_OPTS: '-Dorg.gradle.jvmargs="-Xmx4608M -XX:MaxPermSize=1024m -Xms512m -XX:+HeapDumpOnOutOfMemoryError"'
RAILS_ENV: test
RACK_ENV: test
steps:
- restore_cache:
key: zapp-v5-{{ .Branch }}-{{ .Revision }}
keys:
- zapp-v5-{{ .Branch }}-
- zapp-v5-
- checkout
- save_cache:
key: zapp-v5-{{ .Branch }}-{{ .Revision }}
paths:
- ".git"
- restore_cache:
key: zapp-v5-{{ checksum "Gemfile.lock" }}
- run: bundle check --path=/usr/local/bundle || bundle install --jobs=4 --retry=3
- save_cache:
key: zapp-v5-{{ checksum "Gemfile.lock" }}
paths:
- /usr/local/bundle
- run:
name: dependencies section
command: |
rm -rf ~/.gradle/caches
if [ -e ./gradlew ]; then ./gradlew dependencies; else gradle dependencies; fi
environment:
TERM: dumb
- run:
name: tests pre
command: |
if [ "$CIRCLE_BRANCH" = "release" ] || [ "$triggered_by" = "zapp" ];
then
echo "skipping default rake task"
else
set -eo
bundle exec rake
git checkout .
git clean -f -d
fi
- run:
name: tests 1
command: |
mkdir -p $CIRCLE_ARTIFACTS
if [ "$triggered_by" = "zapp" ];
then
rake build_zapp_pipes
fi
rake build_app
if [ "$flavor" = "tv" ];
then
./gradlew assembleTvDebug
else
./gradlew assembleMobileDebug
fi
cp -r app/build/outputs $CIRCLE_ARTIFACTS
- run:
name: tests 2
command: |
if [ -z "$flavor" ];
then
export flavor=mobile
fi
name=${bundle_identifier};
app_name_no_whitespaces=${bundle_identifier//[^a-zA-Z0-9]/_};
cp app/build/outputs/apk/app-${flavor}-debug.apk ${HOME}/${app_name_no_whitespaces}-debug.apk;
curl -F "private=false" -F "status=2" -F "notify=0" -F "notes=debug-${flavor}" -F "ipa=@${HOME}/${app_name_no_whitespaces}-debug.apk" -F "dsym=@app/build/outputs/mapping/${flavor}/debug/mapping.txt" -H "X-HockeyAppToken:${HOCKEY_APP_TOKEN}" https://rink.hockeyapp.net/api/2/apps/upload
- run:
name: tests 3
command: |
if [ -z "$key_store_url" ];
then
echo "debug only, skipping release version"
else
if [ "$flavor" = "tv" ];
then
./gradlew assembleTvRelease
else
export flavor=mobile
./gradlew assembleMobileRelease
fi
fi
- run:
name: tests 4
command: |
if [ -z "$key_store_url" ];
then
echo "no release apk"
else
if [ -z "$flavor" ];
then
flavor=mobile
fi
cp -r app/build/outputs $CIRCLE_ARTIFACTS
name=${bundle_identifier};
app_name_no_whitespaces=${bundle_identifier//[^a-zA-Z0-9]/_};
cp app/build/outputs/apk/app-${flavor}-release.apk ${HOME}/${app_name_no_whitespaces}.apk;
path_to_release_apk=${HOME}/${app_name_no_whitespaces}.apk
path_to_release_mapping=app/build/outputs/mapping/${flavor}/release/mapping.txt
curl -F "private=false" -F "status=2" -F "notify=0" -F "notes=store version-${flavor}" -F "ipa=@${path_to_release_apk}" -F "dsym=@${path_to_release_mapping}" -H "X-HockeyAppToken:${HOCKEY_APP_TOKEN}" https://rink.hockeyapp.net/api/2/apps/upload
fi
- store_artifacts:
path: artifacts
FROM circleci/ruby:2.2-node-browsers
USER root
# remove Ruby 2.2.8
RUN rm -rf /usr/local/bin/ruby
# install Ruby 2.1.5
RUN wget https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.5.tar.gz && \
tar -xzvf ruby-2.1.5.tar.gz && \
rm ruby-2.1.5.tar.gz && \
cd ruby-2.1.5 && \
./configure --with-openssl-dir=/usr/bin && \
make -j4 && \
sudo make install && \
cd .. && \
rm -r ruby-2.1.5
# install Bundler
RUN gem install bundler && \
mkdir -p /usr/local/bundle && \
chown -R circleci /usr/local/bundle
# remove Node 8.5.0
RUN rm -f \
/usr/local/bin/node \
/usr/local/bin/nodejs \
/usr/local/bin/npm \
/usr/local/bin/npx \
/usr/local/share/man/man1/node.1 \
/usr/local/share/systemtap/tapset/node.stp
RUN rm -rf \
/usr/local/lib/node_modules \
/usr/local/include/node \
/usr/local/share/doc/node
# install Node 8.0.0
RUN wget https://nodejs.org/dist/v8.0.0/node-v8.0.0.tar.gz && \
tar -xzvf node-v8.0.0.tar.gz && \
rm node-v8.0.0.tar.gz && \
cd node-v8.0.0 && \
./configure && \
make -j4 && \
make install && \
cd .. && \
rm -r node-v8.0.0
# install Imagemagick, etc.
RUN apt-get install -y imagemagick libmagickcore-dev libmagickwand-dev libept1.4.12 aptitude
# install Android SDK
RUN wget https://dl.google.com/android/repository/tools_r25.2.5-linux.zip && \
unzip -d /home/circleci/android-sdk tools_r25.2.5-linux.zip && \
rm -f tools_r25.2.5-linux.zip
ENV PATH=$PATH:/home/circleci/android-sdk/tools:/home/circleci/android-sdk/tools/bin:/home/circleci/android-sdk/tools/bin64:/home/circleci/android-sdk/tools/lib:/home/circleci/android-sdk/tools/lib64:/home/circleci/android-sdk/tools/qemu/linux-x86_64
# install Google APIs
RUN ( sleep 5 && while [ 1 ]; do sleep 1; echo y; done ) | android update sdk --no-ui --all --filter build-tools-23.0.2,build-tools-25.0.2,platform-tools,android-25,tool,extra-android-m2repository,extra-android-support,extra-google-google_play_services,extra-google-m2repository
# clean up temp, fix permissions, make sure android CLI is installed
RUN unzip -d /home/circleci/android-sdk /home/circleci/android-sdk/temp/tools_r25.2.5-linux.zip && \
rm -rf /home/circleci/android-sdk/temp && \
chown -R circleci /home/circleci/android-sdk
USER circleci
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment