container: image: termux/package-builder:latest ## ## When doing release builds (branch 'master'), update Docker image if ## required. ## docker_builder: name: Update docker image only_if: $CIRRUS_BRANCH == 'master' env: DOCKER_USERNAME: xeffyr DOCKER_PASSWORD: ENCRYPTED[abe4dc4418b40a4c5a0c1671e4018fd9cc3bcb811a71f87bdb35967ba721501f958d47d48a3d31ab9cac466b48f238a0] script: | bash ./scripts/build/ci/cirrus-ci_dispatcher.sh --update-docker ## ## Perform basic check for errors in build.sh package scripts. ## If error found, exit with error code to stop build. ## task: container: cpu: 1 memory: 4 name: Lint packages timeout_in: 5m depends_on: - Update docker image script: | bash scripts/lint-packages.sh ## ## Determine changes in the last push, find modified packages and ## build them for aarch64/arm/i686/x86_64 architectures. ## ## Built packages are accessible from Cirrus CI web interface. ## task: container: # Max configuration required by few large packages such as `rust`. cpu: 8 memory: 24 name: Build packages # 2 hours is a maximal timeout available for free use. timeout_in: 120m depends_on: - Lint packages environment: TERMUX_MAKE_PROCESSES: 8 matrix: - TERMUX_ARCH: aarch64 - TERMUX_ARCH: arm - TERMUX_ARCH: i686 - TERMUX_ARCH: x86_64 # Do not use built-in git client provided by Cirrus as it may # cause problems when determining changed files. clone_script: | if [[ -z "$CIRRUS_PR" ]]; then git clone --recursive --branch="$CIRRUS_BRANCH" "https://x-access-token:${CIRRUS_REPO_CLONE_TOKEN}@github.com/${CIRRUS_REPO_FULL_NAME}.git" "$CIRRUS_WORKING_DIR" git reset --hard "$CIRRUS_CHANGE_IN_REPO" else git clone --recursive "https://x-access-token:${CIRRUS_REPO_CLONE_TOKEN}@github.com/${CIRRUS_REPO_FULL_NAME}.git" "$CIRRUS_WORKING_DIR" git fetch origin "pull/$CIRRUS_PR/head:pull/$CIRRUS_PR" git reset --hard "$CIRRUS_CHANGE_IN_REPO" fi build_script: | export TERMUX_DEBDIR="/tmp/debs-${TERMUX_ARCH}" ln -s "$TERMUX_DEBDIR" debs bash ./scripts/build/ci/cirrus-ci_dispatcher.sh aarch64_debs_cache: folder: "/tmp/debs-aarch64" fingerprint_script: echo "${CIRRUS_CHANGE_IN_REPO}-aarch64" arm_debs_cache: folder: "/tmp/debs-arm" fingerprint_script: echo "${CIRRUS_CHANGE_IN_REPO}-arm" i686_debs_cache: folder: "/tmp/debs-i686" fingerprint_script: echo "${CIRRUS_CHANGE_IN_REPO}-i686" x86-64_debs_cache: folder: "/tmp/debs-x86_64" fingerprint_script: echo "${CIRRUS_CHANGE_IN_REPO}-x86_64" output_artifacts: path: "./debs/*.deb" ## ## When doing release build (branch 'master'), upload built packages ## to APT repository on Bintray. ## task: container: cpu: 1 memory: 4 name: Upload packages to Bintray only_if: $CIRRUS_BRANCH == 'master' timeout_in: 60m depends_on: - Build packages environment: BINTRAY_USERNAME: xeffyr BINTRAY_API_KEY: ENCRYPTED[c056d345d7a15f90b818dd9382129c27ce4ce2b802831ec890786414fc214c4203714c353a8fef3a6b9b1b1d68e4685e] BINTRAY_GPG_SUBJECT: termux BINTRAY_GPG_PASSPHRASE: ENCRYPTED[854c09c78b3318a30d3c9094b1010dfebd4c71ad9173b64479eaafaa7e941b050afaa936ad635af3709382492828316f] # Do not use built-in git client provided by Cirrus as it may # cause problems when determining changed files. clone_script: | if [[ -z "$CIRRUS_PR" ]]; then git clone --recursive --branch="$CIRRUS_BRANCH" "https://x-access-token:${CIRRUS_REPO_CLONE_TOKEN}@github.com/${CIRRUS_REPO_FULL_NAME}.git" "$CIRRUS_WORKING_DIR" git reset --hard "$CIRRUS_CHANGE_IN_REPO" else git clone --recursive "https://x-access-token:${CIRRUS_REPO_CLONE_TOKEN}@github.com/${CIRRUS_REPO_FULL_NAME}.git" "$CIRRUS_WORKING_DIR" git fetch origin "pull/$CIRRUS_PR/head:pull/$CIRRUS_PR" git reset --hard "$CIRRUS_CHANGE_IN_REPO" fi aarch64_debs_cache: folder: "./debs" fingerprint_script: echo "${CIRRUS_CHANGE_IN_REPO}-aarch64" arm_debs_cache: folder: "./debs" fingerprint_script: echo "${CIRRUS_CHANGE_IN_REPO}-arm" i686_debs_cache: folder: "./debs" fingerprint_script: echo "${CIRRUS_CHANGE_IN_REPO}-i686" x86-64_debs_cache: folder: "./debs" fingerprint_script: echo "${CIRRUS_CHANGE_IN_REPO}-x86_64" script: | bash ./scripts/build/ci/cirrus-ci_dispatcher.sh --upload