2020-06-05 20:49:21 +00:00
|
|
|
variables:
|
2020-06-11 18:45:28 +00:00
|
|
|
IMAGE_TAG: latest
|
2022-02-11 09:27:40 +00:00
|
|
|
IMAGE_TAG_TEST: test
|
2020-06-05 20:49:21 +00:00
|
|
|
DOCKER_CLI_EXPERIMENTAL: enabled
|
2021-05-29 23:10:34 +00:00
|
|
|
PLATFORMS: "linux/amd64,linux/arm64,linux/arm/v7"
|
2022-02-11 15:10:32 +00:00
|
|
|
PLATFORMS_TEST: "linux/amd64,linux/amd64"
|
2022-02-11 09:09:33 +00:00
|
|
|
PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/deemix-docker/${CI_PROJECT_NAME}"
|
|
|
|
ZIP_NAME: "deemix-docker"
|
|
|
|
|
|
|
|
stages:
|
|
|
|
- build-deemix
|
2022-02-11 12:25:09 +00:00
|
|
|
- build-binary
|
2022-02-11 09:27:40 +00:00
|
|
|
- create-release
|
2022-02-11 09:09:33 +00:00
|
|
|
- build-docker-image
|
|
|
|
|
|
|
|
build-deemix:
|
2022-02-11 15:21:33 +00:00
|
|
|
image: node:16
|
2022-02-11 09:09:33 +00:00
|
|
|
#image: node:16
|
|
|
|
stage: build-deemix
|
|
|
|
script:
|
2022-02-11 15:23:40 +00:00
|
|
|
- apt update && apt install -y --no-install-recommends zip git curl
|
2022-02-11 09:09:33 +00:00
|
|
|
# Can replace with SHA-COMMIT
|
|
|
|
- export DATE=$(date +%Y%m%d)
|
2022-02-11 15:23:40 +00:00
|
|
|
#- apk add --no-cache zip git curl
|
2022-02-11 09:09:33 +00:00
|
|
|
- git clone --depth=1 https://gitlab.com/RemixDev/deemix-gui.git --recursive
|
|
|
|
- cd deemix-gui
|
|
|
|
- yarn config set network-timeout 1000000 -g
|
2022-02-11 12:25:09 +00:00
|
|
|
- yarn install-all
|
|
|
|
- yarn predist
|
|
|
|
#- yarn --cwd server install --prod && yarn build-server && rm -rf server/node_modules
|
|
|
|
#- yarn --cwd webui install --prod && yarn build-webui && rm -rf webui/node_modules
|
2022-02-11 09:09:33 +00:00
|
|
|
#- yarn cache clean
|
|
|
|
#- find . -name 'node_modules' -type d -prune -exec rm -rf '{}' \;
|
|
|
|
# Move out our needed to new dir
|
2022-02-11 12:25:09 +00:00
|
|
|
#- cd .. && mkdir deemix-docker
|
|
|
|
#- cp -r deemix-gui/server deemix-docker/server
|
|
|
|
#- cp -r deemix-gui/webui deemix-docker/webui
|
|
|
|
#- cp deemix-gui/package.json deemix-docker/package.json
|
|
|
|
#- zip -9 -r ${ZIP_NAME}.zip deemix-docker
|
|
|
|
#- |
|
|
|
|
# curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file ${ZIP_NAME}.zip ${PACKAGE_REGISTRY_URL}/${ZIP_NAME}.zip
|
|
|
|
#- echo ${PACKAGE_REGISTRY_URL}/${ZIP_NAME}.zip #This for download URL dockerfile
|
2022-02-11 12:27:09 +00:00
|
|
|
only:
|
|
|
|
refs:
|
|
|
|
- CI-test
|
2022-02-11 09:09:33 +00:00
|
|
|
artifacts:
|
|
|
|
paths:
|
2022-02-11 12:25:09 +00:00
|
|
|
- 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
|
2022-02-11 13:00:23 +00:00
|
|
|
- docker buildx build --build-arg PACKAGE_REGISTRY_URL=${PACKAGE_REGISTRY_URL} --build-arg JOB_TOKEN=${CI_JOB_TOKEN} --platform "${PLATFORMS_TEST}" . -f Dockerfile.binary
|
2022-02-11 12:25:09 +00:00
|
|
|
# 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
|
2022-02-11 12:27:09 +00:00
|
|
|
only:
|
|
|
|
refs:
|
|
|
|
- CI-test
|
2022-02-11 12:25:09 +00:00
|
|
|
|
2022-02-11 09:09:33 +00:00
|
|
|
|
|
|
|
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 \
|
2022-02-11 14:23:12 +00:00
|
|
|
--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\"}"
|
2022-02-11 12:27:09 +00:00
|
|
|
only:
|
|
|
|
refs:
|
|
|
|
- CI-test
|
2020-06-05 20:49:21 +00:00
|
|
|
|
2022-02-11 09:09:33 +00:00
|
|
|
build-docker-image:
|
|
|
|
image: docker:19
|
|
|
|
#dependencies:
|
|
|
|
# - build-deemix
|
2022-02-11 09:27:40 +00:00
|
|
|
stage: build-docker-image
|
2022-02-11 09:09:33 +00:00
|
|
|
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)
|
2020-06-05 20:49:21 +00:00
|
|
|
script:
|
2021-05-29 23:10:34 +00:00
|
|
|
# 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
|
2022-02-11 13:39:12 +00:00
|
|
|
- docker buildx build --platform "${PLATFORMS_TEST}" -t ${CI_REGISTRY_IMAGE}:${IMAGE_TAG_TEST} . --push
|
2022-02-11 09:09:33 +00:00
|
|
|
# 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
|
2022-02-11 12:27:09 +00:00
|
|
|
only:
|
|
|
|
refs:
|
|
|
|
- CI-test
|