version: 2 defaults: &defaults docker: - image: debian:latest jobs: sanity_check: docker: - image: circleci/android:api-29-ndk steps: - checkout - run: name: run sanity check script command: bash scripts/ci_sanity_checks.sh - run: name: Run CheckStyle Test command: ./gradlew checkstyleMain - store_artifacts: name: Store checkstyle report path: navit/android/checkstyle destination: reports build_linux: <<: *defaults steps: - checkout - run: | apt-get update && apt-get install -y git if scripts/check_need_build.sh; then circleci step halt; fi - run: name: Id command: cat /etc/*release - run: name: Setup requirements command: | bash scripts/setup_common_requirements.sh apt-get install -y libpng-dev libfreetype6-dev libdbus-glib-1-dev libgtk2.0-dev curl - run: name: Build for Linux command: bash scripts/build_linux.sh - store_artifacts: path: linux/_CPack_Packages - run: name: Update Navit-Download-Center command: | bash scripts/update_download_center.sh run_doxygen: <<: *defaults steps: - checkout - run: if scripts/check_need_build.sh; then circleci step halt; fi - run: name: Install doxygen and other essentials command: apt-get update && apt-get -y install doxygen ca-certificates git rsync - run: name: Run doxygen command: cd navit && doxygen - run: name: Update results to Github command: bash scripts/update_doxygen.sh - store_artifacts: path: /root/project/doc build_sailfish: machine: true steps: - checkout - run: if scripts/check_need_build.sh; then circleci step halt; fi - run: name: make build dir command: mkdir ../rpmbuild && chmod 777 ../rpmbuild - run: name: run build command: ls -lah ../rpmbuild && docker run -e VERSION_ID=3.4.0.24 -v `pwd`/../rpmbuild:/home/nemo/rpmbuild:rw -v `pwd`:/home/nemo/navit coderus/sailfishos-platform-sdk:3.4.0.24 /bin/bash -x /home/nemo/navit/contrib/sailfish/build_sailfish_ci.sh - store_artifacts: name: Store rpm path: ../rpmbuild/RPMS/ destination: rpmbuild build_android: working_directory: ~/code docker: - image: circleci/android:api-29-ndk environment: JVM_OPTS: -Xmx3200m GRADLE_OPTS: '-Dorg.gradle.jvmargs="-Xmx2048m -XX:+HeapDumpOnOutOfMemoryError"' KEYSTORE: '/home/circleci/.keystore' steps: - checkout - run: if scripts/check_need_build.sh; then circleci step halt; fi - run: name: Install requirements command: scripts/setup_android.sh - run: name: Setup Keystore and Playstore Keys command: scripts/setup_publish_keys.sh - run: name: Build and upload Android command: fastlane circleci - run: name: Run Lint Test command: | ln -s navit/navit.dtd navit.dtd mkdir /home/circleci/code/test-results ./gradlew lint test - run: name: Run Javadoc command: ./gradlew generateDebugJavadoc - store_artifacts: name: Store APK path: build/outputs/apk destination: apk - store_artifacts: name: Store logs path: build/outputs/logs destination: logs - store_artifacts: name: Store Javadoc path: build/outputs/docs/javadoc destination: doc - store_artifacts: name: Store Lint reports path: build/reports destination: reports - store_test_results: path: test-results - run: name: Update Navit-Download-Center command: | bash scripts/update_download_center.sh build_fdroid: docker: - image: registry.gitlab.com/fdroid/fdroidserver:buildserver-bullseye steps: - checkout - run: name: Build with F-Droid command: | # Mostly copied from fdroidserver’s own CI script (fdroid build), except for everything marked APP_CI apt-get update apt-get dist-upgrade apt-get clean test -n "$fdroidserver" || source /etc/profile.d/bsenv.sh # APP_CI: we need to install fdroidserver from source, directly into $fdroidserver, and set ownership accordingly test -d $fdroidserver || mkdir -p $fdroidserver git ls-remote https://gitlab.com/fdroid/fdroidserver.git master curl --silent https://gitlab.com/fdroid/fdroidserver/-/archive/master/fdroidserver-master.tar.gz | tar -xz --directory=$fdroidserver --strip-components=1 chown -R vagrant $fdroidserver # TODO remove sdkmanager install once it is included in the buildserver image apt-get install sdkmanager rm -rf "$ANDROID_HOME/tools" # TODO remove once sdkmanager can upgrade installed packages sdkmanager "tools" "platform-tools" "build-tools;31.0.0" # APP_CI: # Skip fdroiddata download as we’re building from our own recipe. # Since we are not fetching source code but building from the project dir, we need to modify permissions: # - Since we are in another user’s home dir, we grant permissions via group. # - git needs read/execute on all parents of the source code dir. # - fdroid creates subdirs, so the source code dir must be writable. # $home_vagrant/.android gets created and chowned just like on fdroidserver CI. chgrp -R vagrant $PWD chmod -R g+r $PWD chmod g+w $PWD chgrp vagrant .. chmod g+rx-w .. test -d $home_vagrant/.android || mkdir $home_vagrant/.android chown -R vagrant $home_vagrant/.android # APP_CI: for some reason fdroid complains about missing git but runs fine when the warning is suppressed export GRADLE_USER_HOME=$home_vagrant/.gradle export fdroid="sudo --preserve-env --user vagrant env PATH=$fdroidserver:$PATH env PYTHONPATH=$fdroidserver:$fdroidserver/examples env PYTHONUNBUFFERED=true env TERM=$TERM env HOME=$home_vagrant env GIT_PYTHON_REFRESH=quiet fdroid" chown -R vagrant $home_vagrant # APP_CI: just build our own app $fdroid build --verbose --on-server --no-tarball - store_artifacts: name: Store APK path: unsigned destination: apk build_win32: docker: - image: ubuntu:14.04 steps: - checkout - run: | apt-get update && apt-get install -y git if scripts/check_need_build.sh; then circleci step halt; fi - run: name: Prepare the Windows build environment command: | apt-get update && xargs -a scripts/setup_14.04_requirements.list apt-get install -y apt-get install -y software-properties-common add-apt-repository -y ppa:george-edison55/cmake-3.x apt-get remove -y cmake apt-get install -y cmake3 mingw-w64 mingw-w64-tools default-jdk nsis libsaxonb-java curl - run: name: Build for Windows command: | bash scripts/build_win32.sh - store_artifacts: path: win32/navit.exe - run: name: Update Navit-Download-Center command: | bash scripts/update_download_center.sh build_wince: docker: - image: navit/dockerfiles:wince steps: - checkout - run: | apt-get update && apt-get install -y git-core if scripts/check_need_build.sh; then circleci step halt; fi - run: name: Prepare the WinCE build environment command: | bash scripts/setup_wince.sh - run: name: Build for Windows CE command: bash scripts/build_wince.sh - store_artifacts: path: wince/output #- run: # name: Update Navit-Download-Center # command: | # bash scripts/update_download_center.sh build_tomtom_minimal: <<: *defaults docker: - image: navit/tomtom-ng steps: - checkout - run: if scripts/check_need_build.sh; then circleci step halt; fi - run: name: Prepare the tomtom build environment command: | bash scripts/setup_common_requirements.sh apt-get install -y xsltproc - run: name: Build for Tomtom (minimal) command: | bash scripts/build_tomtom_minimal.sh - store_artifacts: path: /output - run: name: Update Navit-Download-Center command: | bash scripts/update_download_center.sh build_tomtom_plugin: <<: *defaults docker: - image: navit/tomtom-ng steps: - checkout - run: if scripts/check_need_build.sh; then circleci step halt; fi - run: name: Prepare the tomtom build environment command: | bash scripts/setup_common_requirements.sh apt-get install -y xsltproc - run: name: Build for Tomtom (plugin) command: | bash scripts/build_tomtom_plugin.sh - store_artifacts: path: /output - run: name: Update Navit-Download-Center command: | bash scripts/update_download_center.sh merge_trunk_in_master: docker: - image: cimg/base:2020.01 steps: - checkout - run: name: configure ssh git command: mkdir -p ~/.ssh/ && ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts - add_ssh_keys: fingerprints: - "58:42:73:90:cc:68:f7:34:7e:37:37:fa:b3:26:1f:a5" - run: name: Update results to Github command: export GIT_TERMINAL_PROMPT=0 && git push origin $CIRCLE_SHA1:refs/heads/master check_spelling: <<: *defaults steps: - checkout - run: name: Install curl command: apt-get update && apt-get -y install curl - run: name: Install misspell command: | curl -L -o ./install-misspell.sh https://git.io/misspell sh ./install-misspell.sh -b /usr/local/bin/ - run: name: Check docs folder for misspells command: | misspell docs/ > typos.txt if [[ $( wc -l < typos.txt ) -gt 0 ]]; then echo "Typos/mispells found, please fix them"; cat typos.txt exit -1 fi workflows: version: 2 build_all: jobs: - sanity_check - build_linux: requires: - sanity_check - build_android: requires: - sanity_check - build_fdroid: requires: - sanity_check - build_sailfish: requires: - sanity_check - build_win32: requires: - sanity_check - build_wince: requires: - sanity_check - build_tomtom_minimal: requires: - sanity_check - build_tomtom_plugin: requires: - sanity_check - run_doxygen: requires: - build_linux - build_android - build_win32 - build_wince - build_tomtom_minimal - build_tomtom_plugin filters: branches: only: /^trunk$/ - merge_trunk_in_master: requires: - build_linux - build_android - build_win32 - build_wince - build_tomtom_minimal - build_tomtom_plugin filters: branches: only: /^trunk$/ - check_spelling: filters: branches: only: /^readthedocs$/