diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index d7d7019..ae2816c 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -79,7 +79,7 @@ jobs: export GOARM=${{ matrix.arm_version }} fi - OUTPUT="${OUTPUT}" + OUTPUT="${OUTPUT}${{ matrix.ext }}" echo "Building $OUTPUT" GOOS=${{ matrix.os }} GOARCH=${{ matrix.arch }} go build -ldflags="-s -w" -trimpath -o "$OUTPUT" shell: bash @@ -105,7 +105,31 @@ jobs: cp -r ./web $BUILD_DIR/usr/share/$PKG_NAME/ chmod +x $BUILD_DIR/usr/bin/$PKG_NAME - # 4. Create Control File + # 4. Handle .env (Copy as a .template so it doesn't overwrite existing ones) + if [ -f ".env" ]; then + cp .env $BUILD_DIR/usr/share/$PKG_NAME/.env.template + else + echo "PORT=8080" > $BUILD_DIR/usr/share/$PKG_NAME/.env.template + fi + + # 5. Create the systemd Service File + cat < $BUILD_DIR/etc/systemd/system/$PKG_NAME.service + [Unit] + Description=Slideshow Application Service + After=network.target + + [Service] + Type=simple + ExecStart=/usr/bin/$PKG_NAME + WorkingDirectory=/usr/share/$PKG_NAME + Restart=always + User=root + + [Install] + WantedBy=multi-user.target + EOF + + # 6. Create Control File cat < $BUILD_DIR/DEBIAN/control Package: $PKG_NAME Version: $VERSION @@ -116,7 +140,28 @@ jobs: Description: Slideshow Application EOF - # 5. Build .deb + # 7. Optional: Add post-install script to enable service automatically + echo "create service" + cat < $BUILD_DIR/DEBIAN/postinst + #!/bin/sh + # Check if .env exists in the target share folder + if [ ! -f "/usr/share/$PKG_NAME/.env" ]; then + echo "Creating new .env from template..." + cp /usr/share/$PKG_NAME/.env.template /usr/share/$PKG_NAME/.env + else + echo ".env already exists, skipping template copy to preserve settings." + fi + + echo "reload" + systemctl daemon-reload + echo "enable service" + systemctl enable $PKG_NAME.service + echo "start service" + systemctl start $PKG_NAME.service + EOF + chmod 555 $BUILD_DIR/DEBIAN/postinst + + # 8. Build .deb dpkg-deb --build $BUILD_DIR shell: bash