mirror of
https://gitlab.com/Bockiii/deemix-docker.git
synced 2024-08-30 17:32:18 +00:00
Merge branch 'dedyms/deemix-docker-master'
This commit is contained in:
commit
9e0346843c
113
.gitlab-ci.yml
113
.gitlab-ci.yml
@ -1,25 +1,99 @@
|
||||
image: docker:19
|
||||
services:
|
||||
- docker:dind
|
||||
|
||||
stages:
|
||||
- build
|
||||
|
||||
variables:
|
||||
IMAGE: registry.gitlab.com/bockiii/deemix-docker
|
||||
IMAGE_TAG: latest
|
||||
IMAGE_TAG_TEST: test
|
||||
DOCKER_CLI_EXPERIMENTAL: enabled
|
||||
PLATFORMS: "linux/amd64,linux/arm64,linux/arm/v7"
|
||||
PLATFORMS_TEST: "linux/amd64"
|
||||
PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/deemix-docker/${CI_COMMIT_SHORT_SHA}"
|
||||
# Docker build will download via this url
|
||||
PACKAGE_REGISTRY_URL_STATIC: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/deemix-docker/static"
|
||||
ZIP_NAME: "deemix-docker"
|
||||
npm_config_cache: "$CI_PROJECT_DIR/.npm"
|
||||
PKG_CACHE_PATH: "$CI_PROJECT_DIR/.nodejs-bin"
|
||||
YARN_CACHE_FOLDER: "$CI_PROJECT_DIR/.yarn-cache"
|
||||
|
||||
|
||||
before_script:
|
||||
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
|
||||
- apk add --update curl jq && rm -rf /var/cache/apk/*
|
||||
- export CI_JOB_TIMESTAMP=$(date --utc -Iseconds)
|
||||
stages:
|
||||
- build-deemix
|
||||
- build-docker-image
|
||||
- create-release
|
||||
|
||||
build:
|
||||
stage: build
|
||||
build-deemix:
|
||||
image: node:16
|
||||
stage: build-deemix
|
||||
cache:
|
||||
key: "$CI_COMMIT_REF_SLUG"
|
||||
paths:
|
||||
- .npm
|
||||
- .nodejs-bin
|
||||
- .yarn-cache
|
||||
policy: pull-push
|
||||
script:
|
||||
- apt update && apt install -y --no-install-recommends zip git curl jq
|
||||
- git clone --depth=1 https://gitlab.com/RemixDev/deemix-gui.git --recursive src
|
||||
# Patching pkg.targets to our need
|
||||
- jq '.pkg.targets = ["node16-linuxstatic-x64","node16-linuxstatic-arm64","node16-linuxstatic-armv7"]' src/server/package.json > tmp.$$.json && mv tmp.$$.json src/server/package.json
|
||||
- cd src
|
||||
- ls -alh
|
||||
- yarn config set network-timeout 1000000 -g
|
||||
- yarn add pkg@latest
|
||||
- yarn install-all
|
||||
- yarn dist-server
|
||||
- ls -al dist/
|
||||
# Upload static
|
||||
- |
|
||||
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file dist/deemix-server-x64 ${PACKAGE_REGISTRY_URL_STATIC}/deemix-server-linux-amd64
|
||||
- |
|
||||
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file dist/deemix-server-arm64 ${PACKAGE_REGISTRY_URL_STATIC}/deemix-server-linux-arm64
|
||||
- |
|
||||
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file dist/deemix-server-armv7 ${PACKAGE_REGISTRY_URL_STATIC}/deemix-server-linux-arm
|
||||
# Upload per CI_COMMIT_SHORT_SHA
|
||||
- |
|
||||
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file dist/deemix-server-x64 ${PACKAGE_REGISTRY_URL}/deemix-server-linux-amd64
|
||||
- |
|
||||
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file dist/deemix-server-arm64 ${PACKAGE_REGISTRY_URL}/deemix-server-linux-arm64
|
||||
- |
|
||||
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file dist/deemix-server-armv7 ${PACKAGE_REGISTRY_URL}/deemix-server-linux-arm
|
||||
only:
|
||||
refs:
|
||||
- master
|
||||
|
||||
create-release:
|
||||
stage: create-release
|
||||
image: registry.gitlab.com/gitlab-org/release-cli:latest
|
||||
#rules:
|
||||
# - if: $CI_COMMIT_SHA
|
||||
script:
|
||||
- export DATE=$(date +%Y%m%d) #Cant tag same twice use $CI_COMMIT_SHA for a while
|
||||
- |
|
||||
release-cli create --name "Release $CI_COMMIT_SHORT_SHA" --tag-name $CI_COMMIT_SHORT_SHA --description "rollback to this version by changing the docker TAG release code above, registry.gitlab.com/bockiii/deemix-docker:TAG" \
|
||||
--assets-link "{\"name\":\"deemix-server-linux-amd64\",\"url\":\"${PACKAGE_REGISTRY_URL}/deemix-server-linux-amd64\"}" \
|
||||
--assets-link "{\"name\":\"deemix-server-linux-arm64\",\"url\":\"${PACKAGE_REGISTRY_URL}/deemix-server-linux-arm64\"}" \
|
||||
--assets-link "{\"name\":\"deemix-server-linux-armv7\",\"url\":\"${PACKAGE_REGISTRY_URL}/deemix-server-linux-arm\"}" \
|
||||
--assets-link "{\"name\":\"deemix-server-linux-static-amd64\",\"url\":\"${PACKAGE_REGISTRY_URL_STATIC}/deemix-server-linux-amd64\"}" \
|
||||
--assets-link "{\"name\":\"deemix-server-linux-static-arm64\",\"url\":\"${PACKAGE_REGISTRY_URL_STATIC}/deemix-server-linux-arm64\"}" \
|
||||
--assets-link "{\"name\":\"deemix-server-linux-static-armv7\",\"url\":\"${PACKAGE_REGISTRY_URL_STATIC}/deemix-server-linux-arm\"}" \
|
||||
--assets-link "{\"name\":\"deemix-server-docker-pull\",\"url\":\"https://registry.gitlab.com/bockiii/deemix-docker:${CI_COMMIT_SHORT_SHA}\"}"
|
||||
only:
|
||||
refs:
|
||||
- master
|
||||
|
||||
build-docker-image:
|
||||
image: docker:19
|
||||
#dependencies:
|
||||
# - build-deemix
|
||||
stage: build-docker-image
|
||||
services:
|
||||
- docker:dind
|
||||
before_script:
|
||||
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
|
||||
- apk add --update curl jq && rm -rf /var/cache/apk/*
|
||||
- export CI_JOB_TIMESTAMP=$(date --utc -Iseconds)
|
||||
- export DATE=$(date +%Y%m%d)
|
||||
script:
|
||||
# Download latest buildx bin from github
|
||||
- export DATE=$(date +%Y%m%d)
|
||||
#Format 20220212
|
||||
- mkdir -p ~/.docker/cli-plugins/
|
||||
- BUILDX_LATEST_BIN_URI=$(curl -s -L https://github.com/docker/buildx/releases/latest | grep 'linux-amd64' | grep 'href' | sed 's/.*href="/https:\/\/github.com/g; s/amd64".*/amd64/g')
|
||||
- curl -s -L ${BUILDX_LATEST_BIN_URI} -o ~/.docker/cli-plugins/docker-buildx
|
||||
@ -29,6 +103,11 @@ build:
|
||||
- docker run --rm --privileged docker/binfmt:${BINFMT_IMAGE_TAG}
|
||||
# create the multibuilder
|
||||
- docker buildx create --name multibuilder
|
||||
- docker buildx use multibuilder
|
||||
# build and push
|
||||
- docker buildx build --platform "${PLATFORMS}" -t $IMAGE:${IMAGE_TAG} . --push
|
||||
- docker buildx use multibuilder
|
||||
# build and push, still need fix download url in dockerfile
|
||||
- docker buildx build --platform "${PLATFORMS}" --build-arg BUILDDATE=$DATE --build-arg STATIC_URL=$PACKAGE_REGISTRY_URL_STATIC -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHORT_SHA} -t ${CI_REGISTRY_IMAGE} . --push
|
||||
# Also can do using date, so we dont dependant on latest, in case application break again.
|
||||
#- docker buildx build --platform "${PLATFORMS}" -t ${CI_REGISTRY_IMAGE}:${DATE} -t $CI_REGISTRY_IMAGE:${IMAGE_TAG} . --push
|
||||
only:
|
||||
refs:
|
||||
- master
|
||||
|
23
Dockerfile
23
Dockerfile
@ -1,5 +1,8 @@
|
||||
FROM lsiobase/ubuntu:focal
|
||||
|
||||
FROM lsiobase/alpine:3.15
|
||||
#Add addiitional packages
|
||||
RUN apk add --no-cache curl
|
||||
ARG TARGETARCH
|
||||
ARG STATIC_URL
|
||||
ARG BUILDDATE
|
||||
ENV BUILDDATEENV=${BUILDDATE}
|
||||
|
||||
@ -10,19 +13,11 @@ LABEL \
|
||||
app.deemix.image.description="Docker image for Deemix" \
|
||||
maintainer="Bocki"
|
||||
|
||||
RUN curl -fsSL https://deb.nodesource.com/setup_16.x | bash && \
|
||||
apt-get -y --no-install-recommends install >/dev/null \
|
||||
nodejs \
|
||||
jq \
|
||||
iputils-ping \
|
||||
unzip \
|
||||
curl && \
|
||||
apt-get clean && \
|
||||
rm -rf /var/lib/apt/lists/* && \
|
||||
mkdir /downloads
|
||||
#RUN curl -L -o deemix.zip http://gitlab.com/Bockiii/deemix-src/-/jobs/artifacts/master/download?job=dl_src && \
|
||||
# unzip deemix
|
||||
|
||||
RUN curl -L -o deemix.zip http://gitlab.com/Bockiii/deemix-src/-/jobs/artifacts/master/download?job=dl_src && \
|
||||
unzip deemix
|
||||
# Need look again in project num
|
||||
RUN curl -L $STATIC_URL/deemix-server-linux-$TARGETARCH -o deemix-server
|
||||
|
||||
COPY root/ /
|
||||
|
||||
|
@ -8,6 +8,8 @@ chown -R abc:abc /config
|
||||
# find all folders in the download folder and own them to the container user. This will not change files but should run quicker on big collections.
|
||||
find /downloads -type d -exec chown abc:abc {} +
|
||||
|
||||
# Fixing /deemix-server binary losing execute permission
|
||||
chmod +x /deemix-server
|
||||
|
||||
# Fix misconfigured download locations. The container's download map is always /downloads.
|
||||
if [ -f "/config/config.json" ]; then
|
||||
|
@ -17,4 +17,4 @@ export DEEMIX_SERVER_PORT=$port
|
||||
export DEEMIX_HOST=0.0.0.0
|
||||
|
||||
echo "[services.d] Starting Deemix"
|
||||
s6-setuidgid abc node /deemix-gui/server/dist/app.js
|
||||
s6-setuidgid abc /deemix-server
|
||||
|
Loading…
Reference in New Issue
Block a user