CI: use pipe instead of separate tasks
No more need to pass packages between tasks through http cache but will require a separate configuration for earch architecture.
This commit is contained in:
parent
5c90cf72db
commit
ca8f0d0b74
104
.cirrus.yml
104
.cirrus.yml
@ -1,13 +1,68 @@
|
|||||||
container:
|
container:
|
||||||
image: termux/package-builder:latest
|
|
||||||
cpu: 8
|
cpu: 8
|
||||||
memory: 16
|
memory: 16
|
||||||
|
|
||||||
# Build packages.
|
##
|
||||||
build_task:
|
## * Maximal timeout is 120 minutes.
|
||||||
# 2 hours is a maximal timeout for free use.
|
## * Each architecture require a separate pipe configuration.
|
||||||
|
## * Test builds (i.e. non-uploadable) are done via separate task.
|
||||||
|
##
|
||||||
|
|
||||||
|
build_pipe_template: &BUILD_PIPE_TEMPLATE
|
||||||
|
only_if: $CIRRUS_BRANCH == 'master'
|
||||||
|
|
||||||
timeout_in: 120m
|
timeout_in: 120m
|
||||||
|
|
||||||
|
environment:
|
||||||
|
BINTRAY_USERNAME: xeffyr
|
||||||
|
BINTRAY_API_KEY: ENCRYPTED[c056d345d7a15f90b818dd9382129c27ce4ce2b802831ec890786414fc214c4203714c353a8fef3a6b9b1b1d68e4685e]
|
||||||
|
BINTRAY_GPG_SUBJECT: termux
|
||||||
|
BINTRAY_GPG_PASSPHRASE: ENCRYPTED[854c09c78b3318a30d3c9094b1010dfebd4c71ad9173b64479eaafaa7e941b050afaa936ad635af3709382492828316f]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- image: termux/package-builder:latest
|
||||||
|
build_script: bash ./scripts/build/ci/cirrus-ci_dispatcher.sh
|
||||||
|
- image: termux/package-builder:latest
|
||||||
|
upload_script: bash ./scripts/build/ci/cirrus-ci_dispatcher.sh --upload
|
||||||
|
output_artifacts:
|
||||||
|
path: "./debs/*.deb"
|
||||||
|
|
||||||
|
|
||||||
|
pipe:
|
||||||
|
<< : *BUILD_PIPE_TEMPLATE
|
||||||
|
name: Build and Upload - aarch64
|
||||||
|
environment:
|
||||||
|
TERMUX_ARCH: aarch64
|
||||||
|
|
||||||
|
pipe:
|
||||||
|
<< : *BUILD_PIPE_TEMPLATE
|
||||||
|
name: Build and Upload - arm
|
||||||
|
environment:
|
||||||
|
TERMUX_ARCH: arm
|
||||||
|
|
||||||
|
pipe:
|
||||||
|
<< : *BUILD_PIPE_TEMPLATE
|
||||||
|
name: Build and Upload - i686
|
||||||
|
environment:
|
||||||
|
TERMUX_ARCH: i686
|
||||||
|
|
||||||
|
pipe:
|
||||||
|
<< : *BUILD_PIPE_TEMPLATE
|
||||||
|
name: Build and Upload - x86_64
|
||||||
|
environment:
|
||||||
|
TERMUX_ARCH: x86_64
|
||||||
|
|
||||||
|
|
||||||
|
task:
|
||||||
|
name: Test build
|
||||||
|
|
||||||
|
only_if: $CIRRUS_BRANCH != 'master'
|
||||||
|
|
||||||
|
timeout_in: 120m
|
||||||
|
|
||||||
|
container:
|
||||||
|
image: termux/package-builder:latest
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
matrix:
|
matrix:
|
||||||
TERMUX_ARCH: aarch64
|
TERMUX_ARCH: aarch64
|
||||||
@ -15,43 +70,4 @@ build_task:
|
|||||||
TERMUX_ARCH: i686
|
TERMUX_ARCH: i686
|
||||||
TERMUX_ARCH: x86_64
|
TERMUX_ARCH: x86_64
|
||||||
|
|
||||||
# Do not use built-in git client provided by Cirrus as may
|
build_script: bash ./scripts/build/ci/cirrus-ci_dispatcher.sh
|
||||||
# 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
|
|
||||||
|
|
||||||
# Following script will determine changes via Git and build
|
|
||||||
# modified packages.
|
|
||||||
build_script: |
|
|
||||||
bash ./scripts/build/ci/cirrus-ci_dispatcher.sh
|
|
||||||
|
|
||||||
# Make built packages downloadable from web UI.
|
|
||||||
output_artifacts:
|
|
||||||
path: "./debs/*.deb"
|
|
||||||
|
|
||||||
|
|
||||||
# Upload packages to Bintray.
|
|
||||||
# Should be done only on branch 'master'.
|
|
||||||
publish_task:
|
|
||||||
only_if: $CIRRUS_BRANCH == 'master'
|
|
||||||
|
|
||||||
timeout_in: 60m
|
|
||||||
|
|
||||||
depends_on:
|
|
||||||
- build
|
|
||||||
|
|
||||||
environment:
|
|
||||||
BINTRAY_USERNAME: xeffyr
|
|
||||||
BINTRAY_API_KEY: ENCRYPTED[c056d345d7a15f90b818dd9382129c27ce4ce2b802831ec890786414fc214c4203714c353a8fef3a6b9b1b1d68e4685e]
|
|
||||||
BINTRAY_GPG_SUBJECT: termux
|
|
||||||
BINTRAY_GPG_PASSPHRASE: ENCRYPTED[854c09c78b3318a30d3c9094b1010dfebd4c71ad9173b64479eaafaa7e941b050afaa936ad635af3709382492828316f]
|
|
||||||
|
|
||||||
upload_script: |
|
|
||||||
bash ./scripts/build/ci/cirrus-ci_dispatcher.sh --upload
|
|
||||||
|
@ -35,14 +35,14 @@ set +e
|
|||||||
# Process tag '%ci:no-build' that may be added as line to commit message.
|
# Process tag '%ci:no-build' that may be added as line to commit message.
|
||||||
# Will force CI to exit with status 'passed' without performing build.
|
# Will force CI to exit with status 'passed' without performing build.
|
||||||
if grep -qiP '^\s*%ci:no-build\s*$' <(git log --format="%B" -n 1 "$CIRRUS_CHANGE_IN_REPO"); then
|
if grep -qiP '^\s*%ci:no-build\s*$' <(git log --format="%B" -n 1 "$CIRRUS_CHANGE_IN_REPO"); then
|
||||||
echo "[*] Exiting with status 'passed' (tag '%ci:no-build' applied)."
|
echo "[!] Exiting with status 'passed' (tag '%ci:no-build' applied)."
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Process tag '%ci:reset-backlog' that may be added as line to commit message.
|
# Process tag '%ci:reset-backlog' that may be added as line to commit message.
|
||||||
# Will force CI to build changes only for the current commit.
|
# Will force CI to build changes only for the current commit.
|
||||||
if grep -qiP '^\s*%ci:reset-backlog\s*$' <(git log --format="%B" -n 1 "$CIRRUS_CHANGE_IN_REPO"); then
|
if grep -qiP '^\s*%ci:reset-backlog\s*$' <(git log --format="%B" -n 1 "$CIRRUS_CHANGE_IN_REPO"); then
|
||||||
echo "[*] Building only last pushed commit (tag '%ci:reset-backlog' applied)."
|
echo "[!] Building only last pushed commit (tag '%ci:reset-backlog' applied)."
|
||||||
unset CIRRUS_LAST_GREEN_CHANGE
|
unset CIRRUS_LAST_GREEN_CHANGE
|
||||||
unset CIRRUS_BASE_SHA
|
unset CIRRUS_BASE_SHA
|
||||||
fi
|
fi
|
||||||
@ -94,66 +94,18 @@ set -e
|
|||||||
|
|
||||||
if ! $DO_UPLOAD; then
|
if ! $DO_UPLOAD; then
|
||||||
echo "[*] Building packages: $PACKAGE_NAMES"
|
echo "[*] Building packages: $PACKAGE_NAMES"
|
||||||
echo
|
|
||||||
if [ -n "$CIRRUS_PR" ]; then
|
if [ -n "$CIRRUS_PR" ]; then
|
||||||
echo " Pull request: https://github.com/termux/unstable-packages/pull/${CIRRUS_PR}"
|
echo "[*] Pull request: https://github.com/termux/unstable-packages/pull/${CIRRUS_PR}"
|
||||||
else
|
else
|
||||||
if [ -n "$CIRRUS_LAST_GREEN_CHANGE" ]; then
|
if [ -n "$CIRRUS_LAST_GREEN_CHANGE" ]; then
|
||||||
echo " Changes: ${CIRRUS_LAST_GREEN_CHANGE}..${CIRRUS_CHANGE_IN_REPO}"
|
echo "[*] Changes: ${CIRRUS_LAST_GREEN_CHANGE}..${CIRRUS_CHANGE_IN_REPO}"
|
||||||
else
|
else
|
||||||
echo " Changes: ${CIRRUS_CHANGE_IN_REPO}"
|
echo "[*] Changes: ${CIRRUS_CHANGE_IN_REPO}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo
|
./build-package.sh -a "$TERMUX_ARCH" -I $PACKAGE_NAMES
|
||||||
for pkg in $PACKAGE_NAMES; do
|
else
|
||||||
./build-package.sh -a "$TERMUX_ARCH" -I "$pkg"
|
echo "[*] Uploading packages to Bintray:"
|
||||||
done
|
./scripts/package_uploader.sh -p "${PWD}/debs" $PACKAGE_NAMES
|
||||||
echo
|
|
||||||
fi
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
##
|
|
||||||
## Storing packages in cache.
|
|
||||||
##
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
if [ "$CIRRUS_BRANCH" = "master" ]; then
|
|
||||||
if ! $DO_UPLOAD; then
|
|
||||||
ARCHIVE_NAME="debs-${TERMUX_ARCH}-${CIRRUS_CHANGE_IN_REPO}.tar.gz"
|
|
||||||
|
|
||||||
if [ -d "${REPO_DIR}/debs" ]; then
|
|
||||||
echo "[*] Archiving packages into '${ARCHIVE_NAME}'."
|
|
||||||
tar zcf "$ARCHIVE_NAME" debs
|
|
||||||
|
|
||||||
echo "[*] Uploading '${ARCHIVE_NAME}' to cache:"
|
|
||||||
echo
|
|
||||||
curl --upload-file "$ARCHIVE_NAME" \
|
|
||||||
"http://$CIRRUS_HTTP_CACHE_HOST/${ARCHIVE_NAME}"
|
|
||||||
echo
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
for arch in aarch64 arm i686 x86_64; do
|
|
||||||
ARCHIVE_NAME="debs-${arch}-${CIRRUS_CHANGE_IN_REPO}.tar.gz"
|
|
||||||
|
|
||||||
echo "[*] Downloading '$ARCHIVE_NAME' from cache:"
|
|
||||||
echo
|
|
||||||
curl --output "/tmp/${ARCHIVE_NAME}" \
|
|
||||||
"http://$CIRRUS_HTTP_CACHE_HOST/${ARCHIVE_NAME}"
|
|
||||||
echo
|
|
||||||
|
|
||||||
if [ -s "/tmp/${ARCHIVE_NAME}" ]; then
|
|
||||||
echo "[*] Unpacking '/tmp/${ARCHIVE_NAME}':"
|
|
||||||
echo
|
|
||||||
tar xvf "/tmp/${ARCHIVE_NAME}"
|
|
||||||
echo
|
|
||||||
else
|
|
||||||
echo "[!] Empty archive '/tmp/${ARCHIVE_NAME}'."
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "[*] Uploading packages to Bintray:"
|
|
||||||
echo
|
|
||||||
"${REPO_DIR}/scripts/package_uploader.sh" -p "${PWD}/debs" $PACKAGE_NAMES
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
Loading…
Reference in New Issue
Block a user