Compare commits
6 Commits
Author | SHA1 | Date | |
---|---|---|---|
64e71f7f98 | |||
3b36d33d09 | |||
50d83ea4b9 | |||
b24dab7b84 | |||
7685d2acd0 | |||
21b48b1f3c |
@ -9,6 +9,14 @@ pipeline:
|
|||||||
commands:
|
commands:
|
||||||
- npm run lint
|
- npm run lint
|
||||||
|
|
||||||
|
linux_package:
|
||||||
|
group: packaging
|
||||||
|
image: node:18
|
||||||
|
commands:
|
||||||
|
- npm run grunt package
|
||||||
|
when:
|
||||||
|
event: tag
|
||||||
|
|
||||||
gitea_release:
|
gitea_release:
|
||||||
image: plugins/gitea-release
|
image: plugins/gitea-release
|
||||||
settings:
|
settings:
|
||||||
@ -16,5 +24,38 @@ pipeline:
|
|||||||
from_secret: gitea_api_key
|
from_secret: gitea_api_key
|
||||||
base_url: https://git.metaunix.net
|
base_url: https://git.metaunix.net
|
||||||
title: "${CI_COMMIT_TAG}"
|
title: "${CI_COMMIT_TAG}"
|
||||||
|
files:
|
||||||
|
- "dist/*.deb"
|
||||||
|
when:
|
||||||
|
event: tag
|
||||||
|
|
||||||
|
copy_deb_package:
|
||||||
|
image: appleboy/drone-scp
|
||||||
|
settings:
|
||||||
|
host: "repo.int.metaunix.net"
|
||||||
|
username:
|
||||||
|
from_secret: repo_admin
|
||||||
|
password:
|
||||||
|
from_secret: repo_password
|
||||||
|
port: 22
|
||||||
|
target: /srv/repo/apt/overseer/
|
||||||
|
source: dist/*.deb
|
||||||
|
strip_components: 1
|
||||||
|
when:
|
||||||
|
event: tag
|
||||||
|
|
||||||
|
update_repos:
|
||||||
|
image: appleboy/drone-ssh
|
||||||
|
settings:
|
||||||
|
host:
|
||||||
|
- repo.int.metaunix.net
|
||||||
|
username:
|
||||||
|
from_secret: repo_admin
|
||||||
|
password:
|
||||||
|
from_secret: repo_password
|
||||||
|
port: 22
|
||||||
|
command_timeout: 2m
|
||||||
|
script:
|
||||||
|
- "sudo ~/scripts/update_repo.sh"
|
||||||
when:
|
when:
|
||||||
event: tag
|
event: tag
|
||||||
|
84
Gruntfile.js
Normal file
84
Gruntfile.js
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
module.exports = function(grunt) {
|
||||||
|
|
||||||
|
// Project configuration.
|
||||||
|
grunt.initConfig({
|
||||||
|
pkg: grunt.file.readJSON('package.json'),
|
||||||
|
|
||||||
|
deb_package: {
|
||||||
|
options: {
|
||||||
|
maintainer: 'Gregory Ballantine <gballantine@bitgoblin.tech>',
|
||||||
|
long_description: 'A simple web app to track inventory records.',
|
||||||
|
output: './dist/',
|
||||||
|
},
|
||||||
|
build: {
|
||||||
|
files: [
|
||||||
|
{
|
||||||
|
cwd: './',
|
||||||
|
src: 'index.js',
|
||||||
|
dest: '/opt/overseer'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
cwd: './',
|
||||||
|
src: 'src/**/*',
|
||||||
|
dest: '/opt/overseer/'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
cwd: './',
|
||||||
|
src: 'views/**/*',
|
||||||
|
dest: '/opt/overseer/'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
cwd: './',
|
||||||
|
src: 'config/**/*',
|
||||||
|
dest: '/opt/overseer/'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
cwd: './',
|
||||||
|
src: 'public/**/*',
|
||||||
|
dest: '/opt/overseer/'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
cwd: './build/etc/',
|
||||||
|
src: 'production.json',
|
||||||
|
dest: '/etc/overseer/'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
cwd: './build/etc/',
|
||||||
|
src: 'overseer.service',
|
||||||
|
dest: '/etc/systemd/system/'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
cwd: './',
|
||||||
|
src: 'bin/**/*',
|
||||||
|
dest: '/opt/overseer/'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
cwd: './',
|
||||||
|
src: 'node_modules/**/*',
|
||||||
|
dest: '/opt/overseer/'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
cwd: './',
|
||||||
|
src: 'LICENSE',
|
||||||
|
dest: '/opt/overseer/',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
links: {
|
||||||
|
'/usr/bin/overseer': '/opt/overseer/bin/start.sh'
|
||||||
|
},
|
||||||
|
scripts: {
|
||||||
|
postinst: {
|
||||||
|
src: './build/scripts/postinst.sh'
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Load the plugin that provides the "uglify" task.
|
||||||
|
grunt.loadNpmTasks('grunt-deb');
|
||||||
|
|
||||||
|
// Default task(s).
|
||||||
|
grunt.registerTask('package', ['deb_package']);
|
||||||
|
|
||||||
|
};
|
5
bin/start.sh
Executable file
5
bin/start.sh
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
cd /opt/overseer/
|
||||||
|
|
||||||
|
/usr/bin/env node index.js
|
11
build/etc/overseer.service
Normal file
11
build/etc/overseer.service
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Overseer inventory tracking app
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User=overseer
|
||||||
|
Group=overseer
|
||||||
|
ExecStart=/usr/bin/overseer
|
||||||
|
SuccessExitStatus=143
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
6
build/etc/production.json
Normal file
6
build/etc/production.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"database": {
|
||||||
|
"driver": "sqlite",
|
||||||
|
"connection_string": "/opt/overseer/data/overseer.db"
|
||||||
|
}
|
||||||
|
}
|
41
build/scripts/postinst.sh
Executable file
41
build/scripts/postinst.sh
Executable file
@ -0,0 +1,41 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
GETENT_USER=$(getent passwd overseer)
|
||||||
|
GETENT_GROUP=$(getent group overseer)
|
||||||
|
|
||||||
|
# Create the overseer user if it doesn't already exist
|
||||||
|
if [ "$GETENT_USER" = "" ]; then
|
||||||
|
echo "Creating the 'overseer' user."
|
||||||
|
useradd -r overseer
|
||||||
|
else
|
||||||
|
echo "The 'overseer' user already exists, skipping creation."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create the overseer group if it doesn't already exist
|
||||||
|
if [ "$GETENT_GROUP" = "" ]; then
|
||||||
|
echo "Creating the 'overseer' group."
|
||||||
|
groupadd overseer
|
||||||
|
usermod -aG overseer overseer
|
||||||
|
else
|
||||||
|
echo "The 'overseer' group already exists, skipping creation."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Change the directory ownership of /etc
|
||||||
|
chown -R overseer:overseer /etc/overseer
|
||||||
|
|
||||||
|
# Create the log directory under /var/log
|
||||||
|
if [ ! -d /var/log/overseer ]; then
|
||||||
|
echo "Creating /var/log/overseer to store log files."
|
||||||
|
mkdir /var/log/overseer
|
||||||
|
chown overseer:overseer /var/log/overseer
|
||||||
|
else
|
||||||
|
echo "/var/log/overseer already exists, skipping creation."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Make sure the app's source and configuration files are owned the new user and group
|
||||||
|
chown -R overseer:overseer /opt/overseer
|
||||||
|
chown -R overseer:overseer /etc/overseer
|
||||||
|
|
||||||
|
#DEBHELPER#
|
||||||
|
|
||||||
|
exit 0
|
1733
package-lock.json
generated
1733
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -1,10 +1,11 @@
|
|||||||
{
|
{
|
||||||
"name": "overseer",
|
"name": "overseer",
|
||||||
"version": "0.1.0",
|
"version": "0.1.1",
|
||||||
"description": "Self-hosted inventory tracker",
|
"description": "Self-hosted inventory tracker",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "node index.js",
|
"start": "node index.js",
|
||||||
|
"grunt": "grunt",
|
||||||
"gulp": "gulp",
|
"gulp": "gulp",
|
||||||
"nodemon": "nodemon index.js",
|
"nodemon": "nodemon index.js",
|
||||||
"lint": "eslint index.js src/**/*.js",
|
"lint": "eslint index.js src/**/*.js",
|
||||||
@ -19,10 +20,16 @@
|
|||||||
"tracking"
|
"tracking"
|
||||||
],
|
],
|
||||||
"author": "Gregory Ballanine <gballantine@bitgoblin.tech>",
|
"author": "Gregory Ballanine <gballantine@bitgoblin.tech>",
|
||||||
|
"uploaders": [
|
||||||
|
{ "name": "Gregory Ballantine", "email": "gballantine@bitgoblin.tech" }
|
||||||
|
],
|
||||||
"license": "BSD-2-Clause",
|
"license": "BSD-2-Clause",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"eslint": "^8.26.0",
|
"eslint": "^8.26.0",
|
||||||
"eslint-config-google": "^0.14.0",
|
"eslint-config-google": "^0.14.0",
|
||||||
|
"grunt": "^1.5.3",
|
||||||
|
"grunt-cli": "^1.4.3",
|
||||||
|
"grunt-deb": "^0.2.5",
|
||||||
"gulp": "^4.0.2",
|
"gulp": "^4.0.2",
|
||||||
"gulp-sass": "^5.1.0",
|
"gulp-sass": "^5.1.0",
|
||||||
"nodemon": "^2.0.20",
|
"nodemon": "^2.0.20",
|
||||||
|
Reference in New Issue
Block a user