deemix-docker/.gitlab-ci.yml

120 lines
5.0 KiB
YAML
Raw Normal View History

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 16:18:34 +00:00
PLATFORMS_DOCKER: "linux/amd64,linux/arm64"
2022-02-11 15:54:06 +00:00
PLATFORMS_TEST: "linux/amd64"
2022-02-11 15:30:33 +00:00
PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/deemix-docker/${CI_COMMIT_SHORT_SHA}"
2022-02-11 09:09:33 +00:00
ZIP_NAME: "deemix-docker"
stages:
2022-02-11 16:59:36 +00:00
- build-deemix
#- build-binary
2022-02-11 09:27:40 +00:00
- create-release
2022-02-11 09:09:33 +00:00
- build-docker-image
2022-02-11 17:00:52 +00:00
build-deemix:
2022-02-11 16:17:29 +00:00
image: node:16
2022-02-11 17:00:52 +00:00
stage: build-deemix
2022-02-11 16:17:29 +00:00
script:
- apt update && apt install -y --no-install-recommends zip git curl
2022-02-11 16:20:05 +00:00
- git clone --depth=1 https://gitlab.com/RemixDev/deemix-gui.git --recursive
2022-02-11 16:59:36 +00:00
- cp server.package.json deemix-gui/server/package.json
2022-02-11 16:20:05 +00:00
- cd deemix-gui
- yarn config set network-timeout 1000000 -g
2022-02-11 16:17:29 +00:00
- yarn install-all
2022-02-11 16:59:36 +00:00
- yarn dist-server
- ls -al dist/
- |
2022-02-11 17:07:10 +00:00
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file dist/deemix-server-x64 ${PACKAGE_REGISTRY_URL}/deemix-server-linux-amd64
2022-02-11 16:59:36 +00:00
- |
2022-02-11 17:07:10 +00:00
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file dist/deemix-server-arm64 ${PACKAGE_REGISTRY_URL}/deemix-server-linux-arm64
2022-02-11 16:17:29 +00:00
only:
refs:
2022-02-11 18:07:46 +00:00
- master
changes:
- server.package.json
2022-02-11 16:59:36 +00:00
#artifacts:
# paths:
# - deemix-gui/
2022-02-11 12:25:09 +00:00
2022-02-11 16:59:36 +00:00
#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
2022-02-11 12:25:09 +00:00
# Get and run the latest docker/binfmt tag to use its qemu parts
2022-02-11 16:59:36 +00:00
# - 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
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 16:18:34 +00:00
- docker buildx build --platform "${PLATFORMS_DOCKER}" -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