Skip to content
Merged
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
86 changes: 72 additions & 14 deletions .github/workflows/publish-deb.yml
Original file line number Diff line number Diff line change
@@ -1,42 +1,100 @@
name: Build and Upload Debian Package

on:
workflow_dispatch:
inputs:
release_type:
description: "Release type"
required: true
type: choice
options:
- stable
- beta
default: stable
push:
branches:
- master
release:
types: [released]

jobs:
calculate-version:
name: Calculate Version
runs-on: ubuntu-latest
outputs:
version: ${{ steps.calver.outputs.version }}
is_beta: ${{ steps.calver.outputs.is_beta }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Calculate CalVer version
id: calver
env:
RELEASE_TYPE: ${{ github.event.inputs.release_type || 'beta' }}
run: |
YEAR=$(date -u +"%Y")
MONTH=$(date -u +"%-m")
IS_BETA=$([[ "$RELEASE_TYPE" == "beta" ]] && echo "true" || echo "false")

PREFIX="v${YEAR}.${MONTH}"

if [ "$IS_BETA" == "true" ]; then
LATEST_BETA=$(git tag -l "${PREFIX}.*-beta.*" | sed -E "s/.*-beta\.([0-9]+)/\1/" | sort -n | tail -1)
if [ -z "$LATEST_BETA" ]; then
BETA_NUM=1
else
BETA_NUM=$((LATEST_BETA + 1))
fi
LATEST_STABLE=$(git tag -l "${PREFIX}.*" | grep -v beta | sed "s/${PREFIX}\.//" | sort -n | tail -1)
PATCH=${LATEST_STABLE:-0}
NEXT_PATCH=$((PATCH + 1))
VERSION="${YEAR}.${MONTH}.${NEXT_PATCH}-beta.${BETA_NUM}"
else
LATEST_PATCH=$(git tag -l "${PREFIX}.*" | grep -v beta | sed "s/${PREFIX}\.//" | sort -n | tail -1)
if [ -z "$LATEST_PATCH" ]; then
PATCH=0
else
PATCH=$((LATEST_PATCH + 1))
fi
VERSION="${YEAR}.${MONTH}.${PATCH}"
fi

echo "version=${VERSION}" >> $GITHUB_OUTPUT
echo "is_beta=${IS_BETA}" >> $GITHUB_OUTPUT
echo "βœ… Version: ${VERSION} (Beta: ${IS_BETA})"

deb:
name: Build Debian Package
needs: calculate-version
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive

- run: sudo apt update && sudo apt install -y qemu-user-static binfmt-support

- uses: docker/build-push-action@v3
with:
context: .
outputs: build
platforms: linux/arm64
- uses: paulhatch/semantic-version@v5.4.0
id: semantic
with:
tag_prefix: ""
version_format: ${{ github.event_name == 'release' && '${major}.${minor}.${patch}' || '${major}.${minor}.${patch}-prerelease${increment}' }}

- uses: jiro4989/build-deb-action@v4
id: deb
with:
package: irl-belacoder
package: ceracoder
package_root: ./build
maintainer: IRL Software <mail@irl.software>
maintainer: CERALIVE <contact@ceralive.com>
desc: "Live video encoder with dynamic bitrate control and SRT support"
version: ${{ steps.semantic.outputs.version }}
#depends: "openssl, libssl-dev"
homepage: "https://irl.software"
version: ${{ needs.calculate-version.outputs.version }}
homepage: "https://github.com/CERALIVE/ceracoder"
arch: "arm64"
section: "unknown"
section: "video"
compress_type: zstd

- uses: actions/upload-artifact@v4
with:
name: belacoder-arm64.deb
name: ceracoder-arm64.deb
path: ${{ steps.deb.outputs.file_name }}
Loading