mirror of
https://gitlab.com/Bockiii/deemix-docker.git
synced 2024-08-30 17:32:18 +00:00
Compare commits
18 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
39c574f685 | ||
|
220567ece1 | ||
|
3827197960 | ||
|
e671ac563a | ||
|
33e1e9b253 | ||
|
f79614f40c | ||
|
8f0b9af270 | ||
|
72471b34ed | ||
|
e0bdbf4d16 | ||
|
e5d2c27001 | ||
|
973cfbf787 | ||
|
b12068189e | ||
|
82cb8a4dc2 | ||
|
7a3c4995bd | ||
|
bb4b13a1b3 | ||
|
45a63d2b9f | ||
|
3acbbaa19f | ||
|
cdcfac2a50 |
@ -1,13 +1,9 @@
|
||||
variables:
|
||||
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}"
|
||||
PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic"
|
||||
# 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"
|
||||
PACKAGE_REGISTRY_URL_STATIC: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/static/static"
|
||||
npm_config_cache: "$CI_PROJECT_DIR/.npm"
|
||||
PKG_CACHE_PATH: "$CI_PROJECT_DIR/.nodejs-bin"
|
||||
YARN_CACHE_FOLDER: "$CI_PROJECT_DIR/.yarn-cache"
|
||||
@ -28,32 +24,51 @@ build-deemix:
|
||||
- .nodejs-bin
|
||||
- .yarn-cache
|
||||
policy: pull-push
|
||||
script:
|
||||
|
||||
before_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
|
||||
# Dropping static first package first
|
||||
- echo get package ID of static
|
||||
- export STATIC_ID=$(curl "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages" | jq '.[] | select(.name == "static") | .id')
|
||||
- echo $STATIC_ID
|
||||
- |
|
||||
curl --request DELETE --header "PRIVATE-TOKEN: ${PAT_TOKEN}" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/${STATIC_ID}"
|
||||
# Get deemix version and remove packages if they are already present
|
||||
- echo get current version for tagging
|
||||
- export DEEMIX_VERSION=$(cat $CI_PROJECT_DIR/version)
|
||||
- echo $DEEMIX_VERSION
|
||||
- export DEEMIX_VERSION_ID=$(curl "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages" | jq '.[] | select(.name == "'"${DEEMIX_VERSION}"'") | .id')
|
||||
- echo $DEEMIX_VERSION_ID
|
||||
- |
|
||||
curl --request DELETE --header "PRIVATE-TOKEN: ${PAT_TOKEN}" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/${DEEMIX_VERSION_ID}"
|
||||
|
||||
script:
|
||||
- git clone 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
|
||||
- export DEEMIX_BUILD_SHA=$(curl https://deemix.app/gui/latest | rev | cut -c1-10 | rev)
|
||||
- git reset --hard --recurse-submodules $DEEMIX_BUILD_SHA
|
||||
- jq '.pkg.targets = ["node16-linuxstatic-x64","node16-linuxstatic-arm64","node16-linuxstatic-armv7"]' server/package.json > tmp.$$.json && mv tmp.$$.json server/package.json
|
||||
- ls -alh
|
||||
- yarn config set network-timeout 1000000 -g
|
||||
- yarn add pkg@latest
|
||||
- yarn install-all
|
||||
- yarn dist-server
|
||||
- ls -al dist/
|
||||
# Upload static
|
||||
# Upload static files (overwritten) per build
|
||||
- |
|
||||
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
|
||||
# Upload per DEEMIX_VERSION
|
||||
- |
|
||||
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-x64 ${PACKAGE_REGISTRY_URL}/${DEEMIX_VERSION}/${DEEMIX_VERSION}/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-arm64 ${PACKAGE_REGISTRY_URL}/${DEEMIX_VERSION}/${DEEMIX_VERSION}/deemix-server-linux-arm64
|
||||
- |
|
||||
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file dist/deemix-server-armv7 ${PACKAGE_REGISTRY_URL}/deemix-server-linux-arm
|
||||
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file dist/deemix-server-armv7 ${PACKAGE_REGISTRY_URL}/${DEEMIX_VERSION}/${DEEMIX_VERSION}/deemix-server-linux-arm
|
||||
only:
|
||||
refs:
|
||||
- master
|
||||
@ -62,26 +77,25 @@ create-release:
|
||||
stage: create-release
|
||||
image: registry.gitlab.com/gitlab-org/release-cli:latest
|
||||
#rules:
|
||||
# - if: $CI_COMMIT_SHA
|
||||
# - if: $CI_COMMIT_TAG
|
||||
script:
|
||||
- export DATE=$(date +%Y%m%d) #Cant tag same twice use $CI_COMMIT_SHA for a while
|
||||
- export DATE=$(date +%Y%m%d)
|
||||
- export DEEMIX_VERSION=$(cat $CI_PROJECT_DIR/version)
|
||||
- |
|
||||
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\"}" \
|
||||
release-cli create --name "Release $DEEMIX_VERSION" --tag-name $DEEMIX_VERSION --description "rollback to this version by changing the TAG release code above, registry.gitlab.com/bockiii/deemix-docker:TAG" \
|
||||
--assets-link "{\"name\":\"deemix-server-linux-amd64\",\"url\":\"${PACKAGE_REGISTRY_URL}/${DEEMIX_VERSION}/${DEEMIX_VERSION}/deemix-server-linux-amd64\"}" \
|
||||
--assets-link "{\"name\":\"deemix-server-linux-arm64\",\"url\":\"${PACKAGE_REGISTRY_URL}/${DEEMIX_VERSION}/${DEEMIX_VERSION}/deemix-server-linux-arm64\"}" \
|
||||
--assets-link "{\"name\":\"deemix-server-linux-armv7\",\"url\":\"${PACKAGE_REGISTRY_URL}/${DEEMIX_VERSION}/${DEEMIX_VERSION}/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}\"}"
|
||||
--assets-link "{\"name\":\"deemix-server-docker-pull\",\"url\":\"https://registry.gitlab.com/bockiii/deemix-docker:${DEEMIX_VERSION}\"}"
|
||||
only:
|
||||
refs:
|
||||
- master
|
||||
|
||||
build-docker-image:
|
||||
image: docker:19
|
||||
#dependencies:
|
||||
# - build-deemix
|
||||
image: docker:20
|
||||
stage: build-docker-image
|
||||
services:
|
||||
- docker:dind
|
||||
@ -90,12 +104,11 @@ build-docker-image:
|
||||
- apk add --update curl jq && rm -rf /var/cache/apk/*
|
||||
- export CI_JOB_TIMESTAMP=$(date --utc -Iseconds)
|
||||
- export DATE=$(date +%Y%m%d)
|
||||
- export DEEMIX_VERSION=$(cat $CI_PROJECT_DIR/version)
|
||||
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')
|
||||
- BUILDX_LATEST_BIN_URI=$(curl -s -L https://api.github.com/repos/docker/buildx/releases/latest | jq -r '.assets[].browser_download_url | select( . | contains("linux-amd64"))')
|
||||
- curl -s -L ${BUILDX_LATEST_BIN_URI} -o ~/.docker/cli-plugins/docker-buildx
|
||||
- chmod a+x ~/.docker/cli-plugins/docker-buildx
|
||||
# Get and run the latest docker/binfmt tag to use its qemu parts
|
||||
@ -104,10 +117,8 @@ build-docker-image:
|
||||
# create the multibuilder
|
||||
- docker buildx create --name multibuilder
|
||||
- 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
|
||||
# build and push
|
||||
- docker buildx build --platform "${PLATFORMS}" --build-arg BUILDDATE=$DATE --build-arg STATIC_URL=$PACKAGE_REGISTRY_URL_STATIC -t ${CI_REGISTRY_IMAGE}:${DEEMIX_VERSION} -t ${CI_REGISTRY_IMAGE} . --push
|
||||
only:
|
||||
refs:
|
||||
- master
|
||||
|
@ -52,9 +52,11 @@ Pull the latest container for the latest Deemix version
|
||||
| `-e PUID=1000` | OPTIONAL: User ID of the user you want the container to run as in order to fix folder permission issues |
|
||||
| `-e PGID=1000` | OPTIONAL: Group ID, see PUID |
|
||||
| `-e UMASK_SET=022` | OPTIONAL: Setting UMASK for file permissions Default is 022 |
|
||||
| `-e DEEMIX_LOCATION_BASE=/deemix/` | OPTIONAL: For subfolder reverse proxying, add the subdomain in this env variable |
|
||||
| `-e DEEMIX_SINGLE_USER=true` | OPTIONAL: Similar to the ARL functionality in previous iterations. See below for details |
|
||||
| `-p 6595:6595` | Port opened for the web interface |
|
||||
| `-e INTPORT=3333` | EXTRA OPTIONAL: This changes the internal port of deemix. DON'T CHANGE THIS IF YOU DONT KNOW WHY YOU WOULD DO IT |
|
||||
| `-e DISABLE_OWNERSHIP_CHECK=true` | EXTRA OPTIONAL: This disables the ownership check on the downloads folder. Can lead to download issues if the folder is not owned by the correct user. DON'T USE THIS IF YOU DONT KNOW WHY YOU WOULD NEED IT |
|
||||
| `registry.gitlab.com/bockiii/deemix-docker` | This container |
|
||||
|
||||
To access the web interface, go to http://YOURSERVERIP:6595
|
||||
|
@ -1,12 +1,18 @@
|
||||
#!/usr/bin/with-contenv bash
|
||||
|
||||
# test write access to download and config folder and test internet connectivity
|
||||
printf '[cont-init.d] Fixing Folder Permissions\n'
|
||||
printf '[cont-init.d] Fixing Folder Permissions - Config Folder\n'
|
||||
|
||||
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 {} +
|
||||
if [ ! -z ${DISABLE_OWNERSHIP_CHECK} ]; then
|
||||
printf '[cont-init.d] Download Folder Ownership Check disabled by Environment Variable\n'
|
||||
else
|
||||
printf '[cont-init.d] Fixing Folder Permissions - Downloads Folder\n'
|
||||
find /downloads -type d -exec chown abc:abc {} +
|
||||
fi
|
||||
|
||||
|
||||
# add executability to server
|
||||
chmod +x /deemix-server
|
||||
|
Loading…
Reference in New Issue
Block a user