build a debian package

This commit is contained in:
Denis Zheleztsov 2016-11-10 11:54:27 +03:00
parent 7d5bacf138
commit c1bec161be
3 changed files with 112 additions and 1 deletions

View File

@ -6,3 +6,17 @@ Service discovery for Apache Mesos.
* Discovery over mesos-dns * Discovery over mesos-dns
* Applications config reload * Applications config reload
## Build
build debian package
```
cd build
./build build_package
```
A deb-package will be placed in build/out
build surok base docker image
```
cd build
./build surok_image
```

View File

@ -6,3 +6,17 @@
* Обнаружение через mesos-dns * Обнаружение через mesos-dns
* Перезагрузка конфигурации приложения * Перезагрузка конфигурации приложения
## Сборка
Сборка deb-пакета
```
cd build
./build build_package
```
deb-пакет будет лежать в build/out
Сборка базового docker-образа surok
```
cd build
./build surok_image
```

83
build/build.sh Executable file
View File

@ -0,0 +1,83 @@
#!/bin/bash
set -e
function cleanup() {
echo 'Cleanup'
rm -rf ./surok
rm -rf ./out
rm -f ./Dockerfile*
}
function build_builder() {
mkdir -p ./surok
for f in ../*; do
if [[ $f != '../.git' ]] && [[ $f != '../build' ]]; then
cp -r $f ./surok;
fi
done
SUROK_DEPS=$(grep '^Depends:' surok/debian/control | awk -F': ' '{print $2}' | sed 's/,//g')
CUR_DIR=$(pwd)
cat > Dockerfile.builder <<EOF
FROM debian:latest
# Build debian package
MAINTAINER Denis Zheleztsov <difrex.punk@gmail.com>
COPY surok /opt/surok_build
# Install build depends
RUN apt-get update && apt-get -y install devscripts debhelper
ENTRYPOINT cd /opt/surok_build && dpkg-buildpackage -uc -us && \
mv /opt/surok_*.deb /opt/out
EOF
}
function build_package() {
# run build
echo 'Build builder'
docker build -t surok_builder:latest -f Dockerfile.builder .
docker run -ti -v $CUR_DIR/out:/opt/out surok_builder:latest
}
function build_surok_base() {
build_builder
build_package
DEB=$(cd out && ls | grep .deb)
cat > Dockerfile.surok <<EOF
FROM debian:latest
MAINTAINER Denis Zheleztsov <difrex.punk@gmail.com>
ADD out/${DEB} /tmp
RUN apt-get update && apt-get install -y ${SUROK_DEPS}
RUN dpkg -i /tmp/${DEB}
ENTRYPOINT cd /opt/surok && python3 surok.py -c /etc/surok/conf/surok.json
EOF
docker build -t surok_base:latest -f Dockerfile.surok .
}
function usage() {
echo "$0 <clean|build_package|surok_image>"
}
case $1 in clean)
cleanup
;;
build_package)
build_builder
build_package
;;
surok_image)
build_surok_base
;;
*)
usage
;;
esac