70 lines
1.7 KiB
Bash
Executable File
70 lines
1.7 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Human readable names of binary distributions
|
|
DISTRO=(macOS linux)
|
|
# Operating systems for the respective distributions
|
|
OS=(darwin linux)
|
|
# Architectures for the respective distributions
|
|
ARCH=(amd64 amd64)
|
|
|
|
# Version
|
|
VERSION=$1
|
|
|
|
if [[ -z "${VERSION}" ]]; then
|
|
echo "Version must be specified when running build"
|
|
fi
|
|
|
|
[[ -z "${VERSION}" ]] && VERSION='unknownver' || VERSION="${VERSION}"
|
|
GIT_COMMIT=$(git rev-list -1 HEAD)
|
|
|
|
# Change to the root directory of the repository
|
|
cd $(git rev-parse --show-toplevel)
|
|
|
|
echo "Cleaning working directories..."
|
|
rm -rf ./webroot/hls/* ./hls/* ./webroot/thumbnail.png
|
|
|
|
echo "Creating version ${VERSION} from commit ${GIT_COMMIT}"
|
|
|
|
mkdir -p dist
|
|
|
|
build() {
|
|
NAME=$1
|
|
OS=$2
|
|
ARCH=$3
|
|
VERSION=$4
|
|
GIT_COMMIT=$5
|
|
|
|
echo "Building ${NAME} (${OS}/${ARCH}) release..."
|
|
|
|
mkdir -p dist/${NAME}/config
|
|
|
|
# Default files
|
|
cp config/config-example.yaml dist/${NAME}/config/config.yaml
|
|
cp webroot/static/content-example.md dist/${NAME}/webroot/static/content.md
|
|
|
|
cp -R webroot/ dist/${NAME}/webroot/
|
|
cp -R doc/ dist/${NAME}/doc/
|
|
cp README.md dist/${NAME}
|
|
|
|
env CGO_ENABLED=0 GOOS=$OS GOARCH=$ARCH go build -ldflags "-X main.GitCommit=$GIT_COMMIT -X main.BuildVersion=$VERSION -X main.BuildType=$NAME" -a -o dist/$NAME/owncast
|
|
|
|
pushd dist/${NAME} >> /dev/null
|
|
zip -r -q -8 ../owncast-$NAME-$VERSION.zip .
|
|
popd >> /dev/null
|
|
|
|
rm -rf dist/${NAME}/
|
|
}
|
|
|
|
for i in "${!DISTRO[@]}"; do
|
|
build ${DISTRO[$i]} ${OS[$i]} ${ARCH[$i]} $VERSION $GIT_COMMIT
|
|
done
|
|
|
|
# Create the tag
|
|
git tag -a "v${VERSION}" -m "Release build v${VERSION}"
|
|
|
|
# On macOS open the Github page for new releases so they can be uploaded
|
|
if test -f "/usr/bin/open"; then
|
|
open "https://github.com/gabek/owncast/releases/new"
|
|
open dist
|
|
fi
|