From eed268165ba7f28df7681893cbf57577ee11cdae Mon Sep 17 00:00:00 2001 From: Dedy Martadinata Supriyadi Date: Fri, 11 Feb 2022 09:09:33 +0000 Subject: [PATCH] Update .gitlab-ci.yml --- .gitlab-ci.yml | 81 ++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 66 insertions(+), 15 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c525978..5f7c381 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,23 +1,72 @@ -image: docker:19 -services: - - docker:dind - -stages: - - build - variables: - IMAGE: registry.gitlab.com/bockiii/deemix-docker IMAGE_TAG: latest DOCKER_CLI_EXPERIMENTAL: enabled PLATFORMS: "linux/amd64,linux/arm64,linux/arm/v7" + PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/deemix-docker/${CI_PROJECT_NAME}" + 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 + - create-releases + - build-docker-image -build: - stage: build +build-deemix: + image: node:16-alpine + #image: node:16 + stage: build-deemix + script: + #- apt update && apt install -y --no-install-recommends zip + # Can replace with SHA-COMMIT + - export DATE=$(date +%Y%m%d) + - apk add --no-cache zip + - git clone --depth=1 https://gitlab.com/RemixDev/deemix-gui.git --recursive + - cd deemix-gui + - yarn config set network-timeout 1000000 -g + - yarn --cwd server install --prod && build-server && rm -rf server/node_modules + - yarn --cwd webui install --prod && yarn build-webui && rm -rf webui/node_modules + #- yarn cache clean + #- find . -name 'node_modules' -type d -prune -exec rm -rf '{}' \; + # Move out our needed to new dir + - 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 + - | + curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file ${ZIP_NAME}.zip ${PACKAGE_REGISTRY_URL}/${ZIP_NAME}.zip + - | + curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file ${ZIP_NAME}.zip ${PACKAGE_REGISTRY_URL}/${ZIP_NAME}-${DATE}.zip + artifacts: + paths: + - deemix-docker/ + +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 + - export PACKAGE_REGISTRY_URL="${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${DATE}/${CI_PROJECT_NAME}" + - | + release-cli create --name "Release $DATE" --tag-name $CI_COMMIT_SHA \ + --assets-link "{\"name\":\"${ZIP_NAME}.zip\",\"url\":\"${PACKAGE_REGISTRY_URL}/${ZIP_NAME}.zip\"}"\ + --assets-link "{\"name\":\"${ZIP_NAME}-${DATE}.zip\",\"url\":\"${PACKAGE_REGISTRY_URL}/${ZIP_NAME}-${DATE}.zip\"}" + + +build-docker-image: + image: docker:19 + #dependencies: + # - build-deemix + stages: + - 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 +80,6 @@ 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}" -t ${CI_REGISTRY_IMAGE}:${IMAGE_TAG} . --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