From fbe0d430bba081c0c6505c5c832fb21dde44784f Mon Sep 17 00:00:00 2001 From: Tyler Date: Mon, 11 Sep 2017 00:00:18 -0400 Subject: [PATCH] Build proper packages --- .gitlab-ci.yml | 24 ++++- ci/package.sh | 15 ---- debian/changelog | 5 -- debian/compat | 1 - debian/control | 13 --- debian/copyright | 0 debian/deb-simple.dirs | 4 - debian/deb-simple.init | 159 ---------------------------------- debian/postinst | 14 --- debian/rules | 13 --- debian/source/format | 1 - packaging/build-package.sh | 11 +++ packaging/deb-simple.service | 11 +++ packaging/scripts/preinst.deb | 37 ++++++++ sample_conf.ini | 2 +- 15 files changed, 82 insertions(+), 228 deletions(-) delete mode 100644 ci/package.sh delete mode 100644 debian/changelog delete mode 100644 debian/compat delete mode 100644 debian/control delete mode 100644 debian/copyright delete mode 100644 debian/deb-simple.dirs delete mode 100644 debian/deb-simple.init delete mode 100644 debian/postinst delete mode 100644 debian/rules delete mode 100644 debian/source/format create mode 100644 packaging/build-package.sh create mode 100644 packaging/deb-simple.service create mode 100644 packaging/scripts/preinst.deb diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 48b90a1..f762e6a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,15 +1,35 @@ image: git.meow.tf:4567/tyler/golang-glide:1.8 +before: + - export VERSION=`grep "VERSION" src/meow.tf/deb-simple/server.go | head -n 1 | awk '{print $5}' | sed -e 's/^"//' -e 's/"$//' | tr -d '\n'` + - chmod +x packaging/build-package.sh + build: script: - export GOPATH=`pwd` - cd $CI_PROJECT_DIR/src/meow.tf/deb-simple - glide install - cd $CI_PROJECT_DIR - - mkdir -p build/i386 build/amd64 build/arm + - mkdir -p build/i386 build/amd64 build/armv7 - go build -o build/amd64/deb-simple - GOOS=linux GOARCH=386 go build -o build/i386/deb-simple - - GOOS=linux GOARCH=arm GOARM=7 go build -o build/arm/deb-simple + - GOOS=linux GOARCH=arm GOARM=7 go build -o build/armv7/deb-simple + artifacts: + paths: + - build + +package: + stage: package + script: + - cd $CI_PROJECT_DIR + - mkdir -p build/i386 build/amd64 build/armv7 || true + - ARCH=i386 packaging/build-package.sh + - ARCH=amd64 packaging/build-package.sh + - ARCH=armv7 packaging/build-package.sh + - echo "Uploading to repository server" + - curl -X POST "$UPLOAD_URL" -F "file=@build/i386/deb-simple_$VERSION.deb" + - curl -X POST "$UPLOAD_URL" -F "file=@build/amd64/deb-simple_$VERSION.deb" + - curl -X POST "$UPLOAD_URL" -F "file=@build/armv7/deb-simple_$VERSION.deb" artifacts: paths: - build diff --git a/ci/package.sh b/ci/package.sh deleted file mode 100644 index 5ca9ead..0000000 --- a/ci/package.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env bash - -curl -s -X POST -F "file=@debian/changelog" -F "name=deb-simple" -F "version=$DEB_SIMPLE_VERSION" -F "author=Gitlab CI" -F "email=gitlab@knightswarm.com" -F "changes[]=Auto build for $CI_BUILD_REF" https://api.meow.tf/changelog/update > debian/changelog - -if [ ! -z "$GITLAB_CI_PUT_URL" ]; then - curl -s -X PUT -F "file_path=debian/changelog" -F branch_name=master -F "commit_message=[ci skip] Update changelog for $CI_BUILD_REF" -F "content= Fri, 25 Mar 2016 21:53:18 +0000 \ No newline at end of file diff --git a/debian/compat b/debian/compat deleted file mode 100644 index ec63514..0000000 --- a/debian/compat +++ /dev/null @@ -1 +0,0 @@ -9 diff --git a/debian/control b/debian/control deleted file mode 100644 index 98863d5..0000000 --- a/debian/control +++ /dev/null @@ -1,13 +0,0 @@ -Source: deb-simple -Maintainer: Tyler Stuyfzand -Section: misc -Priority: optional -Standards-Version: 3.9.2 -Build-Depends: debhelper (>= 9) - -Package: deb-simple -Architecture: any -Depends: ${misc:Depends} -Description: Dead Simple Debian Repository - A debian repository server which supports file uploads - and package signing \ No newline at end of file diff --git a/debian/copyright b/debian/copyright deleted file mode 100644 index e69de29..0000000 diff --git a/debian/deb-simple.dirs b/debian/deb-simple.dirs deleted file mode 100644 index 9cc7c13..0000000 --- a/debian/deb-simple.dirs +++ /dev/null @@ -1,4 +0,0 @@ -usr/bin -etc -opt/deb-simple -opt/deb-simple/repo \ No newline at end of file diff --git a/debian/deb-simple.init b/debian/deb-simple.init deleted file mode 100644 index 18a19ea..0000000 --- a/debian/deb-simple.init +++ /dev/null @@ -1,159 +0,0 @@ -#! /bin/sh -### BEGIN INIT INFO -# Provides: deb-simple -# Required-Start: $remote_fs $syslog -# Required-Stop: $remote_fs $syslog -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: Debian Package Server -# Description: Dead Simple Debian Package Server written in Go -### END INIT INFO - -# Author: Tyler Stuyfzand -# -# Please remove the "Author" lines above and replace them -# with your own name if you copy and modify this script. - -# Do NOT "set -e" - -# PATH should only include /usr/* if it runs after the mountnfs.sh script -PATH=/sbin:/usr/sbin:/bin:/usr/bin -DESC="Simple Debian Package Server" -NAME=deb-simple -USER=deb-simple -DAEMON=/usr/bin/$NAME -DAEMON_ARGS="-c /etc/deb-simple.conf" -PIDFILE=/var/run/$NAME.pid -SCRIPTNAME=/etc/init.d/$NAME - -# Exit if the package is not installed -[ -x "$DAEMON" ] || exit 0 - -# Read configuration variable file if it is present -[ -r /etc/default/$NAME ] && . /etc/default/$NAME - -# Load the VERBOSE setting and other rcS variables -. /lib/init/vars.sh - -# Define LSB log_* functions. -# Depend on lsb-base (>= 3.2-14) to ensure that this file is present -# and status_of_proc is working. -. /lib/lsb/init-functions - -# -# Function that starts the daemon/service -# -do_start() -{ - # Return - # 0 if daemon has been started - # 1 if daemon was already running - # 2 if daemon could not be started - start-stop-daemon --start --quiet --chuid $USER:$USER --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ - || return 1 - start-stop-daemon --start --quiet --chuid $USER:$USER --pidfile $PIDFILE --make-pidfile --background --exec $DAEMON -- \ - $DAEMON_ARGS \ - || return 2 - # Add code here, if necessary, that waits for the process to be ready - # to handle requests from services started subsequently which depend - # on this one. As a last resort, sleep for some time. -} - -# -# Function that stops the daemon/service -# -do_stop() -{ - # 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 --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME - RETVAL="$?" - [ "$RETVAL" = 2 ] && return 2 - # Wait for children to finish too if this is a daemon that forks - # and if the daemon is only ever run from this initscript. - # If the above conditions are not satisfied then add some other code - # that waits for the process to drop all resources that could be - # needed by services started subsequently. A last resort is to - # sleep for some time. - start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON - [ "$?" = 2 ] && return 2 - # Many daemons don't delete their pidfiles when they exit. - rm -f $PIDFILE - return "$RETVAL" -} - -# -# Function that sends a SIGHUP to the daemon/service -# -do_reload() { - # - # If the daemon can reload its configuration without - # restarting (for example, when it is sent a SIGHUP), - # then implement that here. - # - start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME - return 0 -} - -case "$1" in - start) - [ "$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 "$DAEMON" "$NAME" && exit 0 || exit $? - ;; - #reload|force-reload) - # - # If do_reload() is not implemented then leave this commented out - # and leave 'force-reload' as an alias for 'restart'. - # - #log_daemon_msg "Reloading $DESC" "$NAME" - #do_reload - #log_end_msg $? - #;; - restart|force-reload) - # - # If the "reload" option is implemented then remove the - # 'force-reload' alias - # - 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|restart|reload|force-reload}" >&2 - echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 - exit 3 - ;; -esac - -: \ No newline at end of file diff --git a/debian/postinst b/debian/postinst deleted file mode 100644 index b042450..0000000 --- a/debian/postinst +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -set -e - -if test "$1" = "configure"; then - if ! getent passwd deb-simple > /dev/null; then - adduser --quiet --system --group \ - --home /opt/deb-simple \ - --no-create-home \ - deb-simple - fi - mkdir -p /opt/deb-simple/repo || true - chown -R deb-simple:deb-simple /opt/deb-simple -fi \ No newline at end of file diff --git a/debian/rules b/debian/rules deleted file mode 100644 index 2158a12..0000000 --- a/debian/rules +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/make -f -%: - dh $@ - -override_dh_auto_install: - dh_auto_install - install -d debian/deb-simple/opt/deb-simple - install -d debian/deb-simple/opt/deb-simple/repo - install -m 644 sample_conf.json debian/deb-simple/etc/deb-simple.conf - -override_dh_builddeb: - mkdir ./build || true - dh_builddeb --destdir=./build -- \ No newline at end of file diff --git a/debian/source/format b/debian/source/format deleted file mode 100644 index 163aaf8..0000000 --- a/debian/source/format +++ /dev/null @@ -1 +0,0 @@ -3.0 (quilt) diff --git a/packaging/build-package.sh b/packaging/build-package.sh new file mode 100644 index 0000000..dc77f50 --- /dev/null +++ b/packaging/build-package.sh @@ -0,0 +1,11 @@ +fpm -s dir -t deb -p build/amd64/deb-simple_$VERSION.deb \ + -n astra -v $VERSION \ + --config-files /etc/deb-simple.conf \ + --deb-priority optional --force \ + --deb-compression bzip2 \ + --description "Dead Simple Package Manager" \ + -m "Tyler Stuyfzand " --vendor "Meow.tf" + --before-install packaging/scripts/preinst.deb \ + -a $ARCH build/$ARCH/deb-simple=/usr/bin/deb-simple \ + packaging/deb-simple.service=/lib/systemd/system/deb-simple.service \ + sample_conf.ini=/etc/deb-simple.conf \ No newline at end of file diff --git a/packaging/deb-simple.service b/packaging/deb-simple.service new file mode 100644 index 0000000..1919c2a --- /dev/null +++ b/packaging/deb-simple.service @@ -0,0 +1,11 @@ +[Unit] +Description=Dead Simple Repository Server + +[Service] +User=deb-simple +Group=deb-simple +Restart=on-failure +ExecStart=/usr/bin/deb-simple -c /etc/deb-simple.conf + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/packaging/scripts/preinst.deb b/packaging/scripts/preinst.deb new file mode 100644 index 0000000..99f5794 --- /dev/null +++ b/packaging/scripts/preinst.deb @@ -0,0 +1,37 @@ +#! /bin/sh +# preinst script for deb-simple +set -e +addsimpleuser() { + if ! getent passwd deb-simple > /dev/null; then + adduser --quiet --system --group \ + --disabled-login \ + --home /var/lib/deb-simple \ + --no-create-home \ + --shell /bin/false \ + deb-simple + fi +} + +createdirectories() { + mkdir -p /opt/deb-simple /var/lib/deb-simple/repo || true + chown -R deb-simple:deb-simple /var/lib/deb-simple +} + +case "$1" in + install) + addsimpleuser + createdirectories + ;; + upgrade) + addsimpleuser + createdirectories + ;; + abort-upgrade) + ;; + *) + echo "preinst called with unknown argument \`$1'" >&2 + exit 0 + ;; +esac + +exit 0 \ No newline at end of file diff --git a/sample_conf.ini b/sample_conf.ini index 7d80c97..1905742 100644 --- a/sample_conf.ini +++ b/sample_conf.ini @@ -4,7 +4,7 @@ key = "abcdefg" ssl = false [repo] -root = "repo/" +root = "/var/lib/deb-simple/repo" distros = "stable" architectures = "all,i386,amd64"