mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-06 00:45:32 +00:00
154 lines
5.5 KiB
Bash
Executable file
154 lines
5.5 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# TC build script for Keyman Linux/Release
|
|
# shellcheck disable=SC2164
|
|
|
|
## START STANDARD BUILD SCRIPT INCLUDE
|
|
# adjust relative paths as necessary
|
|
THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
|
|
. "${THIS_SCRIPT%/*}/../../../resources/build/builder-full.inc.sh"
|
|
## END STANDARD BUILD SCRIPT INCLUDE
|
|
|
|
# shellcheck disable=SC2154
|
|
. "${KEYMAN_ROOT}/resources/build/utils.inc.sh"
|
|
. "${KEYMAN_ROOT}/resources/teamcity/includes/tc-helpers.inc.sh"
|
|
. "${KEYMAN_ROOT}/resources/teamcity/includes/tc-linux.inc.sh"
|
|
. "${KEYMAN_ROOT}/resources/teamcity/linux/linux-actions.inc.sh"
|
|
|
|
################################ Main script ################################
|
|
|
|
# shellcheck disable=SC2016
|
|
builder_describe \
|
|
"Create a daily release of 'master', 'beta', or 'stable-*' branch." \
|
|
"all run all actions" \
|
|
"configure install dependencies" \
|
|
"build make a release build" \
|
|
"test run unit tests" \
|
|
"publish make a source tarball and publish to downloads and launchpad" \
|
|
"--gpgkey=GPGKEYGRIP GPG key for signing" \
|
|
"--gpgpw=GPGKEYPW GPG key passphrase" \
|
|
"--rsync-path=RSYNC_PATH rsync path on remote server" \
|
|
"--rsync-user=RSYNC_USER rsync user on remote server" \
|
|
"--rsync-host=RSYNC_HOST rsync host on remote server" \
|
|
"--rsync-root=RSYNC_ROOT rsync root on remote server" \
|
|
"--help.keyman.com=HELP_KEYMAN_COM path to help.keyman.com repository" \
|
|
|
|
builder_parse "$@"
|
|
|
|
cd "${KEYMAN_ROOT}/linux"
|
|
|
|
function _install_additional_dependencies() {
|
|
builder_echo start additional_dependencies "Installing additional dependencies"
|
|
|
|
# Additionally we need quilt to be able to create the source package.
|
|
# Since this is not needed to build the binary package, it is not
|
|
# (and should not be) included in `build-depends` in `debian/control`.
|
|
sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y install quilt
|
|
|
|
builder_echo end additional_dependencies success "Finished installing additional dependencies"
|
|
}
|
|
|
|
function _cleanup_before_creating_source_package() {
|
|
# Cleanup before creating the source package.
|
|
builder_echo start cleanup "Cleanup before creating the source package"
|
|
git clean -dxf
|
|
builder_echo end cleanup success "Cleanup before creating the source package"
|
|
}
|
|
|
|
function _make_release_source_tarball() {
|
|
builder_echo start "make source tarball" "Make source tarball"
|
|
rm -rf dist
|
|
./scripts/reconf.sh
|
|
PKG_CONFIG_PATH="${KEYMAN_ROOT}/core/build/arch/release/meson-private" ./scripts/dist.sh
|
|
mkdir -p "upload/${KEYMAN_VERSION}"
|
|
cp -a dist/*.tar.gz "upload/${KEYMAN_VERSION}"
|
|
(
|
|
cd "upload/${KEYMAN_VERSION}"
|
|
sha256sum ./*.tar.gz > SHA256SUMS
|
|
builder_echo end "make source tarball" success "Make source tarball"
|
|
)
|
|
}
|
|
|
|
function _sign_source_tarball() {
|
|
(
|
|
builder_echo start "sign source tarball" "Sign source tarball"
|
|
cd "upload/${KEYMAN_VERSION}"
|
|
|
|
eval "$(gpg-agent -vv --daemon --allow-preset-passphrase --debug-level 9)"
|
|
/usr/lib/gnupg/gpg-preset-passphrase --passphrase "${GPGKEYPW}" --preset "${GPGKEYGRIP}"
|
|
for f in ./*.tar.gz; do gpg --output "${f}.asc" -a --detach-sig "${f}"; done
|
|
/usr/lib/gnupg/gpg-preset-passphrase --forget "${GPGKEYGRIP}" || true
|
|
builder_echo end "sign source tarball" success "Sign source tarball"
|
|
)
|
|
}
|
|
|
|
function _publish_to_downloads() {
|
|
builder_echo start "publish to downloads" "Publish to downloads.keyman.com"
|
|
|
|
local UPLOAD_DIR KEYMAN_TGZ
|
|
|
|
UPLOAD_DIR="upload/${KEYMAN_VERSION}"
|
|
KEYMAN_TGZ="keyman-${KEYMAN_VERSION}.tar.gz"
|
|
|
|
# Set permissions as required on download site
|
|
builder_echo "Setting upload file permissions for downloads.keyman.com"
|
|
chmod g+w "${UPLOAD_DIR}"
|
|
chmod a+rx "${UPLOAD_DIR}"
|
|
chmod g+w "${UPLOAD_DIR}"/*
|
|
chmod a+r "${UPLOAD_DIR}"/*
|
|
|
|
write_download_info "${UPLOAD_DIR}" "${KEYMAN_TGZ}" "Keyman for Linux" tar.gz linux
|
|
tc_rsync_upload "${UPLOAD_DIR}" "linux/${KEYMAN_TIER}"
|
|
|
|
builder_echo end "publish to downloads" success "Publish to downloads.keyman.com"
|
|
}
|
|
|
|
function _publish_to_launchpad() {
|
|
builder_echo start "upload to launchpad" "Upload to launchpad"
|
|
|
|
git reset --hard
|
|
|
|
/usr/lib/gnupg/gpg-preset-passphrase --passphrase "${GPGKEYPW}" --preset "${GPGKEYGRIP}"
|
|
UPLOAD=yes "${KEYMAN_ROOT}/linux/scripts/launchpad.sh"
|
|
/usr/lib/gnupg/gpg-preset-passphrase --forget "${GPGKEYGRIP}" || true
|
|
|
|
builder_echo end "upload to launchpad" success "Upload to launchpad"
|
|
}
|
|
|
|
function _publish_linux_help() {
|
|
builder_echo start "upload linux help" "Upload new Keyman Linux help to help.keyman.com"
|
|
|
|
# shellcheck disable=SC2016
|
|
git config credential.helper '!f() { sleep 1; echo "username=${GITHUB_USER}"; echo "password=${GITHUB_TOKEN}"; }; f'
|
|
"${KEYMAN_ROOT}/resources/build/ci/help-keyman-com.sh" linux
|
|
|
|
builder_echo end "upload linux help" success "Upload new Keyman Linux help to help.keyman.com"
|
|
}
|
|
|
|
function publish_action() {
|
|
_cleanup_before_creating_source_package
|
|
_make_release_source_tarball
|
|
_sign_source_tarball
|
|
_publish_to_downloads
|
|
_publish_to_launchpad
|
|
_publish_linux_help
|
|
}
|
|
|
|
if builder_has_action all; then
|
|
linux_install_dependencies_action
|
|
_install_additional_dependencies
|
|
|
|
tc_set_variables_for_nvm
|
|
|
|
linux_build_action
|
|
linux_unit_tests_action --no-integration
|
|
publish_action
|
|
else
|
|
builder_run_action configure linux_install_dependencies_action
|
|
builder_run_action configure _install_additional_dependencies
|
|
|
|
tc_set_variables_for_nvm
|
|
|
|
builder_run_action build linux_build_action
|
|
builder_run_action test linux_unit_tests_action --no-integration
|
|
builder_run_action publish publish_action
|
|
fi
|