termux-packages/.cirrus.yml

157 lines
4.4 KiB
YAML

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