|
| 1 | +# https://just.systems/man/en/ |
| 2 | +set fallback := true |
| 3 | +set unstable := true |
| 4 | +set script-interpreter := ["bash", "-eu"] |
| 5 | + |
| 6 | +REGISTRY_IMAGE := "docker.io/library/registry:2.8.3" |
| 7 | +REGISTRY_NAME := "kaniko-registry" |
| 8 | +REGISTRY_PORT := "5001" |
| 9 | +IMAGE := replace("localhost:_/shellcheck", '_', REGISTRY_PORT) |
| 10 | + |
| 11 | +[private] |
| 12 | +@default: |
| 13 | + just --list --unsorted |
| 14 | + |
| 15 | +# Run linter. |
| 16 | +@lint: |
| 17 | + docker run --rm --read-only --volume=$(pwd):$(pwd):ro --workdir=$(pwd) kokuwaio/shellcheck |
| 18 | + docker run --rm --read-only --volume=$(pwd):$(pwd):ro --workdir=$(pwd) kokuwaio/hadolint |
| 19 | + docker run --rm --read-only --volume=$(pwd):$(pwd):ro --workdir=$(pwd) kokuwaio/yamllint |
| 20 | + docker run --rm --read-only --volume=$(pwd):$(pwd):rw --workdir=$(pwd) kokuwaio/markdownlint --fix |
| 21 | + docker run --rm --read-only --volume=$(pwd):$(pwd):ro --workdir=$(pwd) kokuwaio/renovate-config-validator |
| 22 | + |
| 23 | +# Build using local repository as cache. |
| 24 | +@build: registry-up |
| 25 | + docker run --rm --net=host --volume=$(pwd):/workspace:ro gcr.io/kaniko-project/executor:v1.23.2 --context=/workspace --destination={{IMAGE}} |
| 26 | + |
| 27 | +# Run image against local repository. |
| 28 | +run: registry-up |
| 29 | + docker pull {{IMAGE}} >/dev/null |
| 30 | + docker run --rm --read-only --volume=$(pwd):$(pwd):ro --workdir=$(pwd) {{IMAGE}} |
| 31 | + |
| 32 | +# Inspect image layers with `dive`. |
| 33 | +@dive: registry-up |
| 34 | + docker pull {{IMAGE}} >/dev/null |
| 35 | + docker run --rm -it --volume=/var/run/docker.sock:/var/run/docker.sock:ro wagoodman/dive:latest {{IMAGE}} |
| 36 | + |
| 37 | +# Build with local docker daemon. |
| 38 | +docker: registry-up |
| 39 | + docker buildx build . --load --quiet --tag={{IMAGE}}:amd64 --platform=linux/amd64 |
| 40 | + docker buildx build . --load --quiet --tag={{IMAGE}}:arm64 --platform=linux/arm64 |
| 41 | + docker push {{IMAGE}} --all-tags --quiet |
| 42 | + docker manifest rm {{IMAGE}} || true |
| 43 | + docker manifest create {{IMAGE}} --insecure --amend {{IMAGE}}:amd64 --amend {{IMAGE}}:arm64 |
| 44 | + docker manifest inspect {{IMAGE}} --verbose |
| 45 | + docker manifest push {{IMAGE}} --purge |
| 46 | + docker pull {{IMAGE}} |
| 47 | + docker image inspect {{IMAGE}} |
| 48 | + docker run --rm --read-only --env=CI=1 --volume=$(pwd):$(pwd):ro --workdir=$(pwd) {{IMAGE}} |
| 49 | + |
| 50 | +# Start local image registry at `http://localhost:{{REGISTRY_PORT}}`. |
| 51 | +@registry-up: |
| 52 | + docker volume create {{REGISTRY_NAME}} >/dev/null |
| 53 | + docker ps --format '{{{{.Names}}' | grep {{REGISTRY_NAME}} >/dev/null || docker run --quiet --detach --volume={{REGISTRY_NAME}}:/var/lib/registry --publish={{REGISTRY_PORT}}:5000 --name={{REGISTRY_NAME}} {{REGISTRY_IMAGE}} >/dev/null |
| 54 | + |
| 55 | +# Shutdown local image registry. |
| 56 | +@registry-down: |
| 57 | + docker rm {{REGISTRY_NAME}} --force >/dev/null 2>&1 |
0 commit comments