diff --git a/.lighthouse/pipeline-rust-clippy.yaml b/.lighthouse/pipeline-rust-clippy.yaml index 63dbcb4..a676171 100644 --- a/.lighthouse/pipeline-rust-clippy.yaml +++ b/.lighthouse/pipeline-rust-clippy.yaml @@ -272,8 +272,8 @@ spec: serviceAccountName: build-bot params: - name: image-name - value: "harbor.fizz.buzz/private/organic-clippy" + value: "harbor.fizz.buzz/private/organic-development" - name: path-to-image-context - value: docker/organic_clippy/ + value: docker/organic_development/ - name: path-to-dockerfile - value: docker/organic_clippy/Dockerfile + value: docker/organic_development/Dockerfile diff --git a/docker/organic_development/Dockerfile b/docker/organic_development/Dockerfile new file mode 100644 index 0000000..41b1da5 --- /dev/null +++ b/docker/organic_development/Dockerfile @@ -0,0 +1,6 @@ +FROM rustlang/rust:nightly-alpine3.19 AS builder + +RUN apk add --no-cache musl-dev +RUN cargo install --locked --no-default-features --features ci-autoclean cargo-cache +RUN rustup component add rustfmt +RUN rustup component add clippy diff --git a/docker/organic_development/Makefile b/docker/organic_development/Makefile new file mode 100644 index 0000000..6494c00 --- /dev/null +++ b/docker/organic_development/Makefile @@ -0,0 +1,33 @@ +SHELL := bash +.ONESHELL: +.SHELLFLAGS := -eu -o pipefail -c +.DELETE_ON_ERROR: +MAKEFLAGS += --warn-undefined-variables +MAKEFLAGS += --no-builtin-rules + +ifeq ($(origin .RECIPEPREFIX), undefined) + $(error This Make does not support .RECIPEPREFIX. Please use GNU Make 4.0 or later) +endif +.RECIPEPREFIX = > + +IMAGE_NAME:=organic-development +TARGET := + +.PHONY: help +help: +> @grep -h "##" $(MAKEFILE_LIST) | grep -v grep | sed -E 's/^([^:]*): *## */\1: /' + +.PHONY: build +build: ## Build the docker image. +> docker build --tag $(IMAGE_NAME) --target=$(TARGET) --file Dockerfile . +> docker volume create organic-cargo-registry + +.PHONY: shell +shell: ## Launch an interactive shell inside the docker image with the source repository mounted at /source. +shell: build +> docker run --rm -i -t --entrypoint /bin/sh --mount type=tmpfs,destination=/tmp -v "$$(readlink -f ../../):/source" --workdir=/source --env CARGO_TARGET_DIR=/target -v "organic-cargo-registry:/usr/local/cargo/registry" $(IMAGE_NAME) + +.PHONY: clean +clean: ## Remove the docker image and volume. +> docker rmi $(IMAGE_NAME) +> docker volume rm organic-cargo-registry