-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy pathdo_release.sh
executable file
·84 lines (67 loc) · 3.08 KB
/
do_release.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#!/bin/bash -Exel
echo "**********************************"
echo "Starting do_release.sh script..."
echo "**********************************"
set -o pipefail
print_help() {
set +xv
echo -e "\n\n"
echo "--------------------------------------------------"
echo "Usage: release_folder=<release folder> release_tag=<release tag> [revision=<revision>] [do_release=<true|false>] $0"
echo " Where release folder is a path to NFS folder to copy the package into"
echo " Where release tag is a git tag to release (must be already tagged in the git repo)"
echo " Where revision is a number postfix to add the to package indicating which version of the tag it is - OPTIONAL, default value 1"
echo " Where do_release is a boolean value indicating if the script will copy the created package into the release folder location - OPTIONAL, default value false"
exit 1
}
if [ -z "${release_folder}" ]; then
echo "ERROR: 'release_folder' was not set."
print_help
fi
if [ ! -e "${release_folder}" ] || [ ! -d "${release_folder}" ]; then
echo "ERROR: [${release_folder}] directory doesn't exist."
print_help
fi
if [ -z "${release_tag}" ]; then
echo "ERROR: 'release_tag' was not set."
print_help
fi
if [ -z "${revision}" ]; then
echo "WARN: 'revision' was not set, defaulting to 1"
revision=1
fi
if [ -z "${do_release}" ]; then
echo "WARN: 'do_release' was not set, defaulting to false (package will not be release)"
do_release=false
fi
env PRJ_RELEASE="${revision}" contrib/build_pkg.sh -s
MAJOR_VERSION=$(grep -e "define(\[prj_ver_major\]" configure.ac | awk '{ printf $2 };' | sed 's/)//g')
MINOR_VERSION=$(grep -e "define(\[prj_ver_minor\]" configure.ac | awk '{ printf $2 };' | sed 's/)//g')
REVISION_VERSION=$(grep -e "define(\[prj_ver_revision\]" configure.ac | awk '{ printf $2 };' | sed 's/)//g')
configure_ac_version="${MAJOR_VERSION}.${MINOR_VERSION}.${REVISION_VERSION}"
echo "FULL_VERSION from configure.ac: [${configure_ac_version}]"
if [[ "${release_tag}" != "${configure_ac_version}" ]]; then
echo "ERROR: FULL_VERSION: ${configure_ac_version} from configure.ac doesn't match tag: ${release_tag} provided! Exit"
exit 1
fi
if [ "${do_release}" = true ] ; then
echo "do_release is set to true, will release package into ${release_folder}/${release_tag}"
cd pkg/packages || { echo "pkg folder is missing, exiting..."; exit 1; }
pkg_name=$(ls -1 libxlio-"${release_tag}"-"${revision}".src.rpm)
DST_DIR=${release_folder}/${release_tag}
if [[ -e "${DST_DIR}/${pkg_name}" ]]; then
echo "ERROR: [${DST_DIR}/${pkg_name}] file already exist. Exit"
exit 1
fi
sudo -E -u swx-jenkins mkdir -p "$DST_DIR"
sudo -E -u swx-jenkins cp -v "${pkg_name}" "$DST_DIR"
cd "${release_folder}"
sudo -E -u swx-jenkins ln -s "$DST_DIR/${pkg_name}" "${pkg_name}"
echo "Release found at $DST_DIR"
else
echo "do_release is set to false, skipping package release."
fi
set +x
echo "**********************************"
echo "Finished do_release.sh script..."
echo "**********************************"