60 changed files with 1530 additions and 1151 deletions
@ -0,0 +1,40 @@
@@ -0,0 +1,40 @@
|
||||
# See https://docs.earthly.dev/ci-integration/vendor-specific-guides/gh-actions-integration |
||||
# for details. |
||||
|
||||
name: Build nightly docker |
||||
|
||||
on: |
||||
workflow_dispatch: |
||||
schedule: |
||||
- cron: '0 2 * * *' |
||||
|
||||
jobs: |
||||
Docker: |
||||
runs-on: ubuntu-latest |
||||
steps: |
||||
- uses: earthly/actions-setup@v1 |
||||
with: |
||||
version: 'latest' # or pin to an specific version, e.g. "v0.6.10" |
||||
|
||||
- name: Earthly version |
||||
run: earthly --version |
||||
|
||||
- name: Log into GitHub Container Registry |
||||
env: |
||||
GH_CR_PAT: ${{ secrets.GH_CR_PAT }} |
||||
run: echo "${{ secrets.GH_CR_PAT }}" | docker login https://ghcr.io -u ${{ github.actor }} --password-stdin |
||||
if: env.GH_CR_PAT != null |
||||
|
||||
- name: Set up QEMU |
||||
id: qemu |
||||
uses: docker/setup-qemu-action@v1 |
||||
with: |
||||
image: tonistiigi/binfmt:latest |
||||
platforms: all |
||||
|
||||
- uses: actions/checkout@v3 |
||||
- name: Checkout and build |
||||
if: env.GH_CR_PAT != null |
||||
env: |
||||
GH_CR_PAT: ${{ secrets.GH_CR_PAT }} |
||||
run: cd build/release && ./docker-nightly-earthly.sh |
@ -0,0 +1,129 @@
@@ -0,0 +1,129 @@
|
||||
VERSION --new-platform 0.6 |
||||
|
||||
FROM --platform=linux/amd64 alpine:latest |
||||
ARG version=develop |
||||
|
||||
WORKDIR /build |
||||
|
||||
build-all: |
||||
BUILD --platform=linux/amd64 --platform=linux/386 --platform=linux/arm64 --platform=linux/arm/v7 --platform=darwin/amd64 +build |
||||
|
||||
package-all: |
||||
BUILD --platform=linux/amd64 --platform=linux/386 --platform=linux/arm64 --platform=linux/arm/v7 --platform=darwin/amd64 +package |
||||
|
||||
docker-all: |
||||
BUILD --platform=linux/amd64 --platform=linux/386 --platform=linux/arm64 --platform=linux/arm/v7 +docker |
||||
|
||||
crosscompiler: |
||||
# This image is missing a few platforms, so we'll add them locally |
||||
FROM --platform=linux/amd64 bdwyertech/go-crosscompile |
||||
RUN curl -sfL "https://musl.cc/armv7l-linux-musleabihf-cross.tgz" | tar zxf - -C /usr/ --strip-components=1 |
||||
RUN curl -sfL "https://musl.cc/i686-linux-musl-cross.tgz" | tar zxf - -C /usr/ --strip-components=1 |
||||
RUN curl -sfL "https://musl.cc/x86_64-linux-musl-cross.tgz" | tar zxf - -C /usr/ --strip-components=1 |
||||
|
||||
code: |
||||
FROM --platform=linux/amd64 +crosscompiler |
||||
COPY . /build |
||||
# GIT CLONE --branch=$version git@github.com:owncast/owncast.git /build |
||||
|
||||
build: |
||||
ARG EARTHLY_GIT_HASH # provided by Earthly |
||||
ARG TARGETPLATFORM # provided by Earthly |
||||
ARG TARGETOS # provided by Earthly |
||||
ARG TARGETARCH # provided by Earthly |
||||
ARG GOOS=$TARGETOS |
||||
ARG GOARCH=$TARGETARCH |
||||
|
||||
FROM --platform=linux/amd64 +code |
||||
|
||||
RUN echo $EARTHLY_GIT_HASH |
||||
RUN echo "Finding CC configuration for $TARGETPLATFORM" |
||||
IF [ "$TARGETPLATFORM" = "linux/amd64" ] |
||||
ARG NAME=linux-64bit |
||||
ARG CC=x86_64-linux-musl-gcc |
||||
ARG CXX=x86_64-linux-musl-g++ |
||||
ELSE IF [ "$TARGETPLATFORM" = "linux/386" ] |
||||
ARG NAME=linux-32bit |
||||
ARG CC=i686-linux-musl-gcc |
||||
ARG CXX=i686-linux-musl-g++ |
||||
ELSE IF [ "$TARGETPLATFORM" = "linux/arm64" ] |
||||
ARG NAME=linux-arm64 |
||||
ARG CC=aarch64-linux-musl-gcc |
||||
ARG CXX=aarch64-linux-musl-g++ |
||||
ELSE IF [ "$TARGETPLATFORM" = "linux/arm/v7" ] |
||||
ARG NAME=linux-arm7 |
||||
ARG CC=armv7l-linux-musleabihf-gcc |
||||
ARG CXX=armv7l-linux-musleabihf-g++ |
||||
ARG GOARM=7 |
||||
ELSE IF [ "$TARGETPLATFORM" = "darwin/amd64" ] |
||||
ARG NAME=macOS-64bit |
||||
ARG CC=o64-clang |
||||
ARG CXX=o64-clang++ |
||||
ELSE |
||||
RUN echo "Failed to find CC configuration for $TARGETPLATFORM" |
||||
ARG --required CC |
||||
ARG --required CXX |
||||
END |
||||
|
||||
ENV CGO_ENABLED=1 |
||||
ENV GOOS=$GOOS |
||||
ENV GOARCH=$GOARCH |
||||
ENV GOARM=$GOARM |
||||
ENV CC=$CC |
||||
ENV CXX=$CXX |
||||
|
||||
WORKDIR /build |
||||
# MacOSX disallows static executables, so we omit the static flag on this platform |
||||
RUN go build -a -installsuffix cgo -ldflags "$([ "$GOOS"z != darwinz ] && echo "-linkmode external -extldflags -static ") -s -w -X github.com/owncast/owncast/config.GitCommit=$EARTHLY_GIT_HASH -X github.com/owncast/owncast/config.VersionNumber=$version -X github.com/owncast/owncast/config.BuildPlatform=$NAME" -o owncast main.go |
||||
COPY +tailwind/prod-tailwind.min.css /build/dist/webroot/js/web_modules/tailwindcss/dist/tailwind.min.css |
||||
|
||||
SAVE ARTIFACT owncast owncast |
||||
SAVE ARTIFACT webroot webroot |
||||
SAVE ARTIFACT README.md README.md |
||||
|
||||
tailwind: |
||||
FROM +code |
||||
WORKDIR /build/build/javascript |
||||
RUN apk add --update --no-cache npm >> /dev/null |
||||
ENV NODE_ENV=production |
||||
RUN cd /build/build/javascript && npm install --quiet --no-progress >> /dev/null && npm install -g cssnano postcss postcss-cli --quiet --no-progress --save-dev >> /dev/null && ./node_modules/.bin/tailwind build > /build/tailwind.min.css |
||||
RUN npx postcss /build/tailwind.min.css > /build/prod-tailwind.min.css |
||||
SAVE ARTIFACT /build/prod-tailwind.min.css prod-tailwind.min.css |
||||
|
||||
package: |
||||
RUN apk add --update --no-cache zip >> /dev/null |
||||
|
||||
ARG TARGETPLATFORM # provided by Earthly |
||||
IF [ "$TARGETPLATFORM" = "linux/amd64" ] |
||||
ARG NAME=linux-64bit |
||||
ELSE IF [ "$TARGETPLATFORM" = "linux/386" ] |
||||
ARG NAME=linux-32bit |
||||
ELSE IF [ "$TARGETPLATFORM" = "linux/arm64" ] |
||||
ARG NAME=linux-arm64 |
||||
ELSE IF [ "$TARGETPLATFORM" = "linux/arm/v7" ] |
||||
ARG NAME=linux-arm7 |
||||
ELSE IF [ "$TARGETPLATFORM" = "darwin/amd64" ] |
||||
ARG NAME=macOS-64bit |
||||
ELSE |
||||
ARG NAME=custom |
||||
END |
||||
|
||||
COPY (+build/webroot --platform $TARGETPLATFORM) /build/dist/webroot |
||||
COPY (+build/owncast --platform $TARGETPLATFORM) /build/dist/owncast |
||||
COPY (+build/README.md --platform $TARGETPLATFORM) /build/dist/README.md |
||||
ENV ZIPNAME owncast-$version-$NAME.zip |
||||
RUN cd /build/dist && zip -r -q -8 /build/dist/owncast.zip . |
||||
SAVE ARTIFACT /build/dist/owncast.zip owncast.zip AS LOCAL dist/$ZIPNAME |
||||
|
||||
docker: |
||||
ARG image=ghcr.io/owncast/owncast |
||||
ARG tag=develop |
||||
ARG TARGETPLATFORM |
||||
FROM --platform=$TARGETPLATFORM alpine:latest |
||||
RUN apk update && apk add --no-cache ffmpeg ffmpeg-libs ca-certificates unzip && update-ca-certificates |
||||
WORKDIR /app |
||||
COPY --platform=$TARGETPLATFORM +package/owncast.zip /app |
||||
RUN unzip -x owncast.zip && mkdir data |
||||
ENTRYPOINT ["/app/owncast"] |
||||
EXPOSE 8080 1935 |
||||
SAVE IMAGE --push $image:$tag |
@ -0,0 +1,14 @@
@@ -0,0 +1,14 @@
|
||||
#!/bin/sh |
||||
|
||||
# Docker build |
||||
# Must authenticate first: https://docs.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages#authenticating-to-github-packages |
||||
DOCKER_IMAGE="owncast-earthly" |
||||
DATE=$(date +"%Y%m%d") |
||||
VERSION="${DATE}-nightly" |
||||
|
||||
echo "Building Docker image ${DOCKER_IMAGE}..." |
||||
|
||||
# Change to the root directory of the repository |
||||
cd $(git rev-parse --show-toplevel) |
||||
|
||||
earthly --ci --push +docker-all --image="ghcr.io/owncast/${DOCKER_IMAGE}" --tag=nightly --version="${VERSION}" |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@
@@ -1 +1 @@
|
||||
self.__BUILD_MANIFEST=function(s,c,a,e,t,i,n,f,o,d,h,g,u,r,k){return{__rewrites:{beforeFiles:[],afterFiles:[],fallback:[]},"/":[s,c,a,e,t,i,n,h,"static/chunks/2494-8114e9c6571377d1.js","static/chunks/pages/index-e0ac83ceaf99b5f0.js"],"/_error":["static/chunks/pages/_error-785557186902809b.js"],"/access-tokens":[s,c,a,"static/chunks/pages/access-tokens-d328b918d1f9b3d4.js"],"/actions":[s,c,"static/chunks/pages/actions-9278698db4cd1a16.js"],"/chat/messages":[g,s,c,a,n,u,"static/chunks/pages/chat/messages-0df125d8b9455827.js"],"/chat/users":[g,s,c,a,e,n,"static/chunks/6489-cea2e8971ed16ad4.js",u,"static/chunks/pages/chat/users-201d39dd28f27416.js"],"/config-chat":["static/chunks/pages/config-chat-bacb12d23264144b.js"],"/config-federation":["static/chunks/1829-f5c4fb462b2f7e98.js","static/chunks/pages/config-federation-ea0f018fb4193b61.js"],"/config-notify":["static/chunks/pages/config-notify-10a8844dc11ca4b2.js"],"/config-public-details":[s,c,f,"static/css/e773f9ad06a56dc3.css","static/chunks/2589-e1721280387f6322.js",r,"static/chunks/pages/config-public-details-94ff52653eb2586e.js"],"/config-server-details":[k,"static/chunks/pages/config-server-details-cd516688accb84d3.js"],"/config-social-items":[s,c,r,"static/chunks/pages/config-social-items-42e2ed4eed8d4dd2.js"],"/config-storage":["static/chunks/5473-623385148d67cba2.js","static/chunks/pages/config-storage-5ff120c715bfdb04.js"],"/config-video":[s,c,k,"static/chunks/1556-d7a4de19826e46f3.js","static/chunks/pages/config-video-32d86e0ba98dc6fe.js"],"/federation/actions":[s,c,a,"static/chunks/pages/federation/actions-7cfffddef3b58d86.js"],"/federation/followers":[s,c,a,e,"static/chunks/pages/federation/followers-d2d105c342c79f98.js"],"/hardware-info":[o,a,e,t,i,d,f,"static/chunks/pages/hardware-info-4723b20a84e4f461.js"],"/help":[e,t,"static/chunks/6132-187b2bf3e1265f44.js","static/chunks/pages/help-deeb1c0f667c7d75.js"],"/logs":[s,c,a,h,"static/chunks/pages/logs-df4b23b85b8ac818.js"],"/stream-health":[o,s,a,e,t,i,d,"static/chunks/pages/stream-health-5edc91e4fa00ba5c.js"],"/upgrade":[s,c,"static/chunks/9655-6347f487aa1205af.js","static/chunks/pages/upgrade-6cb31f6812e79694.js"],"/viewer-info":[o,s,c,a,e,t,i,n,d,f,"static/chunks/pages/viewer-info-03fcbea265510389.js"],"/webhooks":[s,c,"static/chunks/pages/webhooks-651cb241952e0e4a.js"],sortedPages:["/","/_app","/_error","/access-tokens","/actions","/chat/messages","/chat/users","/config-chat","/config-federation","/config-notify","/config-public-details","/config-server-details","/config-social-items","/config-storage","/config-video","/federation/actions","/federation/followers","/hardware-info","/help","/logs","/stream-health","/upgrade","/viewer-info","/webhooks"]}}("static/chunks/1741-d9d648ade4ad86b9.js","static/chunks/6003-f37682e25271f05f.js","static/chunks/8091-5bc21baa6d0d3232.js","static/chunks/8879-af8bf87fdc518c08.js","static/chunks/7751-48959ec0f11e9080.js","static/chunks/4763-7fd93797a527a971.js","static/chunks/5533-096cc7dc6703128f.js","static/chunks/7910-699eb8ed3467dc00.js","static/chunks/36bcf0ca-110fd889741d5f41.js","static/chunks/1080-1a127ea7f5a8eb3d.js","static/chunks/2429-ccb4d7fa1648dd38.js","static/chunks/29107295-4a69275373f23f88.js","static/chunks/1371-f41477e42ee50603.js","static/chunks/1017-0760c7f39ffcc2a7.js","static/chunks/4578-afc9eff4fbf5ecb1.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); |
||||
self.__BUILD_MANIFEST=function(s,c,a,e,t,i,f,n,o,d,h,g,u,b,r){return{__rewrites:{beforeFiles:[],afterFiles:[],fallback:[]},"/":[s,c,a,e,t,i,f,h,"static/chunks/2494-8114e9c6571377d1.js","static/chunks/pages/index-e0ac83ceaf99b5f0.js"],"/_error":["static/chunks/pages/_error-785557186902809b.js"],"/access-tokens":[s,c,a,"static/chunks/pages/access-tokens-d328b918d1f9b3d4.js"],"/actions":[s,c,"static/chunks/pages/actions-9278698db4cd1a16.js"],"/chat/messages":[g,s,c,a,f,u,"static/chunks/pages/chat/messages-0df125d8b9455827.js"],"/chat/users":[g,s,c,a,e,f,"static/chunks/6489-cea2e8971ed16ad4.js",u,"static/chunks/pages/chat/users-c3f6235e6932151e.js"],"/config-chat":["static/chunks/pages/config-chat-bacb12d23264144b.js"],"/config-federation":["static/chunks/1829-f5c4fb462b2f7e98.js","static/chunks/pages/config-federation-ea0f018fb4193b61.js"],"/config-notify":["static/chunks/pages/config-notify-10a8844dc11ca4b2.js"],"/config-public-details":[s,c,n,"static/css/e773f9ad06a56dc3.css","static/chunks/2589-c48f3b04b9a6c7ce.js",b,"static/chunks/pages/config-public-details-94ff52653eb2586e.js"],"/config-server-details":[r,"static/chunks/pages/config-server-details-cd516688accb84d3.js"],"/config-social-items":[s,c,b,"static/chunks/pages/config-social-items-42e2ed4eed8d4dd2.js"],"/config-storage":["static/chunks/5473-623385148d67cba2.js","static/chunks/pages/config-storage-5ff120c715bfdb04.js"],"/config-video":[s,c,r,"static/chunks/1556-f79a922e799c7a06.js","static/chunks/pages/config-video-32d86e0ba98dc6fe.js"],"/federation/actions":[s,c,a,"static/chunks/pages/federation/actions-7cfffddef3b58d86.js"],"/federation/followers":[s,c,a,e,"static/chunks/pages/federation/followers-d2d105c342c79f98.js"],"/hardware-info":[o,a,e,t,i,d,n,"static/chunks/pages/hardware-info-4723b20a84e4f461.js"],"/help":[e,t,"static/chunks/6132-4fc73fe4cc2a426e.js","static/chunks/pages/help-deeb1c0f667c7d75.js"],"/logs":[s,c,a,h,"static/chunks/pages/logs-df4b23b85b8ac818.js"],"/stream-health":[o,s,a,e,t,i,d,"static/chunks/pages/stream-health-4a811c8adeb950de.js"],"/upgrade":[s,c,"static/chunks/9655-722bcfb83a61ab83.js","static/chunks/pages/upgrade-6cb31f6812e79694.js"],"/viewer-info":[o,s,c,a,e,t,i,f,d,n,"static/chunks/pages/viewer-info-03fcbea265510389.js"],"/webhooks":[s,c,"static/chunks/pages/webhooks-651cb241952e0e4a.js"],sortedPages:["/","/_app","/_error","/access-tokens","/actions","/chat/messages","/chat/users","/config-chat","/config-federation","/config-notify","/config-public-details","/config-server-details","/config-social-items","/config-storage","/config-video","/federation/actions","/federation/followers","/hardware-info","/help","/logs","/stream-health","/upgrade","/viewer-info","/webhooks"]}}("static/chunks/1741-d9d648ade4ad86b9.js","static/chunks/6003-f37682e25271f05f.js","static/chunks/8091-5bc21baa6d0d3232.js","static/chunks/8879-af8bf87fdc518c08.js","static/chunks/7751-48959ec0f11e9080.js","static/chunks/4763-7fd93797a527a971.js","static/chunks/5533-096cc7dc6703128f.js","static/chunks/7910-699eb8ed3467dc00.js","static/chunks/36bcf0ca-110fd889741d5f41.js","static/chunks/1080-1a127ea7f5a8eb3d.js","static/chunks/2429-ccb4d7fa1648dd38.js","static/chunks/29107295-4a69275373f23f88.js","static/chunks/1371-f41477e42ee50603.js","static/chunks/1017-0760c7f39ffcc2a7.js","static/chunks/4578-afc9eff4fbf5ecb1.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in new issue