summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOliver Poignant <oliver@poignant.se>2016-03-11 23:48:52 +0100
committerOliver Poignant <oliver@poignant.se>2016-03-11 23:48:52 +0100
commit87797cfbb4d0b640997e3501144ca2f59b55baae (patch)
tree24cf592540c04b34862979c7f17337e908f27bea
parent65e382c3909841766c8c7ebc64cb74e4dbf1d990 (diff)
downloadGit-Auto-Deploy-87797cfbb4d0b640997e3501144ca2f59b55baae.zip
Git-Auto-Deploy-87797cfbb4d0b640997e3501144ca2f59b55baae.tar.gz
Git-Auto-Deploy-87797cfbb4d0b640997e3501144ca2f59b55baae.tar.bz2
Debian packaging setup
-rw-r--r--.gitignore1
-rw-r--r--bin/gad-generate-config8
-rwxr-xr-xbin/gad-server9
-rw-r--r--debian/changelog5
-rw-r--r--debian/control17
-rw-r--r--docs/Useful commands.md6
-rw-r--r--gitautodeploy/gitautodeploy.py21
-rwxr-xr-xplatforms/debian/scripts/create-debian-package.sh53
-rw-r--r--platforms/debian/stdeb/compat (renamed from debian/compat)0
-rw-r--r--platforms/debian/stdeb/conffiles0
-rw-r--r--platforms/debian/stdeb/control17
-rwxr-xr-xplatforms/debian/stdeb/git-auto-deploy.init152
-rw-r--r--platforms/debian/stdeb/git-auto-deploy.install1
-rwxr-xr-xplatforms/debian/stdeb/git-auto-deploy.postinst39
-rwxr-xr-xplatforms/debian/stdeb/git-auto-deploy.prerm1
-rwxr-xr-xplatforms/debian/stdeb/rules (renamed from debian/rules)8
-rw-r--r--platforms/debian/stdeb/source/format (renamed from debian/source/format)0
-rw-r--r--platforms/debian/stdeb/source/options (renamed from debian/source/options)0
-rw-r--r--setup.py4
-rw-r--r--stdeb.cfg2
20 files changed, 293 insertions, 51 deletions
diff --git a/.gitignore b/.gitignore
index 751356f..61aa586 100644
--- a/.gitignore
+++ b/.gitignore
@@ -68,3 +68,4 @@ GitAutoDeploy.conf.json
# Ignore
deb_dist
*.tar.gz
+MANIFEST
diff --git a/bin/gad-generate-config b/bin/gad-generate-config
deleted file mode 100644
index dc556f6..0000000
--- a/bin/gad-generate-config
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env python
-
-if __name__ == '__main__':
- import sys
- import os
- sys.path.append(os.path.realpath(os.path.join(os.path.dirname(os.path.realpath(__file__)), '../')))
- from gitautodeploy.cli import generate_config
- generate_config()
diff --git a/bin/gad-server b/bin/gad-server
deleted file mode 100755
index 0d3e492..0000000
--- a/bin/gad-server
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-if __name__ == '__main__':
- import sys
- import os
- sys.path.append(os.path.realpath(os.path.join(os.path.dirname(os.path.realpath(__file__)), '../')))
- import gitautodeploy
-
- gitautodeploy.main()
diff --git a/debian/changelog b/debian/changelog
deleted file mode 100644
index d70e2f1..0000000
--- a/debian/changelog
+++ /dev/null
@@ -1,5 +0,0 @@
-git-auto-deploy (0.2.0-1) unstable; urgency=low
-
- * source package automatically created by stdeb 0.8.5
-
- -- Oliver Poignant <oliver@poignant.se> Tue, 08 Mar 2016 22:44:44 +0100
diff --git a/debian/control b/debian/control
deleted file mode 100644
index b61ef5c..0000000
--- a/debian/control
+++ /dev/null
@@ -1,17 +0,0 @@
-Source: git-auto-deploy
-Maintainer: Oliver Poignant <oliver@poignant.se>
-Section: python
-Priority: optional
-Build-Depends: python-setuptools (>= 0.6b3), python-all (>= 2.6.6-3), debhelper (>= 7.4.3)
-Standards-Version: 3.9.1
-
-
-
-Package: python-git-auto-deploy
-Architecture: all
-Depends: ${misc:Depends}, ${python:Depends}
-Description: Deploy your GitHub, GitLab or Bitbucket projects automatical
-
-
-
-
diff --git a/docs/Useful commands.md b/docs/Useful commands.md
index 37b39c6..fb25613 100644
--- a/docs/Useful commands.md
+++ b/docs/Useful commands.md
@@ -1,7 +1,11 @@
# Create debian package
+apt-get install python-stdeb fakeroot python-all
+
https://pypi.python.org/pypi/stdeb/0.8.5
-python setup.py --command-packages=stdeb.command bdist_deb
+python setup.py --command-packages=stdeb.command –package=git-auto-deploy bdist_deb
+python setup.py --command-packages=stdeb.command sdist_dsc bdist_deb
+
# Debianize
python setup.py --command-packages=stdeb.command debianize
diff --git a/gitautodeploy/gitautodeploy.py b/gitautodeploy/gitautodeploy.py
index f7008ac..a618d40 100644
--- a/gitautodeploy/gitautodeploy.py
+++ b/gitautodeploy/gitautodeploy.py
@@ -94,11 +94,13 @@ class GitAutoDeploy(object):
# Add current CWD if not identical to script path
if not os.getcwd() in target_directories:
target_directories.append(os.getcwd())
-
+
target_directories.reverse()
# Look for a *conf.json or *config.json
for dir in target_directories:
+ if not os.access(dir, os.R_OK):
+ continue
for item in os.listdir(dir):
if re.match(r".*conf(ig)?\.json$", item):
path = os.path.realpath(os.path.join(dir, item))
@@ -106,10 +108,11 @@ class GitAutoDeploy(object):
return path
return
-
+
def read_json_file(self, file_path):
import json
import logging
+ import re
logger = logging.getLogger()
try:
@@ -120,7 +123,19 @@ class GitAutoDeploy(object):
raise e
try:
- data = json.loads(json_string)
+ # Remove commens from JSON (makes sample config options easier)
+ regex = r'\s*(#|\/{2}).*$'
+ regex_inline = r'(:?(?:\s)*([A-Za-z\d\.{}]*)|((?<=\").*\"),?)(?:\s)*(((#|(\/{2})).*)|)$'
+ lines = json_string.split('\n')
+
+ for index, line in enumerate(lines):
+ if re.search(regex, line):
+ if re.search(r'^' + regex, line, re.IGNORECASE):
+ lines[index] = ""
+ elif re.search(regex_inline, line):
+ lines[index] = re.sub(regex_inline, r'\1', line)
+
+ data = json.loads('\n'.join(lines))
except Exception as e:
logger.critical("%s file is not valid JSON\n" % file_path)
diff --git a/platforms/debian/scripts/create-debian-package.sh b/platforms/debian/scripts/create-debian-package.sh
new file mode 100755
index 0000000..9043cf0
--- /dev/null
+++ b/platforms/debian/scripts/create-debian-package.sh
@@ -0,0 +1,53 @@
+#!/usr/bin/env bash
+#
+# This script compiles a binary Debian package (.deb)
+#
+
+# Get current path
+ORIGINAL_CWD=`pwd -P`
+
+# Get script path (<path>/Git-Auto-Deploy/platforms/debian/scripts)
+pushd `dirname $0` > /dev/null
+SCRIPT_PATH=`pwd -P`
+popd > /dev/null
+
+# Path to Git-Auto-Deploy project directory
+PROJECT_PATH=`readlink -f $SCRIPT_PATH/../../../`
+cd $PROJECT_PATH
+
+# Get package name and version
+PACKAGE_NAME=`python setup.py --name`
+PACKAGE_VERSION=`python setup.py --version`
+
+# Generate a Debian source package
+echo
+echo "** Generating a Debian source package **"
+python setup.py --command-packages=stdeb.command sdist_dsc
+
+# Path to newly generated deb_dist directory
+TARGET=`readlink -f "$PROJECT_PATH/deb_dist/$PACKAGE_NAME-$PACKAGE_VERSION"`
+
+# Copy configuration files
+echo
+echo "** Copying configuration files **"
+cp -vr "$PROJECT_PATH/platforms/debian/stdeb"/* "$PROJECT_PATH/deb_dist/$PACKAGE_NAME-$PACKAGE_VERSION/debian/"
+#cp -vrp "$PROJECT_PATH/platforms/debian/etc"/* "$PROJECT_PATH/deb_dist/$PACKAGE_NAME-$PACKAGE_VERSION/debian/"
+#cp -vrp "$PROJECT_PATH/platforms/debian/etc"/* "$PROJECT_PATH/deb_dist/$PACKAGE_NAME-$PACKAGE_VERSION/debian/source"
+#mkdir "$PROJECT_PATH/deb_dist/$PACKAGE_NAME-$PACKAGE_VERSION/debian/gitautodeploy"
+#mkdir "$PROJECT_PATH/deb_dist/$PACKAGE_NAME-$PACKAGE_VERSION/debian/git-auto-deploy"
+#mkdir "$PROJECT_PATH/deb_dist/$PACKAGE_NAME-$PACKAGE_VERSION/debian/tmp"
+#cp -vrp "$PROJECT_PATH/platforms/debian/etc"/* "$PROJECT_PATH/deb_dist/$PACKAGE_NAME-$PACKAGE_VERSION/debian/gitautodeploy"
+#cp -vrp "$PROJECT_PATH/platforms/debian/etc"/* "$PROJECT_PATH/deb_dist/$PACKAGE_NAME-$PACKAGE_VERSION/debian/tmp"
+#cp -vrp "$PROJECT_PATH/platforms/debian/etc"/* "$PROJECT_PATH/deb_dist/$PACKAGE_NAME-$PACKAGE_VERSION/gitautodeploy"
+
+# Copile a Debian binary package
+echo
+echo "** Compiling a Debian binary package **"
+cd "$PROJECT_PATH/deb_dist/"*
+
+#dpkg-source --commit
+
+dpkg-buildpackage -rfakeroot -uc -us
+
+# Restore cwd
+cd $ORIGINAL_CWD \ No newline at end of file
diff --git a/debian/compat b/platforms/debian/stdeb/compat
index 7f8f011..7f8f011 100644
--- a/debian/compat
+++ b/platforms/debian/stdeb/compat
diff --git a/platforms/debian/stdeb/conffiles b/platforms/debian/stdeb/conffiles
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/platforms/debian/stdeb/conffiles
diff --git a/platforms/debian/stdeb/control b/platforms/debian/stdeb/control
new file mode 100644
index 0000000..e436648
--- /dev/null
+++ b/platforms/debian/stdeb/control
@@ -0,0 +1,17 @@
+Source: git-auto-deploy
+Maintainer: Oliver Poignant <oliver@poignant.se>
+Section: python
+Priority: optional
+Build-Depends: python-all (>= 2.6.6-3), debhelper (>= 7)
+Standards-Version: 3.9.1
+
+
+
+Package: git-auto-deploy
+Architecture: all
+Depends: ${misc:Depends}, ${python:Depends}
+Description: Deploy your GitHub, GitLab or Bitbucket projects automatical
+ GitAutoDeploy consists of a HTTP server that listens for Web hook requests sent from GitHub, GitLab or Bitbucket servers. This application allows you to continuously and automatically deploy you projects each time you push new commits to your repository.
+
+
+
diff --git a/platforms/debian/stdeb/git-auto-deploy.init b/platforms/debian/stdeb/git-auto-deploy.init
new file mode 100755
index 0000000..3d7f0bf
--- /dev/null
+++ b/platforms/debian/stdeb/git-auto-deploy.init
@@ -0,0 +1,152 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: gitautodeploy
+# Required-Start: $remote_fs $syslog $network
+# Required-Stop: $remote_fs $syslog $network
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Script to start Autodeploy Git
+# Description: Autodeploy script for Gitlab
+### END INIT INFO
+
+# Author: JA Nache <nache.nache@gmail.com>
+
+NAME="git-auto-deploy"
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+DESC="GitAutodeploy"
+DAEMON="/usr/bin/git-auto-deploy"
+DAEMON_UID="git-auto-deploy"
+DAEMON_GID="git-auto-deploy"
+RUNDIR=/var/run/$NAME
+PIDFILE=/var/run/$NAME/$NAME.pid
+#PWD=/opt/Git-Auto-Deploy/
+OPTIONS="--daemon-mode --pid-file $PIDFILE --config /etc/$NAME.conf.json"
+SCRIPTNAME="/etc/init.d/$NAME"
+
+# Exit if the package is not installed
+#[ -x $DAEMON ] || echo "$name is not installed" && exit 0
+
+# Load the VERBOSE setting and other rcS variables
+. /lib/init/vars.sh
+
+# Define LSB log_* functions.
+. /lib/lsb/init-functions
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME || ENABLE_GITAUTODEPLOY=yes
+
+#
+# Check whether daemon starting is enabled
+#
+check_start_daemon() {
+ if [ ! "$ENABLE_GITAUTODEPLOY" = "yes" ]; then
+ [ "$VERBOSE" != no ] && \
+ log_warning_msg "Not starting gitautodeploy, disabled via /etc/default/gitautodeploy"
+ return 1
+ else
+ return 0
+ fi
+}
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ echo "Starting.."
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+
+ if [ ! -d $RUNDIR ]; then
+ mkdir $RUNDIR
+ fi
+
+ if ! dpkg-statoverride --list $dir >/dev/null 2>&1; then
+ chown $DAEMON_UID:$DAEMON_GID $RUNDIR
+ chmod g-w,o-rwx $RUNDIR
+ fi
+
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --startas $DAEMON \
+ --name $NAME --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --startas $DAEMON \
+ --name $NAME --umask 0027 --chuid $DAEMON_UID:$DAEMON_GID -- $OPTIONS \
+ || return 2
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ echo "Stopping.."
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --signal 6 --retry 30 --pidfile $PIDFILE
+}
+
+#
+# Function that reload the daemon/service
+#
+do_reload()
+{
+ echo "Reloading.."
+ start-stop-daemon --stop -s 1 --pidfile $PIDFILE
+}
+
+case "$1" in
+ start)
+ check_start_daemon || exit 0
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC " "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ status)
+ status_of_proc -p $PIDFILE "python" "$DAEMON" && exit 0 || exit $?
+
+ ;;
+ reload)
+ do_reload
+ ;;
+ restart|force-reload)
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
+
diff --git a/platforms/debian/stdeb/git-auto-deploy.install b/platforms/debian/stdeb/git-auto-deploy.install
new file mode 100644
index 0000000..cbe91a4
--- /dev/null
+++ b/platforms/debian/stdeb/git-auto-deploy.install
@@ -0,0 +1 @@
+gitautodeploy/data/git-auto-deploy.conf.json etc
diff --git a/platforms/debian/stdeb/git-auto-deploy.postinst b/platforms/debian/stdeb/git-auto-deploy.postinst
new file mode 100755
index 0000000..c5a2af0
--- /dev/null
+++ b/platforms/debian/stdeb/git-auto-deploy.postinst
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+NAME="git-auto-deploy"
+GAD_UID="git-auto-deploy"
+GAD_GID="git-auto-deploy"
+
+CONF_DIR="/etc/$NAME"
+DATA_DIR="/var/lib/$NAME"
+PID_DIR="/var/run/$NAME"
+
+# Add user and group
+adduser --quiet --system --home $CONF_DIR --no-create-home --ingroup nogroup --disabled-password $GAD_UID
+addgroup --system $GAD_GID
+adduser $GAD_UID $GAD_GID
+
+# Create config dir
+mkdir -p $CONF_DIR
+chown -R $GAD_UID:$GAD_GID $CONF_DIR
+chmod 750 $CONF_DIR
+
+# Create log file
+touch /var/log/$NAME.log
+chown $GAD_UID:$GAD_GID /var/log/$NAME.log
+chmod 750 /var/log/$NAME.log
+
+# Create data directory
+mkdir -p $DATA_DIR
+chown -R $GAD_UID:$GAD_GID $DATA_DIR
+chmod 750 $DATA_DIR
+
+# Create pid file
+mkdir -p $PID_DIR
+chown -R $GAD_UID:$GAD_GID $PID_DIR
+chmod 750 $PID_DIR
+touch $PID_DIR/$NAME.pid
+chown $GAD_UID:$GAD_GID $PID_DIR/$NAME.pid
+chmod 750 $PID_DIR/$NAME.pid
+
+update-rc.d $NAME defaults
diff --git a/platforms/debian/stdeb/git-auto-deploy.prerm b/platforms/debian/stdeb/git-auto-deploy.prerm
new file mode 100755
index 0000000..a9bf588
--- /dev/null
+++ b/platforms/debian/stdeb/git-auto-deploy.prerm
@@ -0,0 +1 @@
+#!/bin/bash
diff --git a/debian/rules b/platforms/debian/stdeb/rules
index e127a70..27cda30 100755
--- a/debian/rules
+++ b/platforms/debian/stdeb/rules
@@ -1,7 +1,7 @@
#!/usr/bin/make -f
# This file was automatically generated by stdeb 0.8.5 at
-# Tue, 08 Mar 2016 22:44:44 +0100
+# Thu, 10 Mar 2016 19:52:51 +0100
%:
dh $@ --with python2 --buildsystem=python_distutils
@@ -19,13 +19,9 @@ override_dh_auto_build:
override_dh_auto_install:
- python setup.py install --force --root=debian/python-git-auto-deploy --no-compile -O0 --install-layout=deb
+ python setup.py install --force --root=debian/git-auto-deploy --no-compile -O0 --install-layout=deb
override_dh_python2:
dh_python2 --no-guessing-versions
-
-
-
-
diff --git a/debian/source/format b/platforms/debian/stdeb/source/format
index 163aaf8..163aaf8 100644
--- a/debian/source/format
+++ b/platforms/debian/stdeb/source/format
diff --git a/debian/source/options b/platforms/debian/stdeb/source/options
index bcc4bbb..bcc4bbb 100644
--- a/debian/source/options
+++ b/platforms/debian/stdeb/source/options
diff --git a/setup.py b/setup.py
index f5bdcc4..dd33072 100644
--- a/setup.py
+++ b/setup.py
@@ -6,10 +6,10 @@ setup(name='git-auto-deploy',
author='Oliver Poignant',
author_email='oliver@poignant.se',
packages = find_packages(),
+ package_data={'gitautodeploy': ['data/*']},
entry_points={
'console_scripts': [
- 'gad-server = gitautodeploy.__main__:main',
- 'gad-generate-config = gitautodeploy.cli:generate_config'
+ 'git-auto-deploy = gitautodeploy.__main__:main'
]
},
description = "Deploy your GitHub, GitLab or Bitbucket projects automatically on Git push events or webhooks.",
diff --git a/stdeb.cfg b/stdeb.cfg
new file mode 100644
index 0000000..10ce100
--- /dev/null
+++ b/stdeb.cfg
@@ -0,0 +1,2 @@
+[DEFAULT]
+Package: git-auto-deploy