Compare commits

...

4 Commits

Author SHA1 Message Date
797d6cf1d3 Added functionality to clone file permissions when archiving them
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2023-04-16 16:11:07 -04:00
fa4e51a0e8 Updated Makefile to change 'build' command to 'compile'
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-02-11 15:33:08 -05:00
b52a1ef08e Added script to build deb package
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2022-10-26 19:35:23 -04:00
9b59d7485e Added a version subcommand
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2022-09-16 23:21:47 -04:00
8 changed files with 193 additions and 8 deletions

View File

@ -15,8 +15,8 @@ pipeline:
image: golang:1.16 image: golang:1.16
commands: commands:
- go mod vendor - go mod vendor
- GOOS=linux GOARCH=amd64 go build -o "dist/adept-linux-amd64-${CI_COMMIT_TAG}" - GOOS=linux GOARCH=amd64 go build -ldflags "-X git.metaunix.net/BitGoblin/adept/cmd.version=${CI_COMMIT_TAG}" -o "dist/adept-linux-amd64-${CI_COMMIT_TAG}"
- GOOS=windows GOARCH=amd64 go build -o "dist/adept-windows-amd64-${CI_COMMIT_TAG}.exe" - GOOS=windows GOARCH=amd64 go build -ldflags "-X git.metaunix.net/BitGoblin/adept/cmd.version=${CI_COMMIT_TAG}" -o "dist/adept-windows-amd64-${CI_COMMIT_TAG}.exe"
when: when:
event: tag event: tag

View File

@ -2,7 +2,7 @@ BINARY_NAME=adept
all: build test all: build test
build: compile:
go build -o ${BINARY_NAME} adept.go go build -o ${BINARY_NAME} adept.go
test: test:
@ -31,7 +31,8 @@ uninstall:
rm /usr/bin/${BINARY_NAME} rm /usr/bin/${BINARY_NAME}
rm /etc/systemd/system/${BINARY_NAME}.service rm /etc/systemd/system/${BINARY_NAME}.service
rm -rf /etc/${BINARY_NAME} rm -rf /etc/${BINARY_NAME}
clean: clean:
go clean go clean
rm ${BINARY_NAME}
.PHONY: all test clean

44
bin/build_deb.sh Executable file
View File

@ -0,0 +1,44 @@
#!/bin/bash
# Check that we've been supplied a valid version
VERSION="$1"
if [ "$VERSION" == "" ]; then
echo -e "You must supply a version tag like './build_deb.sh 1.2.3'."
exit 1
fi
# Trim the leading 'v' from version number
if [[ "${VERSION:0:1}" == "v" ]]; then
VERSION="${VERSION:1}"
fi
# Create workspace for our deb package
WORKDIR="adept_$VERSION"
mkdir "$WORKDIR"
# Copy build sources into workspace
cp -r build/etc "$WORKDIR/"
mkdir -p "$WORKDIR/usr/bin/"
cp "dist/adept-linux-amd64-v$VERSION" "$WORKDIR/usr/bin/adept"
# Create debian control file
mkdir "$WORKDIR/DEBIAN"
cat > "$WORKDIR/DEBIAN/control"<< EOF
Package: adept
Version: $VERSION
Section: video
Priority: optional
Architecture: amd64
Depends: ffmpeg (>= 4), lsof
Maintainer: Gregory Ballantine <gballantine@bitgoblin.tech>
Description: Bit Goblin video transcoding service.
EOF
# Copy maintainer scripts
cp build/scripts/* "$WORKDIR/DEBIAN/"
#chmod +rx "$WORKDIR"/DEBIAN/pre*
chmod +rx "$WORKDIR"/DEBIAN/post*
# Build deb package!
dpkg-deb --build "$WORKDIR"
# Cleanup
rm -rf "$WORKDIR"

74
bin/build_rpm.sh Executable file
View File

@ -0,0 +1,74 @@
#!/bin/bash
# Check that we've been supplied a valid version
VERSION="$1"
if [ "$VERSION" == "" ]; then
echo -e "You must supply a version tag like './build_rpm.sh 1.2.3'."
exit 1
fi
# Trim the leading 'v' from version number
if [[ "${VERSION:0:1}" == "v" ]]; then
VERSION="${VERSION:1}"
fi
# Tar up source files
mkdir rpm-temp
cp -r cmd config transcoder util adept.go go.mod go.sum LICENSE Makefile README.md rpm-temp/
tar cvzf "adept-$VERSION.tar.gz" rpm-temp/*
mv "adept-$VERSION.tar.gz" ~/rpmbuild/SOURCES/
# Create debian control file
cat > "./adept.spec"<< EOF
Name: adept
Version: $VERSION
Release: 1%{?dist}
Summary: Bit Goblin video transcoding service
License: BSD 2-Clause
Source0: %{name}-%{version}.tar.gz
BuildRequires: golang
BuildRequires: systemd-rpm-macros
Provides: %{name} = %{version}
%description
Bit Goblin video transcoding service
%global debug_package %{nil}
%prep
%autosetup
%build
go build -v -o %{name}
%install
install -Dpm 0755 %{name} %{buildroot}%{_bindir}/%{name}
install -Dpm 0755 build/etc/%{name}/%{name}.toml %{buildroot}%{_sysconfdir}/%{name}/%{name}.toml
install -Dpm 644 build/etc/systemd/%{name}.service %{buildroot}%{_unitdir}/%{name}.service
%check
# go test should be here... :)
%post
%systemd_post %{name}.service
%preun
%systemd_preun %{name}.service
%files
%dir %{_sysconfdir}/%{name}
%{_bindir}/%{name}
%{_unitdir}/%{name}.service
%config(noreplace) %{_sysconfdir}/%{name}/%{name}.toml
%changelog
* Thu Nov 17 2022 Gregory Ballantine $VERSION
- check git.metaunix.net/BitGoblin/adept for a changelog
EOF
rpmbuild -ba adept.spec

View File

@ -1,9 +1,9 @@
log_to_file = true log_to_file = true
log_file = '~/adept/adept.log' log_file = '/var/log/adept/adept.log'
log_level = 'info' log_level = 'info'
[transcoder] [transcoder]
repository = '~/adept' repository = '/srv/adept'
interval = 15 interval = 15
video_format = 'mov' video_format = 'mov'
video_codec = 'dnxhd' video_codec = 'dnxhd'

36
build/scripts/postinst Executable file
View File

@ -0,0 +1,36 @@
#!/bin/sh
GETENT_USER=$(getent passwd adept)
# Create the adept user if it doesn't already exist
if [ "$GETENT_USER" = "" ]; then
echo "Creating the 'adept' user."
useradd -r adept
else
echo "The 'adept' user already exists, skipping creation."
fi
GETENT_GROUP=$(getent group adept)
# Create the adept group if it doesn't already exist
if [ "$GETENT_GROUP" = "" ]; then
echo "Creating the 'adept' group."
groupadd adept
usermod -aG adept adept
else
echo "The 'adept' group already exists, skipping creation."
fi
# Change the directory ownership of /etc
chown -R adept:adept /etc/adept
# Create the log directory under /var/log
if [ ! -d /var/log/adept ]; then
echo "Creating /var/log/adept to store log files."
mkdir /var/log/adept
chown adept:adept /var/log/adept
else
echo "/var/log/adept already exists, skipping creation."
fi
#DEBHELPER#
exit 0

28
cmd/version.go Normal file
View File

@ -0,0 +1,28 @@
package cmd
import (
"log"
"runtime"
"github.com/spf13/cobra"
)
var (
version string
)
// initializes the sub-command
func init() {
rootCmd.AddCommand(versionCmd)
}
var versionCmd = &cobra.Command{
Use: "version",
Short: "Display version info.",
Long: `In case you're curious, run this command to find out the version info.`,
Run: func(cmd *cobra.Command, args []string) {
log.Printf("Adept version %s", version)
log.Printf("Built with Go %s", runtime.Version())
log.Printf("View source at https://git.metaunix.net/BitGoblin/adept")
},
}

View File

@ -73,6 +73,8 @@ func (r *Repository) ArchiveFile(inFile string) {
log.Fatalf("Error opening file in ingest: %s.", err) log.Fatalf("Error opening file in ingest: %s.", err)
os.Exit(1) os.Exit(1)
} }
sourceStat, _ := source.Stat()
sourceMode := sourceStat.Mode()
defer source.Close() defer source.Close()
// attempt to create destination file // attempt to create destination file
@ -82,7 +84,7 @@ func (r *Repository) ArchiveFile(inFile string) {
os.Exit(1) os.Exit(1)
} }
defer destination.Close() defer destination.Close()
destination.Chmod(0755) destination.Chmod(sourceMode)
// perform the file copy // perform the file copy
_, err = io.Copy(destination, source) _, err = io.Copy(destination, source)