ci: Improve docker build

Signed-off-by: Yan Minari <yangm97@gmail.com>
This commit is contained in:
Yan Minari 2019-07-18 12:35:21 -03:00
parent 0a039b79ec
commit 70a36ba827
No known key found for this signature in database
GPG key ID: CC7D230C1C6ED7E2
3 changed files with 37 additions and 51 deletions

View file

@ -203,66 +203,33 @@ jobs:
command: | command: |
echo 'export CINAME=$(sh contrib/semver/name.sh)' >> $BASH_ENV echo 'export CINAME=$(sh contrib/semver/name.sh)' >> $BASH_ENV
echo 'export CIVERSION=$(sh contrib/semver/version.sh --bare)' >> $BASH_ENV echo 'export CIVERSION=$(sh contrib/semver/version.sh --bare)' >> $BASH_ENV
echo 'export DOCKER_BUILDKIT=1' >> $BASH_ENV
- run: - run:
name: Build images name: Build images
# docker-copyedit is used because of https://github.com/moby/moby/issues/36552 # TODO: don't use latest for develop
# TODO: tag using semver https://medium.com/@mccode/using-semantic-versioning-for-docker-image-tags-dfde8be06699
command: | command: |
wget https://raw.githubusercontent.com/gdraheim/docker-copyedit/master/docker-copyedit.py && chmod +x docker-copyedit.py mkdir -p linux/amd64 && \
cp /tmp/upload/${CINAME}-${CIVERSION}-linux-amd64 yggdrasil && \ cp /tmp/upload/${CINAME}-${CIVERSION}-linux-amd64 linux/amd64/yggdrasil
docker build -t ${DOCKER_NAMESPACE}:temp . && \ cp /tmp/upload/${CINAME}-${CIVERSION}-yggdrasilctl-linux-amd64 linux/amd64/yggdrasilctl
./docker-copyedit.py FROM ${DOCKER_NAMESPACE}:temp INTO ${DOCKER_NAMESPACE}:amd64 SET arch amd64 -vv mkdir -p linux/arm64 && \
cp /tmp/upload/${CINAME}-${CIVERSION}-linux-i386 yggdrasil && \ cp /tmp/upload/${CINAME}-${CIVERSION}-linux-arm64 linux/arm64/yggdrasil
docker build -t ${DOCKER_NAMESPACE}:temp . && \ cp /tmp/upload/${CINAME}-${CIVERSION}-yggdrasilctl-linux-arm64 linux/arm64/yggdrasilctl
./docker-copyedit.py FROM ${DOCKER_NAMESPACE}:temp INTO ${DOCKER_NAMESPACE}:i386 SET arch i386 -vv docker build \
cp /tmp/upload/${CINAME}-${CIVERSION}-linux-mipsel yggdrasil && \ --tag=${DOCKER_NAMESPACE}:${CIVERSION} \
docker build -t ${DOCKER_NAMESPACE}:temp . && \ --tag=${DOCKER_NAMESPACE}:latest \
./docker-copyedit.py FROM ${DOCKER_NAMESPACE}:temp INTO ${DOCKER_NAMESPACE}:mipsel SET arch mipsel -vv --platform=linux/amd64 \
cp /tmp/upload/${CINAME}-${CIVERSION}-linux-mips yggdrasil && \ --platform=linux/arm64 \
docker build -t ${DOCKER_NAMESPACE}:temp . && \ --file=contrib/docker/ci/alpine/Dockerfile \
./docker-copyedit.py FROM ${DOCKER_NAMESPACE}:temp INTO ${DOCKER_NAMESPACE}:mips SET arch mips -vv .
cp /tmp/upload/${CINAME}-${CIVERSION}-linux-armhf yggdrasil && \
docker build -t ${DOCKER_NAMESPACE}:temp . && \
./docker-copyedit.py FROM ${DOCKER_NAMESPACE}:temp INTO ${DOCKER_NAMESPACE}:armhf SET arch armhf -vv
cp /tmp/upload/${CINAME}-${CIVERSION}-linux-arm64 yggdrasil && \
docker build -t ${DOCKER_NAMESPACE}:temp . && \
./docker-copyedit.py FROM ${DOCKER_NAMESPACE}:temp INTO ${DOCKER_NAMESPACE}:arm64 SET arch arm64 -vv
- run:
name: Tag images
command: |
docker tag ${DOCKER_NAMESPACE}:amd64 ${DOCKER_NAMESPACE}:${CIVERSION}-amd64
docker tag ${DOCKER_NAMESPACE}:i386 ${DOCKER_NAMESPACE}:${CIVERSION}-i386
docker tag ${DOCKER_NAMESPACE}:mipsel ${DOCKER_NAMESPACE}:${CIVERSION}-mipsel
docker tag ${DOCKER_NAMESPACE}:mips ${DOCKER_NAMESPACE}:${CIVERSION}-mips
docker tag ${DOCKER_NAMESPACE}:armhf ${DOCKER_NAMESPACE}:${CIVERSION}-armhf
docker tag ${DOCKER_NAMESPACE}:arm64 ${DOCKER_NAMESPACE}:${CIVERSION}-arm64
- run: - run:
name: Push images name: Push images
command: | command: |
docker login -u $DOCKER_USER -p $DOCKER_PASS docker login -u $DOCKER_USER -p $DOCKER_PASS
docker push ${DOCKER_NAMESPACE}:amd64 docker push ${DOCKER_NAMESPACE}:${CIVERSION}
docker push ${DOCKER_NAMESPACE}:${CIVERSION}-amd64 docker push ${DOCKER_NAMESPACE}:latest
docker push ${DOCKER_NAMESPACE}:i386
docker push ${DOCKER_NAMESPACE}:${CIVERSION}-i386
docker push ${DOCKER_NAMESPACE}:mipsel
docker push ${DOCKER_NAMESPACE}:${CIVERSION}-mipsel
docker push ${DOCKER_NAMESPACE}:mips
docker push ${DOCKER_NAMESPACE}:${CIVERSION}-mips
docker push ${DOCKER_NAMESPACE}:armhf
docker push ${DOCKER_NAMESPACE}:${CIVERSION}-armhf
docker push ${DOCKER_NAMESPACE}:arm64
docker push ${DOCKER_NAMESPACE}:${CIVERSION}-arm64
# - run:
# name: Create and push release manifest
# # We need to enable experimental features for cli in order to use docker manifest
# command: |
# mkdir -p ~/.docker && echo $'{\n "experimental": "enabled"\n}' >| ~/.docker/config.json
# docker login -u $DOCKER_USER -p $DOCKER_PASS
# docker manifest create --amend ${DOCKER_NAMESPACE}:${CIVERSION} ${DOCKER_NAMESPACE}:${CIVERSION}-amd64 ${DOCKER_NAMESPACE}:${CIVERSION}-i386 ${DOCKER_NAMESPACE}:${CIVERSION}-mipsel ${DOCKER_NAMESPACE}:${CIVERSION}-mips ${DOCKER_NAMESPACE}:${CIVERSION}-armhf ${DOCKER_NAMESPACE}:${CIVERSION}-arm64
# docker manifest push ${DOCKER_NAMESPACE}:${CIVERSION}
upload: upload:
machine: true machine: true

View file

@ -0,0 +1,10 @@
FROM alpine
ARG BUILDPLATFORM
ENV TARGETPLATFORM=$TARGETPLATFORM
COPY ${TARGETPLATFORM}/* /usr/bin/
COPY contrib/docker/alpine/entrypoint.sh /usr/bin/entrypoint.sh
ENTRYPOINT [ "/usr/bin/entrypoint.sh" ]

View file

@ -0,0 +1,9 @@
FROM scratch
ENV XDG_RUNTIME_DIR /
ENV XDG_CONFIG_DIRS /
COPY yggdrasil /
COPY yggdrasilctl /
ENTRYPOINT ["/yggdrasil"]