diff --git a/.woodpecker.yml b/.woodpecker.yml index 400b2f2..cfba4de 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -10,6 +10,14 @@ pipeline: commands: - mvn clean compile assembly:single + package: + image: maven:3-jdk-11 + commands: + - apt update && apt install -y rpm + - mvn clean compile package + when: + event: tag + gitea_release: image: plugins/gitea-release settings: @@ -18,6 +26,8 @@ pipeline: base_url: https://git.metaunix.net title: "${CI_COMMIT_TAG}" files: - - target/Dragoon-*.jar + - target/dragoon-*.jar + - target/dragoon-*.deb + - target/rpm/dragoon/RPMS/noarch/dragoon-*.rpm when: event: tag diff --git a/pom.xml b/pom.xml index ab0aab8..bb6877b 100644 --- a/pom.xml +++ b/pom.xml @@ -5,11 +5,35 @@ 4.0.0 tech.bitgoblin - Dragoon + dragoon 0.3.1 Dragoon https://www.bitgoblin.tech + Automated video transcoder service. + 2022 + + + Bit Goblin + https://www.bitgoblin.tech + + + + + gballantine + Gregory Ballantine + gballantine@bitgoblin.tech + + + + + + BSD + https://opensource.org/licenses/BSD-2-Clause + repo + Simplified BSD license. + + UTF-8 @@ -42,81 +66,192 @@ - - - - - maven-clean-plugin - 3.1.0 - - - - maven-resources-plugin - 3.0.2 - - - maven-compiler-plugin - 3.8.0 - - - maven-surefire-plugin - 2.22.1 - - - maven-jar-plugin - 3.0.2 - - - - **/log4j.properties - - - - - tech.bitgoblin.App - - - - - - maven-assembly-plugin - - - package - - single - - - - - - - tech.bitgoblin.App - - - - jar-with-dependencies - - - - - maven-install-plugin - 2.5.2 - - - maven-deploy-plugin - 2.8.2 - - - - maven-site-plugin - 3.7.1 - - - maven-project-info-reports-plugin - 3.0.0 - - - + + + + maven-clean-plugin + 3.1.0 + + + + maven-resources-plugin + 3.0.2 + + + maven-compiler-plugin + 3.8.0 + + + maven-surefire-plugin + 2.22.1 + + + maven-jar-plugin + 3.0.2 + + + + **/log4j.properties + + + + + tech.bitgoblin.App + + + + + + maven-assembly-plugin + + + package + + single + + + + + + + tech.bitgoblin.App + + + + jar-with-dependencies + + + + + com.aerse.maven + deb-maven-plugin + 1.16 + + + package + package + + package + + + + + dragoon + dragoon + ${project.basedir}/src/build/deb + /opt + + + + + + false + false + + + ${basedir}/src/build/deb + / + + + ${basedir}/target/dragoon-${project.version}-jar-with-dependencies.jar + /opt/dragoon/dragoon.jar + + + + + + org.codehaus.mojo + rpm-maven-plugin + 2.2.0 + + + generate-rpm + + rpm + + + + + BSD 2-Clause + Applications/Multimedia + src/main/resources/icon.gif + Bit Goblin + /opt + ${project.basedir}/src/build/changelog.txt + linux + + + /opt/dragoon + 755 + dragoon + dragoon + + + /opt/dragoon/dragoon.jar + 755 + dragoon + dragoon + + + ${basedir}/target/dragoon-${project.version}-jar-with-dependencies.jar + + + + + /etc/dragoon + true + 755 + dragoon + dragoon + + + ${project.basedir}/src/build/deb/etc/dragoon + + + + + /etc/systemd/system/dragoon.service + 644 + root + root + + + ${project.basedir}/src/build/deb/etc/systemd/system/dragoon.service + + + + + + java-11-openjdk + ffmpeg + + + + + + src/build/scripts/postinstall.sh + utf-8 + true + + + + + maven-install-plugin + 2.5.2 + + + maven-deploy-plugin + 2.8.2 + + + + maven-site-plugin + 3.7.1 + + + maven-project-info-reports-plugin + 3.0.0 + + diff --git a/src/build/changelog.txt b/src/build/changelog.txt new file mode 100644 index 0000000..d735876 --- /dev/null +++ b/src/build/changelog.txt @@ -0,0 +1 @@ +# Check https://git.metaunix.net/bitgoblin/dragoon/releases for the current changelog \ No newline at end of file diff --git a/src/build/deb/etc/dragoon/config.example.toml b/src/build/deb/etc/dragoon/config.example.toml new file mode 100644 index 0000000..d7c871c --- /dev/null +++ b/src/build/deb/etc/dragoon/config.example.toml @@ -0,0 +1,8 @@ +# This example transcodes footage to DNxHD 1080p60 for use in video editors like DaVinci Resolve. +[transcoder] +repo_path = '~/videos' # location of the videos to transcode +video_format = 'mov' # video container format +video_codec = 'dnxhd' # video codec to use +video_parameters = 'scale=1920x1080,fps=60,format=yuv422p' # video extra format parameters flag - this will be broken later into separate attributes +video_profile = 'dnxhr_hq' # DNxHD has multiple presets for various video qualities +audio_codec = 'pcm_s16le' # audio codec to use diff --git a/src/build/deb/etc/systemd/system/dragoon.service b/src/build/deb/etc/systemd/system/dragoon.service new file mode 100644 index 0000000..2b7bbea --- /dev/null +++ b/src/build/deb/etc/systemd/system/dragoon.service @@ -0,0 +1,11 @@ +[Unit] +Description=Dragoon video transcoder service + +[Service] +User=dragoon +Group=dragoon +ExecStart=/usr/bin/java -jar '/opt/dragoon/dragoon.jar' +SuccessExitStatus=143 + +[Install] +WantedBy=multi-user.target diff --git a/src/build/scripts/postinstall.sh b/src/build/scripts/postinstall.sh new file mode 100644 index 0000000..b1d2c4f --- /dev/null +++ b/src/build/scripts/postinstall.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +GETENT_USER=$(getent passwd dragoon) +GETENT_GROUP=$(getent group dragoon) + +# Create the dragoon user if it doesn't already exist +if [ "$GETENT_USER" = "" ]; then + useradd -r dragoon +else + echo "The 'dragoon' user already exists, skipping creation." +fi + +# Create the dragoon group if it doesn't already exist +if [ "$GETENT_GROUP" = "" ]; then + groupadd dragoon + usermod -aG dragoon dragoon +else + echo "The 'dragoon' group already exists, skipping creation." +fi + +# Change the directory ownership of /opt and /etc +chown -R dragoon:dragoon /etc/dragoon +chown -R dragoon:dragoon /opt/dragoon diff --git a/src/main/resources/icon.gif b/src/main/resources/icon.gif new file mode 100644 index 0000000..1b8ac52 Binary files /dev/null and b/src/main/resources/icon.gif differ