mirror of
https://gitlab.com/Bockiii/deemix-docker.git
synced 2024-08-30 17:32:18 +00:00
Merge branch 'CI-test' into 'master'
Ci test See merge request dedyms/deemix-docker!1
This commit is contained in:
commit
79237560a5
115
.gitlab-ci.yml
115
.gitlab-ci.yml
@ -1,23 +1,103 @@
|
||||
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_DOCKER: "linux/amd64,linux/arm64"
|
||||
PLATFORMS_TEST: "linux/amd64"
|
||||
PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/deemix-docker/${CI_COMMIT_SHORT_SHA}"
|
||||
ZIP_NAME: "deemix-docker"
|
||||
|
||||
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-binary
|
||||
- create-release
|
||||
- build-docker-image
|
||||
|
||||
build:
|
||||
stage: build
|
||||
build-deemix:
|
||||
image: node:16
|
||||
stage: build-deemix
|
||||
script:
|
||||
- apt update && apt install -y --no-install-recommends zip git curl
|
||||
- git clone --depth=1 https://gitlab.com/RemixDev/deemix-gui.git --recursive
|
||||
- cp server.package.json deemix-gui/server/package.json
|
||||
- cd deemix-gui
|
||||
- yarn config set network-timeout 1000000 -g
|
||||
- yarn install-all
|
||||
- yarn dist-server
|
||||
- ls -al dist/
|
||||
- |
|
||||
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
|
||||
only:
|
||||
refs:
|
||||
- CI-test
|
||||
#changes:
|
||||
# - server.package.json
|
||||
#artifacts:
|
||||
# paths:
|
||||
# - deemix-gui/
|
||||
|
||||
|
||||
#build-binary:
|
||||
# image: docker:19
|
||||
# stage: build-binary
|
||||
# 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
|
||||
# - 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
|
||||
# - chmod a+x ~/.docker/cli-plugins/docker-buildx
|
||||
# Get and run the latest docker/binfmt tag to use its qemu parts
|
||||
# - BINFMT_IMAGE_TAG=$(curl -s https://registry.hub.docker.com/v2/repositories/docker/binfmt/tags | jq '.results | sort_by(.last_updated)[-1].name' -r)
|
||||
# - 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 --build-arg PACKAGE_REGISTRY_URL=${PACKAGE_REGISTRY_URL} --build-arg JOB_TOKEN=${CI_JOB_TOKEN} --platform "${PLATFORMS_TEST}" . -f Dockerfile.binary
|
||||
# # 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:
|
||||
# - CI-test
|
||||
|
||||
|
||||
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 $DATE" --tag-name $CI_COMMIT_SHA \
|
||||
--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\"}"
|
||||
only:
|
||||
refs:
|
||||
- CI-test
|
||||
|
||||
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
|
||||
- mkdir -p ~/.docker/cli-plugins/
|
||||
@ -31,4 +111,9 @@ build:
|
||||
- docker buildx create --name multibuilder
|
||||
- docker buildx use multibuilder
|
||||
# build and push
|
||||
- docker buildx build --platform "${PLATFORMS}" -t $IMAGE:${IMAGE_TAG} . --push
|
||||
- docker buildx build --platform "${PLATFORMS_DOCKER}" -t ${CI_REGISTRY_IMAGE}:${IMAGE_TAG_TEST} . --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:
|
||||
- CI-test
|
||||
|
18
Dockerfile
18
Dockerfile
@ -1,5 +1,5 @@
|
||||
FROM lsiobase/ubuntu:focal
|
||||
|
||||
ARG TARGETARCH
|
||||
ARG BUILDDATE
|
||||
ENV BUILDDATEENV=${BUILDDATE}
|
||||
|
||||
@ -10,19 +10,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 https://gitlab.com/api/v4/projects/33610953/packages/generic/deemix-docker/deemix-docker/deemix-server-linux-$TARGETARCH -o deemix-server
|
||||
|
||||
COPY root/ /
|
||||
|
||||
|
14
Dockerfile.binary
Normal file
14
Dockerfile.binary
Normal file
@ -0,0 +1,14 @@
|
||||
FROM node:16
|
||||
ARG PACKAGE_REGISTRY_URL
|
||||
ARG TARGETARCH
|
||||
ARG JOB_TOKEN
|
||||
RUN apt update && apt install -y --no-install-recommends curl git && echo $TARGETARCH
|
||||
COPY deemix-gui deemix-gui
|
||||
WORKDIR deemix-gui/
|
||||
COPY server.package.json server/package.json
|
||||
# Only install pkg
|
||||
#RUN sed -i 's/node16-win-x64/node16-linux-arm64/g' server/package.json
|
||||
RUN yarn config set network-timeout 1000000 -g && yarn add pkg@latest
|
||||
RUN yarn dist-server && ls -al dist/ && \
|
||||
curl --header "JOB-TOKEN: ${JOB_TOKEN}" --upload-file dist/deemix-server-x64 ${PACKAGE_REGISTRY_URL}/deemix-server-linux-amd64 && \
|
||||
curl --header "JOB-TOKEN: ${JOB_TOKEN}" --upload-file dist/deemix-server-arm64 ${PACKAGE_REGISTRY_URL}/deemix-server-linux-arm64
|
@ -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
|
||||
|
78
server.package.json
Normal file
78
server.package.json
Normal file
@ -0,0 +1,78 @@
|
||||
{
|
||||
"name": "@deemix-gui/deemix-server",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"start": "node dist/app.js",
|
||||
"build": "webpack --env production",
|
||||
|
||||
"prewatch": "yarn lint-build",
|
||||
"watch": "webpack --watch",
|
||||
|
||||
"lint": "eslint \"./{src, tests}/**\" --fix",
|
||||
"lint-build": "eslint \"./src/**\" --fix",
|
||||
"test": "jest",
|
||||
"test-watch": "jest --watch"
|
||||
},
|
||||
"bin": "./dist/app.js",
|
||||
"pkg": {
|
||||
"scripts": "./dist/**/*.js",
|
||||
"assets": [
|
||||
"../webui/public/**/*",
|
||||
"../package.json"
|
||||
],
|
||||
"targets": [
|
||||
"node16-linux-x64",
|
||||
"node16-linux-arm64"
|
||||
]
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/node": "14.14.37",
|
||||
"bufferutil": "4.0.3",
|
||||
"cookie-parser": "1.4.5",
|
||||
"@types/cookie-parser": "1.4.2",
|
||||
"debug": "2.6.9",
|
||||
"@types/debug": "4.1.5",
|
||||
"deemix": "^3.6.0",
|
||||
"deezer-js": "^1.3.0",
|
||||
"dotenv": "8.2.0",
|
||||
"express": "4.17.1",
|
||||
"@types/express": "4.17.11",
|
||||
"express-session": "^1.17.1",
|
||||
"@types/express-session": "^1.17.3",
|
||||
"memorystore": "1.6.6",
|
||||
"morgan": "1.10.0",
|
||||
"@types/morgan": "1.9.2",
|
||||
"ramda": "0.27.1",
|
||||
"@types/ramda": "0.27.40",
|
||||
"utf-8-validate": "5.0.5",
|
||||
"uuid": "8.3.2",
|
||||
"@types/uuid": "8.3.0",
|
||||
"ws": "7.4.5",
|
||||
"@types/ws": "7.4.1",
|
||||
"yargs": "17.0.1",
|
||||
"@types/yargs": "17.0.0",
|
||||
"nodemon": "2.0.7",
|
||||
"nodemon-webpack-plugin": "4.5.2",
|
||||
"ts-loader": "9.2.3",
|
||||
"webpack": "5.41.1",
|
||||
"webpack-cli": "4.7.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@nuxtjs/eslint-config": "6.0.0",
|
||||
"@types/jest": "26.0.22",
|
||||
"@types/supertest": "2.0.11",
|
||||
"@typescript-eslint/eslint-plugin": "4.21.0",
|
||||
"@typescript-eslint/parser": "4.21.0",
|
||||
"eslint": "7.23.0",
|
||||
"eslint-config-prettier": "8.1.0",
|
||||
"eslint-plugin-prettier": "3.3.1",
|
||||
"jest": "26.6.3",
|
||||
"ts-jest": "26.5.4",
|
||||
"ts-node": "9.1.1",
|
||||
"ts-node-dev": "1.1.6",
|
||||
"typescript": "4.2.4",
|
||||
"prettier": "2.2.1",
|
||||
"supertest": "6.1.3"
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user