diff --git a/.lighthouse/pipeline-clippy.yaml b/.lighthouse/pipeline-clippy.yaml index feae1ae..99affd9 100644 --- a/.lighthouse/pipeline-clippy.yaml +++ b/.lighthouse/pipeline-clippy.yaml @@ -73,6 +73,35 @@ spec: value: $(params.PULL_BASE_SHA) - name: deleteExisting value: "true" + - name: build-image + taskRef: + name: kaniko + params: + - name: IMAGE + value: "$(params.image-name):$(tasks.fetch-repository.results.commit)" + - name: CONTEXT + value: $(params.path-to-image-context) + - name: DOCKERFILE + value: $(params.path-to-dockerfile) + - name: BUILDER_IMAGE + value: "gcr.io/kaniko-project/executor:v1.12.1" + - name: EXTRA_ARGS + value: + - --cache=true + - --cache-copy-layers + - --cache-repo=harbor.fizz.buzz/kanikocache/cache + - --use-new-run # Should result in a speed-up + - --reproducible # To remove timestamps so layer caching works. + - --snapshot-mode=redo + - --skip-unused-stages=true + - --registry-mirror=dockerhub.dockerhub.svc.cluster.local + workspaces: + - name: source + workspace: git-source + - name: dockerconfig + workspace: docker-credentials + runAfter: + - fetch-repository - name: clippy taskRef: name: run-docker-image @@ -82,22 +111,10 @@ spec: - name: cargo-cache workspace: cargo-cache runAfter: - - fetch-repository + - build-image params: - name: docker-image - value: "rustlang/rust:nightly-alpine3.17" - - name: command - value: - [ - cargo, - clippy, - --no-deps, - --all-targets, - --all-features, - --, - -D, - warnings, - ] + value: "$(params.image-name):$(tasks.fetch-repository.results.commit)" finally: - name: report-success when: @@ -167,8 +184,8 @@ spec: timeout: 240h0m0s params: - name: image-name - value: "harbor.fizz.buzz/private/organic-fmt" + value: "harbor.fizz.buzz/private/organic-clippy" - name: path-to-image-context - value: docker/cargo_fmt/ + value: docker/organic_clippy/ - name: path-to-dockerfile - value: docker/cargo_fmt/Dockerfile + value: docker/organic_clippy/Dockerfile diff --git a/docker/organic_clippy/Dockerfile b/docker/organic_clippy/Dockerfile new file mode 100644 index 0000000..a064450 --- /dev/null +++ b/docker/organic_clippy/Dockerfile @@ -0,0 +1,5 @@ +FROM rustlang/rust:nightly-alpine3.17 + +RUN apk add --no-cache musl-dev + +ENTRYPOINT ["cargo", "clippy", "--no-deps", "--all-targets", "--all-features", "--", "-D", "warnings"] diff --git a/docker/organic_clippy/Makefile b/docker/organic_clippy/Makefile new file mode 100644 index 0000000..9546365 --- /dev/null +++ b/docker/organic_clippy/Makefile @@ -0,0 +1,37 @@ +IMAGE_NAME:=organic-clippy +# REMOTE_REPO:=harbor.fizz.buzz/private + +.PHONY: all +all: build push + +.PHONY: build +build: + docker build -t $(IMAGE_NAME) -f Dockerfile . + +.PHONY: push +push: +ifdef REMOTE_REPO + docker tag $(IMAGE_NAME) $(REMOTE_REPO)/$(IMAGE_NAME) + docker push $(REMOTE_REPO)/$(IMAGE_NAME) +else + @echo "REMOTE_REPO not defined, not pushing to a remote repo." +endif + +.PHONY: clean +clean: + docker rmi $(IMAGE_NAME) +ifdef REMOTE_REPO + docker rmi $(REMOTE_REPO)/$(IMAGE_NAME) +else + @echo "REMOTE_REPO not defined, not removing from remote repo." +endif + docker volume rm cargo-cache + +# NOTE: This target will write to folders underneath the git-root +.PHONY: run +run: build + docker run --rm --init --read-only --mount type=tmpfs,destination=/tmp -v "$$(readlink -f ../../):/source" --workdir=/source --mount source=cargo-cache,target=/usr/local/cargo/registry $(IMAGE_NAME) + +.PHONY: shell +shell: build + docker run --rm -i -t --entrypoint /bin/sh --mount type=tmpfs,destination=/tmp -v "$$(readlink -f ../../):/source" --workdir=/source --mount source=cargo-cache,target=/usr/local/cargo/registry $(IMAGE_NAME)