Compare commits
12 Commits
5d0f161fd2
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| b4593002cb | |||
| 91981777fa | |||
| 95aa8bb96a | |||
| 69b806fcf5 | |||
| d1803218f9 | |||
| 8d7c40edcb | |||
| 8368dbff82 | |||
| ab8c0463bf | |||
| b970f90af6 | |||
| e63d1d9e48 | |||
| d0ac917964 | |||
| a18508ba20 |
20
.drone.yml
20
.drone.yml
@@ -3,16 +3,26 @@ kind: pipeline
|
||||
name: build-and-upload
|
||||
|
||||
steps:
|
||||
- name: send-tags-to-tags-file
|
||||
image: alpine
|
||||
when:
|
||||
event:
|
||||
- push
|
||||
- pull_request
|
||||
commands:
|
||||
- echo -n "latest-$(uname -m), $(date +'%Y-%m-%d')-$(uname -m), ${DRONE_COMMIT_SHA:0:7}-$(uname -m), ${DRONE_BRANCH}-$(uname -m)" > .tags
|
||||
- name: build-and-push
|
||||
image: plugins/docker
|
||||
environment:
|
||||
DOCKER_BUILDKIT: 1
|
||||
network_mode: bridge
|
||||
settings:
|
||||
repo: sneak/builder
|
||||
custom_dns: [ 116.202.204.30 ]
|
||||
tags:
|
||||
- ${DRONE_COMMIT_SHA}
|
||||
- ${DRONE_BRANCH}
|
||||
- latest
|
||||
force_tag: true
|
||||
username:
|
||||
from_secret: DOCKER_USERNAME
|
||||
password:
|
||||
from_secret: DOCKER_TOKEN
|
||||
- name: notify
|
||||
image: plugins/slack
|
||||
settings:
|
||||
|
||||
@@ -13,6 +13,7 @@ RUN --mount=type=cache,target=/var/cache/apt \
|
||||
--install-recommends \
|
||||
build-essential \
|
||||
curl \
|
||||
git \
|
||||
jq \
|
||||
make \
|
||||
pv \
|
||||
@@ -34,8 +35,6 @@ RUN rm -rf /usr/local/go && \
|
||||
tar -C /usr/local -xzf go*.linux-$(uname -m).tar.gz && \
|
||||
echo 'export PATH=$PATH:/usr/local/go/bin' >> /etc/profile
|
||||
|
||||
RUN mkdir -p "$(go env GOMODCACHE)" && cd $(go env GOMODCACHE) && tar xvf /tmp/modcache.tar && rm /tmp/modcache.tar && cd /tmp
|
||||
|
||||
RUN \
|
||||
go install -v google.golang.org/protobuf/cmd/protoc-gen-go@v1.28.1 && \
|
||||
go install -v github.com/golangci/golangci-lint/cmd/golangci-lint@v1.50.1 && \
|
||||
|
||||
33
Makefile
33
Makefile
@@ -5,6 +5,7 @@ ARCH := $(shell uname -m)
|
||||
GITREV := $(shell git describe --always --dirty=-dirty)
|
||||
D := $(HOME)/Documents/_SYSADMIN/docker/sneak/$(APPNAME)
|
||||
BRANCH := $(shell git branch --show-current)
|
||||
YYYYMMDD := $(shell date -u +%Y-%m-%d)
|
||||
RN := sneak/builder
|
||||
export DOCKER_IMAGE_CACHE_DIR := $(HOME)/Library/Caches/Docker/$(APPNAME)-$(ARCH)
|
||||
|
||||
@@ -15,33 +16,33 @@ default: save
|
||||
clean:
|
||||
rm -v $(D)/*.tzst
|
||||
|
||||
build: deps/modcache.tar
|
||||
build:
|
||||
docker build \
|
||||
-t $(RN):$(GITREV) \
|
||||
-t $(RN):latest \
|
||||
-t $(RN):$(shell git branch --show-current) \
|
||||
-t $(RN):$(GITREV)-$(shell uname -m) \
|
||||
-t $(RN):latest-$(shell uname -m) \
|
||||
-t $(RN):$(YYYYMMDD)-$(shell uname -m) \
|
||||
-t $(RN):$(BRANCH)-$(shell uname -m) \
|
||||
--progress plain --build-arg GITREV=$(GITREV) .
|
||||
|
||||
save: $(D)/latest.tzst $(D)/$(BRANCH).tzst
|
||||
|
||||
$(D)/$(BRANCH).tzst: $(D)/$(GITREV).tzst
|
||||
$(D)/$(BRANCH).tzst: $(D)/$(GITREV)-$(shell uname -m).tzst
|
||||
rm -f $@
|
||||
ln -s $(D)/$(GITREV).tzst $@
|
||||
ln -s $(D)/$(GITREV)-$(shell uname -m).tzst $@
|
||||
|
||||
$(D)/latest.tzst: $(D)/$(GITREV).tzst
|
||||
$(D)/latest.tzst: $(D)/$(GITREV)-$(shell uname -m).tzst
|
||||
rm -f $@
|
||||
ln -s $(D)/$(GITREV).tzst $@
|
||||
ln -s $(D)/$(GITREV)-$(shell uname -m).tzst $@
|
||||
|
||||
$D/$(GITREV).tzst: build
|
||||
docker image inspect $(RN):$(GITREV)
|
||||
$D/$(GITREV)-$(shell uname -m).tzst: build
|
||||
docker image inspect $(RN):$(GITREV)-$(shell uname -m)
|
||||
-mkdir -p "$(D)"
|
||||
docker save $(RN):$(GITREV) | pv | zstdmt -19 > $@.tmp
|
||||
docker save $(RN):$(GITREV)-$(shell uname -m) | pv | zstdmt -19 > $@.tmp
|
||||
mv $@.tmp $@
|
||||
|
||||
push:
|
||||
docker push $(RN):$(GITREV)
|
||||
docker push $(RN):latest
|
||||
docker push $(RN):$(shell git branch --show-current)
|
||||
docker push $(RN):$(GITREV)-$(shell uname -m)
|
||||
docker push $(RN):latest-$(shell uname -m)
|
||||
docker push $(RN):$(BRANCH)-$(shell uname -m)
|
||||
docker push $(RN):$(YYYYMMDD)-$(shell uname -m)
|
||||
|
||||
deps/modcache.tar:
|
||||
cd $(shell go env GOMODCACHE)/ && tar -c . | pv > $(PWD)/deps/modcache.tar
|
||||
|
||||
19
README.md
19
README.md
@@ -1,3 +1,20 @@
|
||||
# builder
|
||||
|
||||
docker base image
|
||||
[](https://drone.datavi.be/sneak/builder)
|
||||
|
||||
docker base image for building golang
|
||||
|
||||
TBD: javascript/node support (in progress)
|
||||
|
||||
TBD: python3 support
|
||||
|
||||
TBD: ruby support
|
||||
|
||||
# goals
|
||||
|
||||
* try to put as much stuff as possible in this base image to minimize
|
||||
network usage of child image builds
|
||||
|
||||
# license
|
||||
|
||||
WTFPL
|
||||
|
||||
23
tagimage.sh
Normal file
23
tagimage.sh
Normal file
@@ -0,0 +1,23 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -euox pipefail
|
||||
|
||||
if [[ "$(uname -m)" != "arm64" ]]; then
|
||||
echo "wrong box, run on macOS arm workstation after CI" > /dev/stderr
|
||||
exit 1
|
||||
fi
|
||||
|
||||
GITREV="$(git describe --always --dirty=-dirty)"
|
||||
BRANCH="$(git branch --show-current)"
|
||||
YYYYMMDD="$(date -u +%Y-%m-%d)"
|
||||
RN="sneak/builder"
|
||||
|
||||
for TAG in $GITREV latest $YYYYMMDD $BRANCH ; do
|
||||
# pull down the amd64 images from the CI box
|
||||
docker pull $RN:$TAG-x86_64
|
||||
docker manifest create \
|
||||
$RN:$TAG \
|
||||
--amend $RN:$TAG-arm64 \
|
||||
--amend $RN:$TAG-x86_64
|
||||
docker manifest push $RN:$TAG
|
||||
done
|
||||
Reference in New Issue
Block a user