mirror of
https://github.com/hassio-addons/addon-tasmoadmin.git
synced 2025-05-04 19:11:26 +00:00
🚀 Rewrites GitLab CI
This commit is contained in:
parent
70ca14ad7c
commit
2cd38a463a
1 changed files with 173 additions and 71 deletions
244
.gitlab-ci.yml
244
.gitlab-ci.yml
|
@ -1,9 +1,9 @@
|
||||||
---
|
---
|
||||||
image: docker:stable
|
image: docker:latest
|
||||||
|
|
||||||
variables:
|
variables:
|
||||||
ADDON_GITHUB_REPO: hassio-addons/addon-tasmoadmin
|
ADDON_GITHUB_REPO: hassio-addons/addon-tasmoadmin
|
||||||
ADDON_SLUG: tasmoadmin
|
ADDON_SLUG: sonweb
|
||||||
ADDON_TARGET: tasmoadmin
|
ADDON_TARGET: tasmoadmin
|
||||||
DOCKER_DRIVER: overlay2
|
DOCKER_DRIVER: overlay2
|
||||||
DOCKER_HUB_ORG: hassioaddons
|
DOCKER_HUB_ORG: hassioaddons
|
||||||
|
@ -13,15 +13,16 @@ stages:
|
||||||
- build
|
- build
|
||||||
- scan
|
- scan
|
||||||
- deploy
|
- deploy
|
||||||
|
- manifest
|
||||||
- publish
|
- publish
|
||||||
|
|
||||||
# Generic DIND template
|
# Generic DIND template
|
||||||
.dind: &dind
|
.dind: &dind
|
||||||
before_script:
|
before_script:
|
||||||
- docker info
|
- docker info
|
||||||
- docker login -u gitlab-ci-token -p "${CI_JOB_TOKEN}" registry.gitlab.com
|
|
||||||
services:
|
services:
|
||||||
- docker:dind
|
- name: docker:dind
|
||||||
|
command: ["--experimental"]
|
||||||
|
|
||||||
# Generic preflight template
|
# Generic preflight template
|
||||||
.preflight: &preflight
|
.preflight: &preflight
|
||||||
|
@ -33,31 +34,33 @@ stages:
|
||||||
.build: &build
|
.build: &build
|
||||||
<<: *dind
|
<<: *dind
|
||||||
stage: build
|
stage: build
|
||||||
|
before_script:
|
||||||
|
- docker info
|
||||||
|
- |
|
||||||
|
if [ "$(apk --print-arch)" = "amd64" ]; then
|
||||||
|
docker run --rm --privileged hassioaddons/qemu-user-static:latest
|
||||||
|
fi
|
||||||
|
- |
|
||||||
|
echo "${CI_JOB_TOKEN}" | docker login \
|
||||||
|
--username gitlab-ci-token \
|
||||||
|
--password-stdin \
|
||||||
|
registry.gitlab.com
|
||||||
|
- docker pull "registry.gitlab.com/${CI_PROJECT_PATH}/${ADDON_ARCH}:cache" || true
|
||||||
script:
|
script:
|
||||||
- |
|
- |
|
||||||
docker run \
|
docker build \
|
||||||
--privileged \
|
--build-arg "BUILD_FROM=${FROM}" \
|
||||||
--volume /var/run/docker.sock:/var/run/docker.sock \
|
--build-arg "BUILD_DATE=$(date +"%Y-%m-%dT%H:%M:%SZ")" \
|
||||||
--volume "$PWD":/docker \
|
--build-arg "BUILD_ARCH=${ADDON_ARCH}" \
|
||||||
hassioaddons/build-env:latest \
|
--build-arg "BUILD_REF=${CI_COMMIT_SHA}" \
|
||||||
--image "addon" \
|
--build-arg "BUILD_VERSION=${CI_COMMIT_TAG:-${CI_COMMIT_SHA:0:7}}" \
|
||||||
--cache-from "${DOCKER_HUB_ORG}/${ADDON_SLUG}-${ADDON_ARCH}" \
|
--cache-from "registry.gitlab.com/${CI_PROJECT_PATH}/${ADDON_ARCH}:cache" \
|
||||||
--cache-tag "test" \
|
--tag \
|
||||||
--git-url "https://github.com/${ADDON_GITHUB_REPO}" \
|
"registry.gitlab.com/${CI_PROJECT_PATH}/${ADDON_ARCH}:${CI_COMMIT_SHA}" \
|
||||||
--target "${ADDON_TARGET}" \
|
"${ADDON_TARGET}"
|
||||||
--tag-latest \
|
|
||||||
--git \
|
|
||||||
--${ADDON_ARCH}
|
|
||||||
- |
|
|
||||||
docker tag \
|
|
||||||
"addon:latest" \
|
|
||||||
"registry.gitlab.com/${CI_PROJECT_PATH}/${ADDON_ARCH}:${CI_COMMIT_SHA}"
|
|
||||||
- |
|
- |
|
||||||
docker push \
|
docker push \
|
||||||
"registry.gitlab.com/${CI_PROJECT_PATH}/${ADDON_ARCH}:${CI_COMMIT_SHA}"
|
"registry.gitlab.com/${CI_PROJECT_PATH}/${ADDON_ARCH}:${CI_COMMIT_SHA}"
|
||||||
tags:
|
|
||||||
- build
|
|
||||||
|
|
||||||
# Generic scan template
|
# Generic scan template
|
||||||
.scan: &scan
|
.scan: &scan
|
||||||
<<: *dind
|
<<: *dind
|
||||||
|
@ -106,28 +109,103 @@ stages:
|
||||||
stage: deploy
|
stage: deploy
|
||||||
before_script:
|
before_script:
|
||||||
- docker info
|
- docker info
|
||||||
- docker login -u gitlab-ci-token -p "${CI_JOB_TOKEN}" registry.gitlab.com
|
|
||||||
- docker pull "registry.gitlab.com/${CI_PROJECT_PATH}/${ADDON_ARCH}:${CI_COMMIT_SHA}"
|
- docker pull "registry.gitlab.com/${CI_PROJECT_PATH}/${ADDON_ARCH}:${CI_COMMIT_SHA}"
|
||||||
- docker pull hassioaddons/build-env:latest
|
- |
|
||||||
|
echo "${CI_JOB_TOKEN}" | docker login \
|
||||||
|
--username gitlab-ci-token \
|
||||||
|
--password-stdin \
|
||||||
|
registry.gitlab.com
|
||||||
|
- |
|
||||||
|
echo "${DOCKER_PASSWORD}" | docker login \
|
||||||
|
--username "${DOCKER_LOGIN}" \
|
||||||
|
--password-stdin
|
||||||
script:
|
script:
|
||||||
- |
|
- |
|
||||||
docker run \
|
docker tag \
|
||||||
--privileged \
|
"registry.gitlab.com/${CI_PROJECT_PATH}/${ADDON_ARCH}:${CI_COMMIT_SHA}" \
|
||||||
--volume /var/run/docker.sock:/var/run/docker.sock \
|
"registry.gitlab.com/${CI_PROJECT_PATH}/${ADDON_ARCH}:cache"
|
||||||
--volume "$PWD":/docker \
|
- docker push "registry.gitlab.com/${CI_PROJECT_PATH}/${ADDON_ARCH}:cache"
|
||||||
hassioaddons/build-env:latest \
|
- TAG="${CI_COMMIT_TAG#v}"
|
||||||
--image "${DOCKER_HUB_ORG}/${ADDON_SLUG}-${ADDON_ARCH}" \
|
- TAG="${TAG:-${CI_COMMIT_SHA:0:7}}"
|
||||||
--cache-from "registry.gitlab.com/${CI_PROJECT_PATH}/${ADDON_ARCH}" \
|
- |
|
||||||
--cache-tag "${CI_COMMIT_SHA}" \
|
docker tag \
|
||||||
--git-url "https://github.com/${ADDON_GITHUB_REPO}" \
|
"registry.gitlab.com/${CI_PROJECT_PATH}/${ADDON_ARCH}:${CI_COMMIT_SHA}" \
|
||||||
--target "${ADDON_TARGET}" \
|
"${DOCKER_HUB_ORG}/${ADDON_SLUG}:${ADDON_ARCH}-${TAG}"
|
||||||
--login "${DOCKER_LOGIN}" \
|
- |
|
||||||
--password "${DOCKER_PASSWORD}" \
|
docker push \
|
||||||
--git \
|
"${DOCKER_HUB_ORG}/${ADDON_SLUG}:${ADDON_ARCH}-${TAG}"
|
||||||
--push \
|
- |
|
||||||
--${ADDON_ARCH}
|
docker tag \
|
||||||
|
"registry.gitlab.com/${CI_PROJECT_PATH}/${ADDON_ARCH}:${CI_COMMIT_SHA}" \
|
||||||
|
"${DOCKER_HUB_ORG}/${ADDON_SLUG}-${ADDON_ARCH}:${TAG}"
|
||||||
|
- |
|
||||||
|
docker push \
|
||||||
|
"${DOCKER_HUB_ORG}/${ADDON_SLUG}-${ADDON_ARCH}:${TAG}"
|
||||||
tags:
|
tags:
|
||||||
- deploy
|
- deploy
|
||||||
|
only:
|
||||||
|
- master
|
||||||
|
- /^v\d+\.\d+\.\d+(?:-(?:beta|rc)(?:(?:(?:\+|\.)?[a-zA-Z0-9]+)*)?)?$/
|
||||||
|
except:
|
||||||
|
- /^(?!master).+@/
|
||||||
|
|
||||||
|
# Generic manifest template
|
||||||
|
.manifest: &manifest
|
||||||
|
<<: *dind
|
||||||
|
stage: manifest
|
||||||
|
before_script:
|
||||||
|
- mkdir -p ~/.docker
|
||||||
|
- echo '{"experimental":"enabled"}' > ~/.docker/config.json
|
||||||
|
- docker info
|
||||||
|
- |
|
||||||
|
echo "${DOCKER_PASSWORD}" | docker login \
|
||||||
|
--username "${DOCKER_LOGIN}" \
|
||||||
|
--password-stdin
|
||||||
|
script:
|
||||||
|
- TAG="${TAG#v}"
|
||||||
|
- TAG="${TAG:-${CI_COMMIT_SHA:0:7}}"
|
||||||
|
- REF="${CI_COMMIT_TAG#v}"
|
||||||
|
- REF="${REF:-${CI_COMMIT_SHA:0:7}}"
|
||||||
|
- |
|
||||||
|
docker manifest create \
|
||||||
|
"${DOCKER_HUB_ORG}/${ADDON_SLUG}:${TAG}" \
|
||||||
|
"${DOCKER_HUB_ORG}/${ADDON_SLUG}:aarch64-${REF}" \
|
||||||
|
"${DOCKER_HUB_ORG}/${ADDON_SLUG}:amd64-${REF}" \
|
||||||
|
"${DOCKER_HUB_ORG}/${ADDON_SLUG}:armhf-${REF}" \
|
||||||
|
"${DOCKER_HUB_ORG}/${ADDON_SLUG}:i386-${REF}"
|
||||||
|
- |
|
||||||
|
docker manifest annotate \
|
||||||
|
"${DOCKER_HUB_ORG}/${ADDON_SLUG}:${TAG}" \
|
||||||
|
"${DOCKER_HUB_ORG}/${ADDON_SLUG}:aarch64-${REF}" \
|
||||||
|
--os=linux \
|
||||||
|
--arch=arm64 \
|
||||||
|
--variant=v8
|
||||||
|
- |
|
||||||
|
docker manifest annotate \
|
||||||
|
"${DOCKER_HUB_ORG}/${ADDON_SLUG}:${TAG}" \
|
||||||
|
"${DOCKER_HUB_ORG}/${ADDON_SLUG}:amd64-${REF}" \
|
||||||
|
--os=linux \
|
||||||
|
--arch=amd64
|
||||||
|
- |
|
||||||
|
docker manifest annotate \
|
||||||
|
"${DOCKER_HUB_ORG}/${ADDON_SLUG}:${TAG}" \
|
||||||
|
"${DOCKER_HUB_ORG}/${ADDON_SLUG}:armhf-${REF}" \
|
||||||
|
--os=linux \
|
||||||
|
--arch=arm \
|
||||||
|
--variant=v6
|
||||||
|
- |
|
||||||
|
docker manifest annotate \
|
||||||
|
"${DOCKER_HUB_ORG}/${ADDON_SLUG}:${TAG}" \
|
||||||
|
"${DOCKER_HUB_ORG}/${ADDON_SLUG}:i386-${REF}" \
|
||||||
|
--os=linux \
|
||||||
|
--arch=386
|
||||||
|
- |
|
||||||
|
docker manifest push \
|
||||||
|
"${DOCKER_HUB_ORG}/${ADDON_SLUG}:${TAG}"
|
||||||
|
tags:
|
||||||
|
- manifest
|
||||||
|
except:
|
||||||
|
- /^(?!master).+@/
|
||||||
|
|
||||||
# Generic publish template
|
# Generic publish template
|
||||||
.publish: &publish
|
.publish: &publish
|
||||||
|
@ -143,11 +221,13 @@ stages:
|
||||||
--addon "${ADDON_GITHUB_REPO}"
|
--addon "${ADDON_GITHUB_REPO}"
|
||||||
tags:
|
tags:
|
||||||
- publish
|
- publish
|
||||||
|
except:
|
||||||
|
- /^(?!master).+@/
|
||||||
|
|
||||||
# Preflight jobs
|
# Preflight jobs
|
||||||
hadolint:
|
hadolint:
|
||||||
<<: *preflight
|
<<: *preflight
|
||||||
image: hadolint/hadolint:latest
|
image: hadolint/hadolint:v1.6.6
|
||||||
before_script:
|
before_script:
|
||||||
- hadolint --version
|
- hadolint --version
|
||||||
script:
|
script:
|
||||||
|
@ -176,7 +256,6 @@ shellcheck:
|
||||||
if [ "${FAILED}" = "1" ]; then
|
if [ "${FAILED}" = "1" ]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
yamllint:
|
yamllint:
|
||||||
<<: *preflight
|
<<: *preflight
|
||||||
image: sdesbure/yamllint
|
image: sdesbure/yamllint
|
||||||
|
@ -202,7 +281,6 @@ jsonlint:
|
||||||
if [ "${FAILED}" = "1" ]; then
|
if [ "${FAILED}" = "1" ]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
markdownlint:
|
markdownlint:
|
||||||
<<: *preflight
|
<<: *preflight
|
||||||
image:
|
image:
|
||||||
|
@ -214,26 +292,42 @@ markdownlint:
|
||||||
script:
|
script:
|
||||||
- mdl --style all --warnings .
|
- mdl --style all --warnings .
|
||||||
|
|
||||||
# Build jobs
|
# Build Jobs
|
||||||
build:armhf:
|
build:armhf:
|
||||||
<<: *build
|
<<: *build
|
||||||
variables:
|
variables:
|
||||||
ADDON_ARCH: armhf
|
ADDON_ARCH: armhf
|
||||||
|
FROM: hassioaddons/base-armhf:1.4.2
|
||||||
|
tags:
|
||||||
|
- build
|
||||||
|
- armhf
|
||||||
|
|
||||||
build:aarch64:
|
build:aarch64:
|
||||||
<<: *build
|
<<: *build
|
||||||
variables:
|
variables:
|
||||||
ADDON_ARCH: aarch64
|
ADDON_ARCH: aarch64
|
||||||
|
FROM: hassioaddons/base-aarch64:1.4.2
|
||||||
|
tags:
|
||||||
|
- build
|
||||||
|
- aarch64
|
||||||
|
|
||||||
build:i386:
|
build:i386:
|
||||||
<<: *build
|
<<: *build
|
||||||
variables:
|
variables:
|
||||||
ADDON_ARCH: i386
|
ADDON_ARCH: i386
|
||||||
|
FROM: hassioaddons/base-i386:1.4.2
|
||||||
|
tags:
|
||||||
|
- build
|
||||||
|
- i386
|
||||||
|
|
||||||
build:amd64:
|
build:amd64:
|
||||||
<<: *build
|
<<: *build
|
||||||
variables:
|
variables:
|
||||||
ADDON_ARCH: amd64
|
ADDON_ARCH: amd64
|
||||||
|
FROM: hassioaddons/base-amd64:1.4.2
|
||||||
|
tags:
|
||||||
|
- build
|
||||||
|
- amd64
|
||||||
|
|
||||||
# Scan jobs
|
# Scan jobs
|
||||||
clair:armhf:
|
clair:armhf:
|
||||||
|
@ -261,72 +355,80 @@ deploy:armhf:
|
||||||
<<: *deploy
|
<<: *deploy
|
||||||
variables:
|
variables:
|
||||||
ADDON_ARCH: armhf
|
ADDON_ARCH: armhf
|
||||||
only:
|
|
||||||
- master
|
|
||||||
- /^v\d+\.\d+\.\d+(?:-(?:beta|rc)(?:(?:(?:\+|\.)?[a-zA-Z0-9]+)*)?)?$/
|
|
||||||
except:
|
|
||||||
- /^(?!master).+@/
|
|
||||||
|
|
||||||
deploy:aarch64:
|
deploy:aarch64:
|
||||||
<<: *deploy
|
<<: *deploy
|
||||||
variables:
|
variables:
|
||||||
ADDON_ARCH: aarch64
|
ADDON_ARCH: aarch64
|
||||||
only:
|
|
||||||
- master
|
|
||||||
- /^v\d+\.\d+\.\d+(?:-(?:beta|rc)(?:(?:(?:\+|\.)?[a-zA-Z0-9]+)*)?)?$/
|
|
||||||
except:
|
|
||||||
- /^(?!master).+@/
|
|
||||||
|
|
||||||
deploy:i386:
|
deploy:i386:
|
||||||
<<: *deploy
|
<<: *deploy
|
||||||
variables:
|
variables:
|
||||||
ADDON_ARCH: i386
|
ADDON_ARCH: i386
|
||||||
only:
|
|
||||||
- master
|
|
||||||
- /^v\d+\.\d+\.\d+(?:-(?:beta|rc)(?:(?:(?:\+|\.)?[a-zA-Z0-9]+)*)?)?$/
|
|
||||||
except:
|
|
||||||
- /^(?!master).+@/
|
|
||||||
|
|
||||||
deploy:amd64:
|
deploy:amd64:
|
||||||
<<: *deploy
|
<<: *deploy
|
||||||
variables:
|
variables:
|
||||||
ADDON_ARCH: amd64
|
ADDON_ARCH: amd64
|
||||||
|
|
||||||
|
# Manifest jobs
|
||||||
|
manifest:sha:
|
||||||
|
<<: *manifest
|
||||||
only:
|
only:
|
||||||
- master
|
- master
|
||||||
|
|
||||||
|
manifest:version:
|
||||||
|
<<: *manifest
|
||||||
|
variables:
|
||||||
|
TAG: "${CI_COMMIT_TAG}"
|
||||||
|
only:
|
||||||
- /^v\d+\.\d+\.\d+(?:-(?:beta|rc)(?:(?:(?:\+|\.)?[a-zA-Z0-9]+)*)?)?$/
|
- /^v\d+\.\d+\.\d+(?:-(?:beta|rc)(?:(?:(?:\+|\.)?[a-zA-Z0-9]+)*)?)?$/
|
||||||
except:
|
|
||||||
- /^(?!master).+@/
|
manifest:stable:
|
||||||
|
<<: *manifest
|
||||||
|
variables:
|
||||||
|
TAG: latest
|
||||||
|
only:
|
||||||
|
- /^v\d+\.\d+\.\d+(?:(?:(?:\+|\.)?[a-zA-Z0-9]+)*)?$/
|
||||||
|
|
||||||
|
manifest:beta:
|
||||||
|
<<: *manifest
|
||||||
|
variables:
|
||||||
|
TAG: beta
|
||||||
|
only:
|
||||||
|
- /^v\d+\.\d+\.\d+(?:-(?:beta|rc)(?:(?:(?:\+|\.)?[a-zA-Z0-9]+)*)?)?$/
|
||||||
|
|
||||||
|
manifest:edge:
|
||||||
|
<<: *manifest
|
||||||
|
variables:
|
||||||
|
TAG: edge
|
||||||
|
only:
|
||||||
|
- master
|
||||||
|
|
||||||
# Publish jobs
|
# Publish jobs
|
||||||
stable:
|
publish:stable:
|
||||||
<<: *publish
|
<<: *publish
|
||||||
variables:
|
variables:
|
||||||
REPOSITORY: hassio-addons/repository
|
REPOSITORY: hassio-addons/repository
|
||||||
only:
|
only:
|
||||||
- /^v\d+\.\d+\.\d+(?:(?:(?:\+|\.)?[a-zA-Z0-9]+)*)?$/
|
- /^v\d+\.\d+\.\d+(?:(?:(?:\+|\.)?[a-zA-Z0-9]+)*)?$/
|
||||||
except:
|
|
||||||
- /^(?!master).+@/
|
|
||||||
environment:
|
environment:
|
||||||
name: stable
|
name: stable
|
||||||
|
|
||||||
beta:
|
publish:beta:
|
||||||
<<: *publish
|
<<: *publish
|
||||||
variables:
|
variables:
|
||||||
REPOSITORY: hassio-addons/repository-beta
|
REPOSITORY: hassio-addons/repository-beta
|
||||||
only:
|
only:
|
||||||
- /^v\d+\.\d+\.\d+(?:-(?:beta|rc)(?:(?:(?:\+|\.)?[a-zA-Z0-9]+)*)?)?$/
|
- /^v\d+\.\d+\.\d+(?:-(?:beta|rc)(?:(?:(?:\+|\.)?[a-zA-Z0-9]+)*)?)?$/
|
||||||
except:
|
|
||||||
- /^(?!master).+@/
|
|
||||||
environment:
|
environment:
|
||||||
name: beta
|
name: beta
|
||||||
|
|
||||||
edge:
|
publish:edge:
|
||||||
<<: *publish
|
<<: *publish
|
||||||
variables:
|
variables:
|
||||||
REPOSITORY: hassio-addons/repository-edge
|
REPOSITORY: hassio-addons/repository-edge
|
||||||
only:
|
only:
|
||||||
- master
|
- master
|
||||||
except:
|
|
||||||
- /^(?!master).+@/
|
|
||||||
environment:
|
environment:
|
||||||
name: edge
|
name: edge
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue