Compare commits
6 Commits
Author | SHA1 | Date |
---|---|---|
|
c74762858b | |
|
14ed4ab071 | |
|
f9a5808607 | |
|
e797b705ab | |
|
08237fc626 | |
|
8958bea96b |
7
Makefile
7
Makefile
|
@ -86,12 +86,13 @@ install: conf/*.sample systemd/*.service bin/*
|
||||||
|
|
||||||
.PHONY: check_format
|
.PHONY: check_format
|
||||||
check_format:
|
check_format:
|
||||||
shfmt --diff ./src
|
shfmt --diff ./src ./tests
|
||||||
|
|
||||||
.PHONY: check_linting
|
.PHONY: check_linting
|
||||||
check_linting:
|
check_linting:
|
||||||
shfmt --find ./src | xargs bash -o noexec
|
shfmt --find ./src ./tests | while read f; do bash -o noexec $$f; done
|
||||||
shfmt --find ./src | xargs shellcheck --external-sources
|
shfmt --find ./src ./tests | while read f; do \
|
||||||
|
shellcheck --external-sources $$f; done
|
||||||
|
|
||||||
.PHONY: unit_test
|
.PHONY: unit_test
|
||||||
unit_test:
|
unit_test:
|
||||||
|
|
|
@ -10,7 +10,7 @@ Source0: %{name}-%{version}.tar.gz
|
||||||
|
|
||||||
BuildArch: x86_64
|
BuildArch: x86_64
|
||||||
BuildRequires: make
|
BuildRequires: make
|
||||||
Requires: bash,inotify-tools,jq,nmap-ncat,rpm-build,rpmdevtools,ShellCheck,shfmt
|
Requires: bash,go-toolset,inotify-tools,jq,nmap-ncat,rpm-build,rpmdevtools,ShellCheck,shfmt
|
||||||
|
|
||||||
%description
|
%description
|
||||||
Netoik Continuous Deployment tool
|
Netoik Continuous Deployment tool
|
||||||
|
|
|
@ -198,9 +198,9 @@ process_request() (
|
||||||
fi
|
fi
|
||||||
log_debug "RPM path found at '${rpm_path}'."
|
log_debug "RPM path found at '${rpm_path}'."
|
||||||
|
|
||||||
# Upgrade package if already installed.
|
|
||||||
log_debug "Check if pkg '${pkg_name}' is already installed."
|
log_debug "Check if pkg '${pkg_name}' is already installed."
|
||||||
if rpm --query "${pkg_name}" 1>/dev/null 2>/dev/null; then
|
if rpm --query "${pkg_name}" 1>/dev/null 2>/dev/null; then
|
||||||
|
# Upgrade package if already installed.
|
||||||
log_debug "Package '${pkg_name}' already installed, so upgrade to v
|
log_debug "Package '${pkg_name}' already installed, so upgrade to v
|
||||||
${pkg_version}"
|
${pkg_version}"
|
||||||
if ! output="$(sudo rpm --upgrade \
|
if ! output="$(sudo rpm --upgrade \
|
||||||
|
@ -210,15 +210,15 @@ process_request() (
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
log_debug "RPM package '${pkg_name}' upgraded to v${pkg_version}."
|
log_debug "RPM package '${pkg_name}' upgraded to v${pkg_version}."
|
||||||
fi
|
else
|
||||||
|
# Install package if not already installed.
|
||||||
# Install package if not already installed.
|
log_debug "Package '${pkg_name}' is not already installed, so install
|
||||||
log_debug "Package '${pkg_name}' is not already installed, so install
|
v${pkg_version}."
|
||||||
v${pkg_version}."
|
if ! output="$(sudo rpm --install --verbose --hash "${rpm_path}")"; then
|
||||||
if ! output="$(sudo rpm --install --verbose --hash "${rpm_path}")"; then
|
reply "${err_rpm_install}" \
|
||||||
reply "${err_rpm_install}" \
|
"Cannot install package '${pkg_name}' v${pkg_version}: ${output}."
|
||||||
"Cannot install package '${pkg_name}' v${pkg_version}: ${output}."
|
return
|
||||||
return
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Package deployed.
|
# Package deployed.
|
||||||
|
@ -246,7 +246,7 @@ process_loop() (
|
||||||
|
|
||||||
main() (
|
main() (
|
||||||
# Parse arguments.
|
# Parse arguments.
|
||||||
daemon="false"
|
daemonize="false"
|
||||||
keep_open="true"
|
keep_open="true"
|
||||||
config_file="${DEFAULT_CONFIG_FILE}"
|
config_file="${DEFAULT_CONFIG_FILE}"
|
||||||
errors_file="${DEFAULT_ERRORS_FILE}"
|
errors_file="${DEFAULT_ERRORS_FILE}"
|
||||||
|
@ -268,7 +268,7 @@ main() (
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
-d | --daemon)
|
-d | --daemon)
|
||||||
daemon="true"
|
daemonize="true"
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
-e | --errs)
|
-e | --errs)
|
||||||
|
@ -415,7 +415,7 @@ main() (
|
||||||
) &
|
) &
|
||||||
|
|
||||||
# Run process loop in background or foreground.
|
# Run process loop in background or foreground.
|
||||||
if "${daemon}"; then
|
if "${daemonize}"; then
|
||||||
log_info "Run process loop in background."
|
log_info "Run process loop in background."
|
||||||
process_loop &
|
process_loop &
|
||||||
echo "$!" >"${deployer_pid}"
|
echo "$!" >"${deployer_pid}"
|
||||||
|
|
|
@ -259,21 +259,25 @@ main() (
|
||||||
echo "${runner_request}" | ncat --unixsock "${runner_sock}"
|
echo "${runner_request}" | ncat --unixsock "${runner_sock}"
|
||||||
) &
|
) &
|
||||||
|
|
||||||
# Wait for runner response.
|
# Start CI runner.
|
||||||
|
echo -e "Starting CI runner..."
|
||||||
cd "${rd_pipeline_sock_dir}"
|
cd "${rd_pipeline_sock_dir}"
|
||||||
|
ncat_cmd="ncat --listen --unixsock --keep-open pipeline.sock"
|
||||||
if [ "${runner_timeout}" -gt 0 ]; then
|
if [ "${runner_timeout}" -gt 0 ]; then
|
||||||
response="$(timeout "${runner_timeout}" ncat --listen \
|
ncat_cmd="timeout ${runner_timeout} ${ncat_cmd}"
|
||||||
--unixsock pipeline.sock)"
|
|
||||||
else
|
|
||||||
response="$(ncat --listen --unixsock pipeline.sock)"
|
|
||||||
fi
|
fi
|
||||||
|
while read -r response; do
|
||||||
|
echo -e "$(echo "${response}" | jq --raw-output .msg)"
|
||||||
|
code="$(echo "${response}" | jq .code)"
|
||||||
|
[ "${code}" = "null" ] || break
|
||||||
|
done < <($ncat_cmd)
|
||||||
|
pkill --full --exact --parent "$$" "${ncat_cmd}" || true
|
||||||
|
|
||||||
# Remove random directory.
|
# Remove random directory.
|
||||||
rm --recursive "${rd_pipeline_sock_dir}"
|
rm --recursive "${rd_pipeline_sock_dir}"
|
||||||
|
|
||||||
# Display response.
|
# Display response.
|
||||||
echo -e "Response from RUNNER:\n$(echo "${response}" | jq --raw-output .msg)"
|
exit "${code}"
|
||||||
exit "$(echo "${response}" | jq .code)"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
main "$@"
|
main "$@"
|
||||||
|
|
107
src/runner.sh
107
src/runner.sh
|
@ -95,21 +95,29 @@ Positional argument ACTION
|
||||||
)
|
)
|
||||||
|
|
||||||
reply() (
|
reply() (
|
||||||
code="$1"
|
msg="$1"
|
||||||
msg="$2"
|
code="$2"
|
||||||
|
|
||||||
if [ "${code}" -gt 0 ]; then
|
if [ -z "${code}" ]; then
|
||||||
log_error "${msg}"
|
|
||||||
else
|
|
||||||
log_info "${msg}"
|
log_info "${msg}"
|
||||||
|
json="$(jq --null-input \
|
||||||
|
--compact-output \
|
||||||
|
--arg m "${msg}" \
|
||||||
|
'{"msg":$m}')"
|
||||||
|
else
|
||||||
|
if [ "${code}" -eq 0 ]; then
|
||||||
|
log_info "${msg}"
|
||||||
|
else
|
||||||
|
log_error "${msg}"
|
||||||
|
fi
|
||||||
|
json="$(jq --null-input \
|
||||||
|
--compact-output \
|
||||||
|
--arg m "${msg}" \
|
||||||
|
--arg c "${code}" \
|
||||||
|
'{"msg":$m,"code":$c|tonumber}')"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! output="$(jq --null-input \
|
if ! output="$(echo "${json}" | ncat --unixsock "${response_sock}" 2>&1)"; then
|
||||||
--compact-output \
|
|
||||||
--arg c "${code}" \
|
|
||||||
--arg m "${msg}" \
|
|
||||||
'{"code":$c|tonumber,"msg":$m}' |
|
|
||||||
ncat --unixsock "${response_sock}" 2>&1)"; then
|
|
||||||
log_error "Cannot write to sock '${response_sock}': ${output}."
|
log_error "Cannot write to sock '${response_sock}': ${output}."
|
||||||
fi
|
fi
|
||||||
)
|
)
|
||||||
|
@ -149,17 +157,18 @@ process_request() (
|
||||||
log_debug "Get repo_name from json."
|
log_debug "Get repo_name from json."
|
||||||
if ! repo_name="$(echo "${request}" |
|
if ! repo_name="$(echo "${request}" |
|
||||||
jq --raw-output ".repo_name" 2>&1)"; then
|
jq --raw-output ".repo_name" 2>&1)"; then
|
||||||
reply "${err_json_bad_format}" \
|
reply "Cannot parse json '${request}': ${repo_name}." \
|
||||||
"Cannot parse json '${request}': ${repo_name}."
|
"${err_json_bad_format}"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
if [ "${repo_name}" = "null" ]; then
|
if [ "${repo_name}" = "null" ]; then
|
||||||
reply "${err_repo_name_missing}" "Missing key repo_name in '${request}'."
|
reply "Missing key repo_name in '${request}'." \
|
||||||
|
"${err_repo_name_missing}"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
if [ -z "${repo_name}" ]; then
|
if [ -z "${repo_name}" ]; then
|
||||||
reply "${err_repo_name_empty}" \
|
reply "Empty value for key repo_name in '${request}'." \
|
||||||
"Empty value for key repo_name in '${request}'."
|
"${err_repo_name_empty}"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
log_debug "Got pkg name: '${repo_name}'."
|
log_debug "Got pkg name: '${repo_name}'."
|
||||||
|
@ -167,7 +176,8 @@ process_request() (
|
||||||
# Get repository folder.
|
# Get repository folder.
|
||||||
repo_dir="${repos_dir}/${repo_name}.git"
|
repo_dir="${repos_dir}/${repo_name}.git"
|
||||||
if [ ! -d "${repo_dir}" ]; then
|
if [ ! -d "${repo_dir}" ]; then
|
||||||
reply "${err_repo_dir_not_exist}" "Repository '${repo_dir}' does not exist."
|
reply "Repository '${repo_dir}' does not exist." \
|
||||||
|
"${err_repo_dir_not_exist}"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
log_debug "Repository is present at '${repo_dir}'."
|
log_debug "Repository is present at '${repo_dir}'."
|
||||||
|
@ -175,30 +185,31 @@ process_request() (
|
||||||
# Get repo_hash from json.
|
# Get repo_hash from json.
|
||||||
log_debug "Get repo_hash from json."
|
log_debug "Get repo_hash from json."
|
||||||
if ! repo_hash=$(echo "${request}" | jq --raw-output ".repo_hash" 2>&1); then
|
if ! repo_hash=$(echo "${request}" | jq --raw-output ".repo_hash" 2>&1); then
|
||||||
reply "${err_json_bad_format}" \
|
reply "Cannot parse json '${request}': ${repo_hash}." \
|
||||||
"Cannot parse json '${request}': ${repo_hash}."
|
"${err_json_bad_format}"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
if [ "${repo_hash}" = "null" ]; then
|
if [ "${repo_hash}" = "null" ]; then
|
||||||
reply "${err_repo_hash_missing}" "Missing key repo_hash in '${request}'."
|
reply "Missing key repo_hash in '${request}'." \
|
||||||
|
"${err_repo_hash_missing}"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
if [ -z "${repo_hash}" ]; then
|
if [ -z "${repo_hash}" ]; then
|
||||||
reply "${err_repo_hash_empty}" \
|
reply "Empty value for key repo_hash in '${request}'." \
|
||||||
"Empty value for key repo_hash in '${request}'." 1>&2
|
"${err_repo_hash_empty}"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Get repo_tag from json.
|
# Get repo_tag from json.
|
||||||
log_debug "Get repo_tag from json."
|
log_debug "Get repo_tag from json."
|
||||||
if ! repo_tag=$(echo "${request}" | jq --raw-output ".repo_tag"); then
|
if ! repo_tag=$(echo "${request}" | jq --raw-output ".repo_tag"); then
|
||||||
reply "${err_json_bad_format}" \
|
reply "Cannot parse json '${request}': ${repo_tag}." \
|
||||||
"Cannot parse json '${request}': ${repo_tag}."
|
"${err_json_bad_format}"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
if [ -z "${repo_tag}" ]; then
|
if [ -z "${repo_tag}" ]; then
|
||||||
reply "${err_repo_tag_empty}" \
|
reply "Empty value for key repo_tag in '${request}'." \
|
||||||
"Empty value for key repo_tag in '${request}'."
|
"${err_repo_tag_empty}"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -207,66 +218,72 @@ process_request() (
|
||||||
[ "${repo_tag}" != "null" ] && repo_id="${repo_tag}"
|
[ "${repo_tag}" != "null" ] && repo_id="${repo_tag}"
|
||||||
rand="$(echo "${RANDOM}" | md5sum | head --bytes 7)"
|
rand="$(echo "${RANDOM}" | md5sum | head --bytes 7)"
|
||||||
repo_clone="${runner_cloning_dir}/${repo_name}-${repo_id}-${rand}"
|
repo_clone="${runner_cloning_dir}/${repo_name}-${repo_id}-${rand}"
|
||||||
log_info "Clone '$repo_name'."
|
reply "Cloning repo '${repo_name}'..."
|
||||||
if ! output="$(git clone "$repo_dir" "$repo_clone" 2>&1)"; then
|
if ! output="$(git clone "${repo_dir}" "${repo_clone}" 2>&1)"; then
|
||||||
reply "${err_clone_repo}" "Cannot clone repo '${repo_name}': ${output}."
|
reply "Cannot clone repo '${repo_name}': ${output}." \
|
||||||
|
"${err_clone_repo}"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
cd "$repo_clone"
|
cd "$repo_clone"
|
||||||
|
|
||||||
# Checkout git hash.
|
# Checkout git hash.
|
||||||
log_info "Checkout hash $repo_hash."
|
reply "Checkouting hash '${repo_hash}..."
|
||||||
if ! output="$(git checkout "$repo_hash" 2>&1)"; then
|
if ! output="$(git checkout "$repo_hash" 2>&1)"; then
|
||||||
reply "${err_checkout_hash}" \
|
reply "Cannot checkout hash '${repo_hash}': ${output}." \
|
||||||
"Cannot checkout hash '${repo_hash}': ${output}."
|
"${err_checkout_hash}"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check code validity.
|
# Check code validity.
|
||||||
log_info "Check code validity."
|
reply "Checking code format..."
|
||||||
if ! output="$(make check_format 2>&1)"; then
|
if ! output="$(make check_format 2>&1)"; then
|
||||||
reply "${err_check_format}" "Check format error: ${output}."
|
reply "Check format error: ${output}." "${err_check_format}"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
reply "Checking code linting..."
|
||||||
if ! output="$(make check_linting 2>&1)"; then
|
if ! output="$(make check_linting 2>&1)"; then
|
||||||
reply "${err_check_linting}" "Check linting error: ${output}."
|
reply "Check linting error: ${output}." "${err_check_linting}"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
reply "Running unit tests..."
|
||||||
if ! output="$(make unit_test 2>&1)"; then
|
if ! output="$(make unit_test 2>&1)"; then
|
||||||
reply "${err_unit_test}" "Unit test error: ${output}."
|
reply "Unit test error: ${output}." "${err_unit_test}"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Stop now if no tag specified.
|
# Stop now if no tag specified.
|
||||||
if [ "$repo_tag" = "null" ]; then
|
if [ "$repo_tag" = "null" ]; then
|
||||||
reply 0 "Hash '${repo_hash}' OK for repo '${repo_name}'."
|
reply "Hash '${repo_hash}' OK for repo '${repo_name}'." 0
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Build rpm package.
|
# Build rpm package.
|
||||||
echo "Build RPM package."
|
reply "Adding tag '${repo_tag}'..."
|
||||||
if ! output="$(git tag --message="$repo_tag" "$repo_tag" 2>&1)"; then
|
if ! output="$(git tag --message="$repo_tag" "$repo_tag" 2>&1)"; then
|
||||||
reply "${err_add_tag}" "Cannot add git tag '${repo_tag}': ${output}."
|
reply "Cannot add git tag '${repo_tag}': ${output}." "${err_add_tag}"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
reply "Making source tarball..."
|
||||||
if ! output="$(make tarball 2>&1)"; then
|
if ! output="$(make tarball 2>&1)"; then
|
||||||
reply "${err_make_tarball}" \
|
reply "Cannot make tarball for tag '${repo_tag}': ${output}." \
|
||||||
"Cannot make tarball for tag '${repo_tag}': ${output}."
|
"${err_make_tarball}"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
repo_version="$(make version)"
|
||||||
|
reply "Building RPM package '${repo_name}' v${repo_version}..."
|
||||||
if ! output="$(rpmbuild -bb "$repo_name.spec" 2>&1)"; then
|
if ! output="$(rpmbuild -bb "$repo_name.spec" 2>&1)"; then
|
||||||
reply "${err_rpm_build}" \
|
reply "Cannot build rpm for tag '${repo_tag}': ${output}." \
|
||||||
"Cannot build rpm for tag '${repo_tag}': ${output}."
|
"${err_rpm_build}"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Deploy rpm package.
|
# Deploy rpm package.
|
||||||
log_info "Deploy RPM package."
|
reply "Deploying RPM package '${repo_name}' v${repo_version}..."
|
||||||
deployer_request="$(jq --null-input \
|
deployer_request="$(jq --null-input \
|
||||||
--compact-output \
|
--compact-output \
|
||||||
--arg s "${repo_clone}/runner.sock" \
|
--arg s "${repo_clone}/runner.sock" \
|
||||||
--arg n "${repo_name}" \
|
--arg n "${repo_name}" \
|
||||||
--arg v "$(make version)" \
|
--arg v "${repo_version}" \
|
||||||
'{"response_sock":$s,"pkg_name":$n,"pkg_version":$v}')"
|
'{"response_sock":$s,"pkg_name":$n,"pkg_version":$v}')"
|
||||||
(
|
(
|
||||||
inotifywait --timeout 1 --quiet --quiet \
|
inotifywait --timeout 1 --quiet --quiet \
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
bats_require_minimum_version 1.5.0
|
bats_require_minimum_version 1.5.0
|
||||||
|
|
||||||
setup() {
|
setup() {
|
||||||
|
# shellcheck source=./tests/tests.conf
|
||||||
source "${PWD}/tests/tests.conf"
|
source "${PWD}/tests/tests.conf"
|
||||||
make build >/dev/null
|
make build >/dev/null
|
||||||
DESTDIR="${temp}" make install >/dev/null
|
DESTDIR="${temp}" make install >/dev/null
|
||||||
|
@ -13,6 +14,7 @@ setup() {
|
||||||
"${temp}${sysconf_dir}/${name}/${name}.conf"
|
"${temp}${sysconf_dir}/${name}/${name}.conf"
|
||||||
install --directory "${temp}${var_dir}/${name}/repositories/test.git"
|
install --directory "${temp}${var_dir}/${name}/repositories/test.git"
|
||||||
install --directory "${temp}${var_dir}/${name}/RPMS"
|
install --directory "${temp}${var_dir}/${name}/RPMS"
|
||||||
|
# shellcheck source=./conf/errors.conf.sample
|
||||||
source "${errs_file}"
|
source "${errs_file}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,7 +23,7 @@ teardown() {
|
||||||
make clean >/dev/null
|
make clean >/dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "run with bad arguments" {
|
run_with_bad_arguments() { #@test
|
||||||
run -1 "${deployer_bin}" -z test
|
run -1 "${deployer_bin}" -z test
|
||||||
run -1 "${deployer_bin}" --zzz test
|
run -1 "${deployer_bin}" --zzz test
|
||||||
run -1 "${deployer_bin}" zzz
|
run -1 "${deployer_bin}" zzz
|
||||||
|
@ -35,8 +37,8 @@ teardown() {
|
||||||
run -1 "${deployer_bin}" --verbose --quiet test
|
run -1 "${deployer_bin}" --verbose --quiet test
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "run without loop" {
|
run_without_loop() { #@test
|
||||||
"${deployer_bin}" --conf="${conf_file}" --errs="${errs_file}" --verbose test
|
"${deployer_bin}" --conf="${conf_file}" --errs="${errs_file}" --verbose test
|
||||||
}
|
}
|
||||||
|
|
||||||
send_request() (
|
send_request() (
|
||||||
|
@ -54,56 +56,56 @@ send_request() (
|
||||||
return "${code}"
|
return "${code}"
|
||||||
)
|
)
|
||||||
|
|
||||||
@test "run with err_pkg_name_missing" {
|
run_with_err_pkg_name_missing() { #@test
|
||||||
request="$(jq --null-input --compact-output \
|
request="$(jq --null-input --compact-output \
|
||||||
--arg s "${response_sock}" \
|
--arg s "${response_sock}" \
|
||||||
'{"response_sock":$s}')"
|
'{"response_sock":$s}')"
|
||||||
run send_request "${request}"
|
run send_request "${request}"
|
||||||
echo "status: got ${status}, expected ${err_pkg_name_missing}"
|
echo "status: got ${status:?}, expected ${err_pkg_name_missing}"
|
||||||
[ "${status}" -eq "${err_pkg_name_missing}" ]
|
[ "${status}" -eq "${err_pkg_name_missing}" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "run with err_pkg_name_empty" {
|
run_with_err_pkg_name_empty() { #@test
|
||||||
request="$(jq --null-input --compact-output \
|
request="$(jq --null-input --compact-output \
|
||||||
--arg s "${response_sock}" \
|
--arg s "${response_sock}" \
|
||||||
'{"response_sock":$s,"pkg_name":""}')"
|
'{"response_sock":$s,"pkg_name":""}')"
|
||||||
run send_request "${request}"
|
run send_request "${request}"
|
||||||
echo "status: got ${status}, expected ${err_pkg_name_empty}"
|
echo "status: got ${status:?}, expected ${err_pkg_name_empty}"
|
||||||
[ "${status}" -eq "${err_pkg_name_empty}" ]
|
[ "${status}" -eq "${err_pkg_name_empty}" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "run with err_repo_dir_not_exist" {
|
run_with_err_repo_dir_not_exist() { #@test
|
||||||
request="$(jq --null-input --compact-output \
|
request="$(jq --null-input --compact-output \
|
||||||
--arg s "${response_sock}" \
|
--arg s "${response_sock}" \
|
||||||
'{"response_sock":$s,"pkg_name":"not_exist"}')"
|
'{"response_sock":$s,"pkg_name":"not_exist"}')"
|
||||||
run send_request "${request}"
|
run send_request "${request}"
|
||||||
echo "status: got ${status}, expected ${err_repo_dir_not_exist}"
|
echo "status: got ${status:?}, expected ${err_repo_dir_not_exist}"
|
||||||
[ "${status}" -eq "${err_repo_dir_not_exist}" ]
|
[ "${status}" -eq "${err_repo_dir_not_exist}" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "run with err_pkg_version_missing" {
|
run_with_err_pkg_version_missing() { #@test
|
||||||
request="$(jq --null-input --compact-output \
|
request="$(jq --null-input --compact-output \
|
||||||
--arg s "${response_sock}" \
|
--arg s "${response_sock}" \
|
||||||
'{"response_sock":$s,"pkg_name":"test"}')"
|
'{"response_sock":$s,"pkg_name":"test"}')"
|
||||||
run send_request "${request}"
|
run send_request "${request}"
|
||||||
echo "status: got ${status}, expected ${err_pkg_version_missing}"
|
echo "status: got ${status:?}, expected ${err_pkg_version_missing}"
|
||||||
[ "${status}" -eq "${err_pkg_version_missing}" ]
|
[ "${status}" -eq "${err_pkg_version_missing}" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "run with err_pkg_version_empty" {
|
run_with_err_pkg_version_empty() { #@test
|
||||||
request="$(jq --null-input --compact-output \
|
request="$(jq --null-input --compact-output \
|
||||||
--arg s "${response_sock}" \
|
--arg s "${response_sock}" \
|
||||||
'{"response_sock":$s,"pkg_name":"test","pkg_version":""}')"
|
'{"response_sock":$s,"pkg_name":"test","pkg_version":""}')"
|
||||||
run send_request "${request}"
|
run send_request "${request}"
|
||||||
echo "status: got ${status}, expected ${err_pkg_version_empty}"
|
echo "status: got ${status:?}, expected ${err_pkg_version_empty}"
|
||||||
[ "${status}" -eq "${err_pkg_version_empty}" ]
|
[ "${status}" -eq "${err_pkg_version_empty}" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "run with err_rpm_path_not_exist" {
|
run_with_err_rpm_path_not_exist() { #@test
|
||||||
request="$(jq --null-input --compact-output \
|
request="$(jq --null-input --compact-output \
|
||||||
--arg s "${response_sock}" \
|
--arg s "${response_sock}" \
|
||||||
'{"response_sock":$s,"pkg_name":"test","pkg_version":"0.1"}')"
|
'{"response_sock":$s,"pkg_name":"test","pkg_version":"0.1"}')"
|
||||||
run send_request "${request}"
|
run send_request "${request}"
|
||||||
echo "status: got ${status}, expected ${err_rpm_path_not_exist}"
|
echo "status: got ${status:?}, expected ${err_rpm_path_not_exist}"
|
||||||
[ "${status}" -eq "${err_rpm_path_not_exist}" ]
|
[ "${status}" -eq "${err_rpm_path_not_exist}" ]
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,12 +5,14 @@
|
||||||
bats_require_minimum_version 1.5.0
|
bats_require_minimum_version 1.5.0
|
||||||
|
|
||||||
setup() {
|
setup() {
|
||||||
|
# shellcheck source=./tests/tests.conf
|
||||||
source "${PWD}/tests/tests.conf"
|
source "${PWD}/tests/tests.conf"
|
||||||
make build >/dev/null
|
make build >/dev/null
|
||||||
DESTDIR="${temp}" make install >/dev/null
|
DESTDIR="${temp}" make install >/dev/null
|
||||||
install --no-target-directory \
|
install --no-target-directory \
|
||||||
"${PWD}/tests/tests.conf" \
|
"${PWD}/tests/tests.conf" \
|
||||||
"${temp}${sysconf_dir}/${name}/${name}.conf"
|
"${temp}${sysconf_dir}/${name}/${name}.conf"
|
||||||
|
# shellcheck source=./conf/errors.conf.sample
|
||||||
source "${errs_file}"
|
source "${errs_file}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,7 +21,7 @@ teardown() {
|
||||||
make clean >/dev/null
|
make clean >/dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "run with bad arguments" {
|
run_with_bad_arguments() { #@test
|
||||||
run -1 "${pipeline_bin}"
|
run -1 "${pipeline_bin}"
|
||||||
run -1 "${pipeline_bin}" bad_pipeline
|
run -1 "${pipeline_bin}" bad_pipeline
|
||||||
|
|
||||||
|
@ -39,21 +41,21 @@ teardown() {
|
||||||
run -1 "${pipeline_bin}" -e /path/to/nowhere -H hash -n name newcommit
|
run -1 "${pipeline_bin}" -e /path/to/nowhere -H hash -n name newcommit
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "run without runner sock" {
|
run_without_runner_sock() { #@test
|
||||||
run "${pipeline_bin}" --conf="${conf_file}" --errs="${errs_file}" \
|
run "${pipeline_bin}" --conf="${conf_file}" --errs="${errs_file}" \
|
||||||
--test --hash hash --name name newcommit
|
--test --hash hash --name name newcommit
|
||||||
echo "status: got ${status}, expected ${err_runner_sock_not_exist}"
|
echo "status: got ${status:?}, expected ${err_runner_sock_not_exist}"
|
||||||
[ "${status}" -eq "${err_runner_sock_not_exist}" ]
|
[ "${status}" -eq "${err_runner_sock_not_exist}" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "run newcommit ok" {
|
run_newcommit_ok() { #@test
|
||||||
ncat --listen --unixsock "${runner_sock}" &
|
ncat --listen --unixsock "${runner_sock}" &
|
||||||
"${pipeline_bin}" --conf="${conf_file}" --errs="${errs_file}" \
|
"${pipeline_bin}" --conf="${conf_file}" --errs="${errs_file}" \
|
||||||
--test --hash hash --name name newcommit
|
--test --hash hash --name name newcommit
|
||||||
echo "done" | ncat --unixsock "${runner_sock}"
|
echo "done" | ncat --unixsock "${runner_sock}"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "run newtag ok" {
|
run_newtag_ok() { #@test
|
||||||
ncat --listen --unixsock "${runner_sock}" &
|
ncat --listen --unixsock "${runner_sock}" &
|
||||||
"${pipeline_bin}" --conf="${conf_file}" --errs="${errs_file}" \
|
"${pipeline_bin}" --conf="${conf_file}" --errs="${errs_file}" \
|
||||||
--test --hash hash --name name --tag tag newtag
|
--test --hash hash --name name --tag tag newtag
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
bats_require_minimum_version 1.5.0
|
bats_require_minimum_version 1.5.0
|
||||||
|
|
||||||
setup() {
|
setup() {
|
||||||
|
# shellcheck source=./tests/tests.conf
|
||||||
source "${PWD}/tests/tests.conf"
|
source "${PWD}/tests/tests.conf"
|
||||||
make build >/dev/null
|
make build >/dev/null
|
||||||
DESTDIR="${temp}" make install >/dev/null
|
DESTDIR="${temp}" make install >/dev/null
|
||||||
|
@ -13,6 +14,7 @@ setup() {
|
||||||
"${temp}${sysconf_dir}/${name}/${name}.conf"
|
"${temp}${sysconf_dir}/${name}/${name}.conf"
|
||||||
install --directory "${temp}${var_dir}/${name}/repositories/test.git"
|
install --directory "${temp}${var_dir}/${name}/repositories/test.git"
|
||||||
install --directory "${temp}${var_dir}/${name}/RPMS"
|
install --directory "${temp}${var_dir}/${name}/RPMS"
|
||||||
|
# shellcheck source=./conf/errors.conf.sample
|
||||||
source "${errs_file}"
|
source "${errs_file}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,7 +23,7 @@ teardown() {
|
||||||
make clean >/dev/null
|
make clean >/dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "run with bad arguments" {
|
run_with_bad_arguments() { #@test
|
||||||
run -1 "${runner_bin}" -z
|
run -1 "${runner_bin}" -z
|
||||||
run -1 "${runner_bin}" --zzz
|
run -1 "${runner_bin}" --zzz
|
||||||
run -1 "${runner_bin}" zzz
|
run -1 "${runner_bin}" zzz
|
||||||
|
@ -35,85 +37,85 @@ teardown() {
|
||||||
run -1 "${runner_bin}" --verbose --quiet
|
run -1 "${runner_bin}" --verbose --quiet
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "run without loop" {
|
run_without_loop() { #@test
|
||||||
ncat --listen --unixsock "${deployer_sock}" &
|
ncat --listen --unixsock "${deployer_sock}" &
|
||||||
"${runner_bin}" --conf="${conf_file}" --errs="${errs_file}" --verbose test
|
"${runner_bin}" --conf="${conf_file}" --errs="${errs_file}" --verbose test
|
||||||
echo "done" | ncat --unixsock "${deployer_sock}"
|
echo "done" | ncat --unixsock "${deployer_sock}"
|
||||||
}
|
}
|
||||||
|
|
||||||
send_request() (
|
send_request() (
|
||||||
request="$1"
|
request="$1"
|
||||||
|
|
||||||
ncat --listen --unixsock "${deployer_sock}" &
|
ncat --listen --unixsock "${deployer_sock}" &
|
||||||
"${runner_bin}" --conf="${conf_file}" --errs="${errs_file}" \
|
"${runner_bin}" --conf="${conf_file}" --errs="${errs_file}" \
|
||||||
--daemon --once --verbose start
|
--daemon --once --verbose start
|
||||||
code=$?
|
code=$?
|
||||||
if [ "${code}" -ne 0 ]; then
|
if [ "${code}" -ne 0 ]; then
|
||||||
echo "fail" | ncat --unixsock "${deployer_sock}"
|
echo "fail" | ncat --unixsock "${deployer_sock}"
|
||||||
"${runner_bin}" --conf="${conf_file}" --errs="${errs_file}" stop
|
"${runner_bin}" --conf="${conf_file}" --errs="${errs_file}" stop
|
||||||
return "${code}"
|
return "${code}"
|
||||||
fi
|
fi
|
||||||
(
|
(
|
||||||
inotifywait --timeout 1 --quiet --quiet \
|
inotifywait --timeout 1 --quiet --quiet \
|
||||||
--event create "${response_sock_dir}" >&3
|
--event create "${response_sock_dir}" >&3
|
||||||
echo "${request}" | ncat --unixsock "${runner_sock}"
|
echo "${request}" | ncat --unixsock "${runner_sock}"
|
||||||
) &
|
) &
|
||||||
echo "done" | ncat --unixsock "${deployer_sock}"
|
echo "done" | ncat --unixsock "${deployer_sock}"
|
||||||
code="$(ncat --listen --unixsock "${response_sock}" | jq .code)"
|
code="$(ncat --listen --unixsock "${response_sock}" | jq .code)"
|
||||||
"${runner_bin}" --conf="${conf_file}" --errs="${errs_file}" stop
|
"${runner_bin}" --conf="${conf_file}" --errs="${errs_file}" stop
|
||||||
return "${code}"
|
return "${code}"
|
||||||
)
|
)
|
||||||
|
|
||||||
@test "run with err_repo_name_missing" {
|
run_with_err_repo_name_missing() { #@test
|
||||||
request="$(jq --null-input --compact-output \
|
request="$(jq --null-input --compact-output \
|
||||||
--arg s "${response_sock}" \
|
--arg s "${response_sock}" \
|
||||||
'{"response_sock":$s}')"
|
'{"response_sock":$s}')"
|
||||||
run send_request "${request}"
|
run send_request "${request}"
|
||||||
echo "status: got ${status}, expected ${err_repo_name_missing}"
|
echo "status: got ${status:?}, expected ${err_repo_name_missing}"
|
||||||
[ "${status}" -eq "${err_repo_name_missing}" ]
|
[ "${status}" -eq "${err_repo_name_missing}" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "run with err_repo_name_empty" {
|
run_with_err_repo_name_empty() { #@test
|
||||||
request="$(jq --null-input --compact-output \
|
request="$(jq --null-input --compact-output \
|
||||||
--arg s "${response_sock}" \
|
--arg s "${response_sock}" \
|
||||||
'{"response_sock":$s,"repo_name":""}')"
|
'{"response_sock":$s,"repo_name":""}')"
|
||||||
run send_request "${request}"
|
run send_request "${request}"
|
||||||
echo "status: got ${status}, expected ${err_repo_name_empty}"
|
echo "status: got ${status:?}, expected ${err_repo_name_empty}"
|
||||||
[ "${status}" -eq "${err_repo_name_empty}" ]
|
[ "${status}" -eq "${err_repo_name_empty}" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "run with err_repo_dir_not_exist" {
|
run_with_err_repo_dir_not_exist() { #@test
|
||||||
request="$(jq --null-input --compact-output \
|
request="$(jq --null-input --compact-output \
|
||||||
--arg s "${response_sock}" \
|
--arg s "${response_sock}" \
|
||||||
'{"response_sock":$s,"repo_name":"not_exist"}')"
|
'{"response_sock":$s,"repo_name":"not_exist"}')"
|
||||||
run send_request "${request}"
|
run send_request "${request}"
|
||||||
echo "status: got ${status}, expected ${err_repo_dir_not_exist}"
|
echo "status: got ${status:?}, expected ${err_repo_dir_not_exist}"
|
||||||
[ "${status}" -eq "${err_repo_dir_not_exist}" ]
|
[ "${status}" -eq "${err_repo_dir_not_exist}" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "run with err_repo_hash_missing" {
|
run_with_err_repo_hash_missing() { #@test
|
||||||
request="$(jq --null-input --compact-output \
|
request="$(jq --null-input --compact-output \
|
||||||
--arg s "${response_sock}" \
|
--arg s "${response_sock}" \
|
||||||
'{"response_sock":$s,"repo_name":"test"}')"
|
'{"response_sock":$s,"repo_name":"test"}')"
|
||||||
run send_request "${request}"
|
run send_request "${request}"
|
||||||
echo "status: got ${status}, expected ${err_repo_hash_missing}"
|
echo "status: got ${status:?}, expected ${err_repo_hash_missing}"
|
||||||
[ "${status}" -eq "${err_repo_hash_missing}" ]
|
[ "${status}" -eq "${err_repo_hash_missing}" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "run with err_repo_hash_empty" {
|
run_with_err_repo_hash_empty() { #@test
|
||||||
request="$(jq --null-input --compact-output \
|
request="$(jq --null-input --compact-output \
|
||||||
--arg s "${response_sock}" \
|
--arg s "${response_sock}" \
|
||||||
'{"response_sock":$s,"repo_name":"test","repo_hash":""}')"
|
'{"response_sock":$s,"repo_name":"test","repo_hash":""}')"
|
||||||
run send_request "${request}"
|
run send_request "${request}"
|
||||||
echo "status: got ${status}, expected ${err_repo_hash_empty}"
|
echo "status: got ${status:?}, expected ${err_repo_hash_empty}"
|
||||||
[ "${status}" -eq "${err_repo_hash_empty}" ]
|
[ "${status}" -eq "${err_repo_hash_empty}" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "run with err_repo_tag_empty" {
|
run_with_err_repo_tag_empty() { #@test
|
||||||
request="$(jq --null-input --compact-output \
|
request="$(jq --null-input --compact-output \
|
||||||
--arg s "${response_sock}" \
|
--arg s "${response_sock}" \
|
||||||
'{"response_sock":$s,"repo_name":"test","repo_hash":"hash","repo_tag":""}')"
|
'{"response_sock":$s,"repo_name":"test","repo_hash":"hash","repo_tag":""}')"
|
||||||
run send_request "${request}"
|
run send_request "${request}"
|
||||||
echo "status: got ${status}, expected ${err_repo_tag_empty}"
|
echo "status: got ${status:?}, expected ${err_repo_tag_empty}"
|
||||||
[ "${status}" -eq "${err_repo_tag_empty}" ]
|
[ "${status}" -eq "${err_repo_tag_empty}" ]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue