task: container: image: $ELECTRUM_IMAGE cpu: 1 memory: 1G matrix: - name: Tox Python $ELECTRUM_PYTHON_VERSION env: ELECTRUM_IMAGE: python:$ELECTRUM_PYTHON_VERSION TOXENV: py3 ELECTRUM_PYTHON_NAME: python3 matrix: - env: ELECTRUM_PYTHON_VERSION: 3.8 - env: ELECTRUM_PYTHON_VERSION: 3.9 - env: ELECTRUM_PYTHON_VERSION: 3.10 - env: ELECTRUM_PYTHON_VERSION: 3 - env: ELECTRUM_PYTHON_VERSION: rc - name: Tox PyPy allow_failures: true env: ELECTRUM_IMAGE: pypy:3 TOXENV: pypy3 ELECTRUM_PYTHON_NAME: pypy3 pip_cache: folder: ~/.cache/pip fingerprint_script: echo $ELECTRUM_IMAGE && cat $ELECTRUM_REQUIREMENTS_CI && cat $ELECTRUM_REQUIREMENTS version_script: - $ELECTRUM_PYTHON_NAME --version tag_script: - git tag install_script: - apt-get update - apt-get -y install libsecp256k1-0 - pip install -r $ELECTRUM_REQUIREMENTS_CI tox_script: - tox coveralls_script: - if [ ! -z "$COVERALLS_REPO_TOKEN" ] ; then coveralls ; fi env: ELECTRUM_REQUIREMENTS_CI: contrib/requirements/requirements-ci.txt ELECTRUM_REQUIREMENTS: contrib/requirements/requirements.txt # following CI_* env vars are set up for coveralls CI_NAME: "CirrusCI" CI_BUILD_NUMBER: $CIRRUS_BUILD_ID CI_JOB_ID: $CIRRUS_TASK_ID CI_BUILD_URL: "https://cirrus-ci.com/task/$CIRRUS_TASK_ID" CI_BRANCH: $CIRRUS_BRANCH CI_PULL_REQUEST: $CIRRUS_PR # in addition, COVERALLS_REPO_TOKEN is set as an "override" in https://cirrus-ci.com/settings/... task: name: Locale container: image: $ELECTRUM_IMAGE cpu: 1 memory: 1G pip_cache: folder: ~/.cache/pip fingerprint_script: echo Locale && echo $ELECTRUM_IMAGE && cat $ELECTRUM_REQUIREMENTS_CI install_script: - apt-get update - apt-get -y install gettext - pip install -r $ELECTRUM_REQUIREMENTS_CI - pip install requests locale_script: - contrib/push_locale env: ELECTRUM_IMAGE: python:3.8 ELECTRUM_REQUIREMENTS_CI: contrib/requirements/requirements-ci.txt # in addition, crowdin_api_key is set as an "override" in https://cirrus-ci.com/settings/... depends_on: - Tox Python 3.9 only_if: $CIRRUS_BRANCH == 'master' task: name: Regtest functional tests compute_engine_instance: image_project: cirrus-images image: family/docker-builder platform: linux cpu: 1 memory: 1G pip_cache: folder: ~/.cache/pip fingerprint_script: echo Regtest && echo docker_builder && cat $ELECTRUM_REQUIREMENTS bitcoind_cache: folder: /tmp/bitcoind populate_script: mkdir -p /tmp/bitcoind install_script: - apt-get update - apt-get -y install libsecp256k1-0 curl jq bc - pip3 install .[tests] # install e-x some commits after 1.16.0 tag, where it uses same aiorpcx as electrum - pip3 install git+https://github.com/spesmilo/electrumx.git@c8d2cc0d5cf9e549a90ca876d85fed9a90b8c4ed - "BITCOIND_VERSION=$(curl https://bitcoincore.org/en/download/ | grep -E -i --only-matching 'Latest version: [0-9\\.]+' | grep -E --only-matching '[0-9\\.]+')" - BITCOIND_FILENAME=bitcoin-$BITCOIND_VERSION-x86_64-linux-gnu.tar.gz - BITCOIND_PATH=/tmp/bitcoind/$BITCOIND_FILENAME - BITCOIND_URL=https://bitcoincore.org/bin/bitcoin-core-$BITCOIND_VERSION/$BITCOIND_FILENAME - tar -xaf $BITCOIND_PATH || (rm -f /tmp/bitcoind/* && curl --output $BITCOIND_PATH $BITCOIND_URL && tar -xaf $BITCOIND_PATH) - cp -a bitcoin-$BITCOIND_VERSION/* /usr/ bitcoind_service_background_script: - electrum/tests/regtest/run_bitcoind.sh electrumx_service_background_script: - electrum/tests/regtest/run_electrumx.sh regtest_script: - sleep 10s - python3 -m unittest electrum/tests/regtest.py env: ELECTRUM_REQUIREMENTS: contrib/requirements/requirements.txt # ElectrumX exits with an error without this: ALLOW_ROOT: 1 task: container: image: $ELECTRUM_IMAGE cpu: 1 memory: 1G pip_cache: folder: ~/.cache/pip fingerprint_script: echo Flake8 && echo $ELECTRUM_IMAGE && cat $ELECTRUM_REQUIREMENTS install_script: - pip install flake8 flake8_script: - flake8 . --count --select=$ELECTRUM_LINTERS --show-source --statistics env: ELECTRUM_IMAGE: python:3.8 ELECTRUM_REQUIREMENTS: contrib/requirements/requirements.txt matrix: - name: Flake8 Mandatory env: # list of error codes: # - https://flake8.pycqa.org/en/latest/user/error-codes.html # - https://pycodestyle.pycqa.org/en/latest/intro.html#error-codes ELECTRUM_LINTERS: E9,E101,E129,E273,E274,E703,E71,F63,F7,F82,W191,W29 - name: Flake8 Non-Mandatory env: ELECTRUM_LINTERS: E,F,W,C90 allow_failures: true task: name: Windows build container: dockerfile: contrib/build-wine/Dockerfile cpu: 1 memory: 2G pip_cache: folder: contrib/build-wine/.cache/win32/wine_pip_cache fingerprint_script: - echo $CIRRUS_TASK_NAME - git ls-files -s contrib/deterministic-build/*.txt - git ls-files -s contrib/build-wine/ build2_cache: folder: contrib/build-wine/.cache/win32/build fingerprint_script: - echo $CIRRUS_TASK_NAME - cat contrib/make_libsecp256k1.sh | sha256sum - cat contrib/make_libusb.sh | sha256sum - cat contrib/make_zbar.sh | sha256sum - git ls-files -s contrib/build-wine/ build_script: - cd contrib/build-wine - ./make_win.sh binaries_artifacts: path: "contrib/build-wine/dist/*" env: CIRRUS_WORKING_DIR: /opt/wine64/drive_c/electrum CIRRUS_DOCKER_CONTEXT: contrib/build-wine task: name: Android build (Kivy $APK_ARCH) container: dockerfile: contrib/android/Dockerfile cpu: 2 memory: 2G env: APK_ARCH: arm64-v8a packages_tld_folder_cache: folder: packages fingerprint_script: - echo $CIRRUS_TASK_NAME && cat contrib/deterministic-build/requirements.txt && cat contrib/make_packages.sh - git ls-files -s contrib/android/ p4a_cache: folders: - ".buildozer/android/platform/build-$APK_ARCH/packages" - ".buildozer/android/platform/build-$APK_ARCH/build" fingerprint_script: # note: should *at least* depend on Dockerfile and p4a_recipes/, but contrib/android/ is simplest - git ls-files -s contrib/android/ - echo "kivy $APK_ARCH" build_script: - ./contrib/android/make_apk.sh kivy "$APK_ARCH" debug binaries_artifacts: path: "dist/*" task: name: Android build (QML $APK_ARCH) container: dockerfile: contrib/android/Dockerfile cpu: 8 memory: 24G env: APK_ARCH: arm64-v8a packages_tld_folder_cache: folder: packages fingerprint_script: - echo $CIRRUS_TASK_NAME && cat contrib/deterministic-build/requirements.txt && cat contrib/make_packages.sh - git ls-files -s contrib/android/ p4a_cache: folders: - ".buildozer/android/platform/build-$APK_ARCH/packages" - ".buildozer/android/platform/build-$APK_ARCH/build" fingerprint_script: # note: should *at least* depend on Dockerfile and p4a_recipes/, but contrib/android/ is simplest - git ls-files -s contrib/android/ - echo "qml $APK_ARCH" build_script: - ./contrib/android/make_apk.sh qml "$APK_ARCH" debug binaries_artifacts: path: "dist/*" task: name: MacOS build macos_instance: image: catalina-xcode-11.3.1 env: TARGET_OS: macOS pip_cache: folder: ~/Library/Caches/pip fingerprint_script: - echo $CIRRUS_TASK_NAME - git ls-files -s contrib/deterministic-build/*.txt - git ls-files -s contrib/osx/ build2_cache: folder: contrib/osx/.cache fingerprint_script: - echo $CIRRUS_TASK_NAME - cat contrib/make_libsecp256k1.sh | shasum -a 256 - cat contrib/make_libusb.sh | shasum -a 256 - cat contrib/make_zbar.sh | shasum -a 256 - git ls-files -s contrib/osx/ install_script: - git fetch --all --tags build_script: - ./contrib/osx/make_osx.sh sum_script: - ls -lah dist - shasum -a 256 dist/*.dmg binaries_artifacts: path: "dist/*" task: name: AppImage build container: dockerfile: contrib/build-linux/appimage/Dockerfile cpu: 2 memory: 1G pip_cache: folder: contrib/build-linux/appimage/.cache/pip_cache fingerprint_script: - echo $CIRRUS_TASK_NAME - git ls-files -s contrib/deterministic-build/*.txt - git ls-files -s contrib/build-linux/appimage/ build2_cache: folder: contrib/build-linux/appimage/.cache/appimage fingerprint_script: - echo $CIRRUS_TASK_NAME - cat contrib/make_libsecp256k1.sh | sha256sum - git ls-files -s contrib/build-linux/appimage/ build_script: - ./contrib/build-linux/appimage/make_appimage.sh binaries_artifacts: path: "dist/*" env: CIRRUS_DOCKER_CONTEXT: contrib/build-linux/appimage task: container: dockerfile: contrib/build-linux/sdist/Dockerfile cpu: 1 memory: 1G pip_cache: folder: ~/.cache/pip fingerprint_script: - echo $CIRRUS_TASK_NAME - git ls-files -s contrib/deterministic-build/*.txt - git ls-files -s contrib/build-linux/sdist/ build_script: - ./contrib/build-linux/sdist/make_sdist.sh binaries_artifacts: path: "dist/*" matrix: - name: tarball build - name: source-only tarball build env: OMIT_UNCLEAN_FILES: 1 task: name: Submodules container: image: python:3.8 cpu: 1 memory: 1G fetch_script: - git fetch --all --tags check_script: - ./contrib/deterministic-build/check_submodules.sh only_if: $CIRRUS_TAG != ''