Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 29 additions & 8 deletions .github/workflows/build-and-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -109,13 +109,13 @@ jobs:
needs: build-deb
strategy:
matrix:
distro:
- debian10
- debian11
- debian12
- ubuntu2004
- ubuntu2204
- ubuntu2404
image:
- geerlingguy/docker-debian10-ansible:latest
- geerlingguy/docker-debian11-ansible:latest
- geerlingguy/docker-debian12-ansible:latest
- geerlingguy/docker-ubuntu2004-ansible:latest
- geerlingguy/docker-ubuntu2204-ansible:latest
- geerlingguy/docker-ubuntu2404-ansible:latest
steps:
- uses: actions/checkout@v4.1.7
- uses: actions/download-artifact@v4.1.8
Expand All @@ -129,7 +129,28 @@ jobs:
with:
molecule_working_dir: './deployment/ansible/gnomeshade'
env:
MOLECULE_DISTRO: ${{ matrix.distro }}
MOLECULE_IMAGE: ${{ matrix.image }}

test-deb:
name: Test debian package
runs-on: ubuntu-latest
timeout-minutes: 10
needs: build-deb
strategy:
matrix:
dir:
- deployment/docker/devuan/chimaera
- deployment/docker/devuan/daedalus
steps:
- uses: actions/checkout@v4.1.7
- uses: actions/download-artifact@v4.1.8
id: download
with:
name: Gnomeshade.WebApi_linux-x64.deb

- name: Test debian package
working-directory: ${{ matrix.dir }}
run: ../../../test-deb.sh ${{ steps.download.outputs.download-path }}/gnomeshade.deb ${{ secrets.DEMO_ADMIN_PASSWORD }}

docker:
name: Test docker container
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ driver:
name: docker
platforms:
- name: instance
image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest"
image: "${MOLECULE_IMAGE}"
command: ${MOLECULE_DOCKER_COMMAND:-""}
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw
Expand Down
42 changes: 14 additions & 28 deletions deployment/debian.sh
Original file line number Diff line number Diff line change
@@ -1,50 +1,33 @@
#!/bin/bash
set -e

sudo apt update
sudo apt install lintian -y
sudo apt-get update
sudo apt-get install lintian moreutils -y

archive_path="$1"
version=$(cat version)
full_version="$version.$2"
changelog_path="gnomeshade/usr/share/doc/gnomeshade/changelog.gz"
maintainer_email="valters.melnalksnis@gnomeshade.org"
maintainer="Valters Melnalksnis <$maintainer_email>"
time="Fri, 24 Jun 2022 19:28:01 +0200"

mkdir -p gnomeshade/opt/gnomeshade
unzip "$archive_path" -d gnomeshade/opt/gnomeshade
mkdir -p ./deployment/debian/gnomeshade/opt/gnomeshade
unzip "$archive_path" -d ./deployment/debian/gnomeshade/opt/gnomeshade

chmod +x gnomeshade/opt/gnomeshade/Gnomeshade.WebApi
cd ./deployment/debian/
mv gnomeshade/opt/gnomeshade/appsettings.json gnomeshade/etc/opt/gnomeshade/appsettings.json

chmod +x gnomeshade/opt/gnomeshade/Gnomeshade.WebApi
chmod 0755 gnomeshade/opt/gnomeshade/libe_sqlite3.so
strip gnomeshade/opt/gnomeshade/libe_sqlite3.so

mkdir -p gnomeshade/DEBIAN
cp deployment/debian/postinst gnomeshade/DEBIAN/postinst
cp deployment/debian/prerm gnomeshade/DEBIAN/prerm

export FULL_VERSION=$full_version
export MAINTAINER=$maintainer
envsubst <deployment/debian/control >gnomeshade/DEBIAN/control

mkdir -p gnomeshade/etc/opt/gnomeshade
mv gnomeshade/opt/gnomeshade/appsettings.json gnomeshade/etc/opt/gnomeshade/appsettings.json
echo "/etc/opt/gnomeshade/appsettings.json" >>gnomeshade/DEBIAN/conffiles

mkdir -p gnomeshade/usr/share/doc/gnomeshade
export MAINTAINER_EMAIL=$maintainer_email
envsubst <deployment/debian/copyright >gnomeshade/usr/share/doc/gnomeshade/copyright

export CHANGELOG_TIME=$time
envsubst <deployment/debian/changelog >changelog
cat changelog

gzip -n --best changelog
mv changelog.gz $changelog_path

mkdir -p gnomeshade/lib/systemd/system
cp deployment/debian/gnomeshade.service gnomeshade/lib/systemd/system/gnomeshade.service
envsubst < gnomeshade/DEBIAN/control | sponge gnomeshade/DEBIAN/control
envsubst < gnomeshade/usr/share/doc/gnomeshade/copyright | sponge gnomeshade/usr/share/doc/gnomeshade/copyright
envsubst < gnomeshade/usr/share/doc/gnomeshade/changelog | gzip --no-name --best > "gnomeshade/usr/share/doc/gnomeshade/changelog.gz"
rm gnomeshade/usr/share/doc/gnomeshade/changelog

dpkg-deb --root-owner-group --build gnomeshade

Expand All @@ -54,3 +37,6 @@ lintian \
--suppress-tags dir-or-file-in-opt,dir-or-file-in-etc-opt \
--suppress-tags unstripped-binary-or-object \
gnomeshade.deb

cd ../../
mv ./deployment/debian/gnomeshade.deb ./gnomeshade.deb
2 changes: 2 additions & 0 deletions deployment/debian/gnomeshade/DEBIAN/conffiles
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/etc/opt/gnomeshade/appsettings.json
/etc/init.d/gnomeshade
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@ set -e

GNOMESHADE_USER=gnomeshade

if [[ -z "$(getent group ${GNOMESHADE_USER})" ]]; then
if [[ -z "$(getent group ${GNOMESHADE_USER})" ]]
then
addgroup --system ${GNOMESHADE_USER}
fi

if [[ -z "$(getent passwd ${GNOMESHADE_USER})" ]]; then
if [[ -z "$(getent passwd ${GNOMESHADE_USER})" ]]
then
adduser \
--system --ingroup ${GNOMESHADE_USER} ${GNOMESHADE_USER} \
--no-create-home --home /nonexistent \
Expand All @@ -17,4 +19,9 @@ fi
chown gnomeshade /etc/opt/gnomeshade --recursive
chown gnomeshade /opt/gnomeshade --recursive

deb-systemd-invoke enable gnomeshade.service
if [[ $(systemctl) =~ -\.mount ]]
then
deb-systemd-invoke enable gnomeshade.service
else
update-rc.d gnomeshade defaults
fi
9 changes: 9 additions & 0 deletions deployment/debian/gnomeshade/DEBIAN/postrm
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/bin/bash
set -e

if [[ $(systemctl) =~ -\.mount ]]
then
exit
else
update-rc.d gnomeshade remove
fi
9 changes: 9 additions & 0 deletions deployment/debian/gnomeshade/DEBIAN/prerm
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/bin/bash
set -e

if [[ $(systemctl) =~ -\.mount ]]
then
deb-systemd-invoke stop gnomeshade.service
else
exit
fi
119 changes: 119 additions & 0 deletions deployment/debian/gnomeshade/etc/init.d/gnomeshade
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
#!/bin/bash

### BEGIN INIT INFO
# Provides: gnomeshade
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Gnomeshade server
### END INIT INFO

# Source LSB helpers
. /lib/lsb/init-functions

# Process name (for display only)
NAME=gnomeshade

# Where is the actual executable for the daemon
DAEMON=/opt/gnomeshade/Gnomeshade.WebApi
WORKING_DIRECTORY=/etc/opt/gnomeshade

# The user:group under which the daemon must run
RUN_AS_USER=gnomeshade

# pid file for the daemon
PIDFILE=/var/run/gnomeshade.pid

# If the daemon is not there, then exit.
if ! [ -x ${DAEMON} ]
then
log_failure_msg "Cannot find an executable at ${DAEMON}"
exit 1
fi

case $1 in
start)
# Check if pidfile exists
if [ -e ${PIDFILE} ]
then
# Check the actual status of process
status_of_proc -p ${PIDFILE} ${DAEMON} ${NAME} && status="0" || status="$?"
# If the status is successfully, no need to start again.
[ "${status}" = "0" ] && exit 0
fi
# Start the daemon.
log_daemon_msg "Starting ${NAME}"
# Start the daemon with the help of start-stop-daemon
if ASPNETCORE_WEBROOT=/opt/gnomeshade/wwwroot DOTNET_gcServer=0 start-stop-daemon --start --quiet --oknodo --pidfile ${PIDFILE} --make-pidfile --background \
--chuid ${RUN_AS_USER} --chdir ${WORKING_DIRECTORY} --no-close --startas ${DAEMON} -- --ENVIRONMENT=Production >> /var/log/gnomeshade
then
log_end_msg 0
else
log_end_msg 1
fi
;;
stop)
if [ -e ${PIDFILE} ]
then
status_of_proc -p ${PIDFILE} ${DAEMON} ${NAME} && status="0" || status="$?"
if [ "$status" = "0" ]; then
log_daemon_msg "Stopping ${NAME}"
if start-stop-daemon -K --signal TERM --quiet --oknodo --pidfile ${PIDFILE}
then
log_end_msg 0
rm -rf ${PIDFILE}
else
log_end_msg 1
fi
fi
else
log_daemon_msg "${NAME} is not running"
log_end_msg 0
fi
;;
restart)
$0 stop && sleep 3 && $0 start
;;
status)
# Check the status of the process.
if [ -e ${PIDFILE} ]
then
status_of_proc -p ${PIDFILE} ${DAEMON} ${NAME} && exit 0 || exit $?
else
log_daemon_msg "${NAME} is not running (no pidfile)"
log_end_msg 0
fi
;;
reload)
if [ -e ${PIDFILE} ]; then
log_daemon_msg "Reloading ${NAME}"
if start-stop-daemon -K --quiet --signal HUP --pidfile ${PIDFILE}
then
log_end_msg 0
else
log_end_msg 1
fi
else
log_failure_msg "Cannot find pidfile at ${PIDFILE}"
fi
;;
force-reload)
if [ -e ${PIDFILE} ]; then
log_daemon_msg "Reloading ${NAME}"
if start-stop-daemon -K --quiet --signal HUP --pidfile ${PIDFILE}
then
log_end_msg 0
else
log_end_msg 1
fi
else
log_failure_msg "Cannot find pidfile at ${PIDFILE}"
fi
;;
*)
# Invalid argument, print the usage message.
echo "Usage: $0 {start|stop|restart|reload|force-reload|status}"
exit 2
;;
esac
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ gnomeshade (${FULL_VERSION}) stable; urgency=low

* Placeholder

-- ${MAINTAINER} ${CHANGELOG_TIME}
-- ${MAINTAINER} Fri, 24 Jun 2022 19:28:01 +0200
4 changes: 0 additions & 4 deletions deployment/debian/prerm

This file was deleted.

8 changes: 8 additions & 0 deletions deployment/docker/devuan/chimaera/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
FROM devuan/devuan:chimaera

COPY gnomeshade.deb /gnomeshade.deb

RUN apt-get update && apt-get install -y libicu67 libssl1.1 libgssapi-krb5-2
RUN dpkg -i /gnomeshade.deb

EXPOSE 5000
8 changes: 8 additions & 0 deletions deployment/docker/devuan/daedalus/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
FROM devuan/devuan:daedalus

COPY gnomeshade.deb /gnomeshade.deb

RUN apt-get update && apt-get install -y libicu72 libssl3 libgssapi-krb5-2
RUN dpkg -i /gnomeshade.deb

EXPOSE 5000
2 changes: 1 addition & 1 deletion deployment/publish.sh
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ fi

(
cd "$publish_dir" || exit
zip -r -9 "$archive_name" .
zip -r -9 "$archive_name" . -x ./Node/\*
)

echo "artifact-name=$archive_name" >>"$GITHUB_OUTPUT"
Expand Down
Loading