Merge branch 'buildkit'
All checks were successful
format Build format has succeeded
clippy Build clippy has succeeded
rust-test Build rust-test has succeeded
build Build build has succeeded

This commit is contained in:
Tom Alexander 2024-10-20 21:56:23 -04:00
commit 328b2ba520
Signed by: talexander
GPG Key ID: D3A179C9A53C0EDE
6 changed files with 209 additions and 82 deletions

View File

@ -69,42 +69,72 @@ spec:
value: $(params.PULL_BASE_SHA) value: $(params.PULL_BASE_SHA)
- name: deleteExisting - name: deleteExisting
value: "true" value: "true"
- name: get-git-commit-time
taskSpec:
metadata: {}
stepTemplate:
image: alpine:3.20
computeResources:
requests:
cpu: 10m
memory: 600Mi
workingDir: "$(workspaces.repo.path)"
results:
- name: unix-time
description: The time of the git commit in unix timestamp format.
steps:
- image: alpine/git:v2.34.2
name: detect-tag-step
script: |
#!/usr/bin/env sh
set -euo pipefail
echo -n "$(git log -1 --pretty=%ct)" | tee $(results.unix-time.path)
workspaces:
- name: repo
workspace: git-source
runAfter:
- fetch-repository
- name: build-image - name: build-image
taskRef: taskRef:
resolver: git resolver: git
params: params:
- name: url - name: url
value: https://code.fizz.buzz/mirror/catalog.git # mirror of https://github.com/tektoncd/catalog.git value: https://code.fizz.buzz/talexander/personal_tekton_catalog.git
- name: revision - name: revision
value: df36b3853a5657fd883015cdbf07ad6466918acf value: 7ee31a185243ee6da13dcd26a592c585b64c80e5
- name: pathInRepo - name: pathInRepo
value: task/kaniko/0.6/kaniko.yaml value: task/buildkit-rootless-daemonless/0.1/buildkit-rootless-daemonless.yaml
params: params:
- name: IMAGE - name: OUTPUT
value: "$(params.image-name):$(tasks.fetch-repository.results.commit)" value: >-
type=image,"name=$(params.image-name):latest,$(params.image-name):$(tasks.fetch-repository.results.commit)",push=true,compression=zstd,compression-level=22,oci-mediatypes=true
- name: CONTEXT - name: CONTEXT
value: $(params.path-to-image-context) value: $(params.path-to-image-context)
- name: DOCKERFILE - name: DOCKERFILE
value: $(params.path-to-dockerfile) value: $(params.path-to-dockerfile)
- name: BUILDER_IMAGE
value: "gcr.io/kaniko-project/executor:v1.23.2"
- name: EXTRA_ARGS - name: EXTRA_ARGS
value: value:
- "--destination=$(params.image-name)" # Also write the :latest image - --import-cache
- "--target=$(params.target-name)" - "type=registry,ref=$(params.image-name):buildcache"
- --cache=true - --export-cache
- --cache-copy-layers - "type=registry,ref=$(params.image-name):buildcache,mode=max,compression=zstd,compression-level=22,rewrite-timestamp=true,image-manifest=true,oci-mediatypes=true"
- --cache-repo=harbor.fizz.buzz/kanikocache/cache - --opt
- --use-new-run # Should result in a speed-up - build-arg:SOURCE_DATE_EPOCH=$(tasks.get-git-commit-time.results.unix-time)
- --reproducible # To remove timestamps so layer caching works. - name: BUILDKITD_TOML
- --snapshot-mode=redo value: |
- --skip-unused-stages=true debug = true
- --registry-mirror=dockerhub.dockerhub.svc.cluster.local [registry."docker.io"]
mirrors = ["dockerhub.dockerhub.svc.cluster.local"]
[registry."dockerhub.dockerhub.svc.cluster.local"]
http = true
insecure = true
workspaces: workspaces:
- name: source - name: source
workspace: git-source workspace: git-source
- name: dockerconfig - name: dockerconfig
workspace: docker-credentials workspace: docker-credentials
runAfter:
- fetch-repository
finally: finally:
- name: report-success - name: report-success
when: when:
@ -189,4 +219,4 @@ spec:
- name: path-to-image-context - name: path-to-image-context
value: . value: .
- name: path-to-dockerfile - name: path-to-dockerfile
value: docker/natter/Dockerfile value: docker/natter/

View File

@ -69,41 +69,72 @@ spec:
value: $(params.PULL_BASE_SHA) value: $(params.PULL_BASE_SHA)
- name: deleteExisting - name: deleteExisting
value: "true" value: "true"
- name: get-git-commit-time
taskSpec:
metadata: {}
stepTemplate:
image: alpine:3.20
computeResources:
requests:
cpu: 10m
memory: 600Mi
workingDir: "$(workspaces.repo.path)"
results:
- name: unix-time
description: The time of the git commit in unix timestamp format.
steps:
- image: alpine/git:v2.34.2
name: detect-tag-step
script: |
#!/usr/bin/env sh
set -euo pipefail
echo -n "$(git log -1 --pretty=%ct)" | tee $(results.unix-time.path)
workspaces:
- name: repo
workspace: git-source
runAfter:
- fetch-repository
- name: build-image - name: build-image
taskRef: taskRef:
resolver: git resolver: git
params: params:
- name: url - name: url
value: https://code.fizz.buzz/mirror/catalog.git # mirror of https://github.com/tektoncd/catalog.git value: https://code.fizz.buzz/talexander/personal_tekton_catalog.git
- name: revision - name: revision
value: df36b3853a5657fd883015cdbf07ad6466918acf value: 7ee31a185243ee6da13dcd26a592c585b64c80e5
- name: pathInRepo - name: pathInRepo
value: task/kaniko/0.6/kaniko.yaml value: task/buildkit-rootless-daemonless/0.1/buildkit-rootless-daemonless.yaml
params: params:
- name: IMAGE - name: OUTPUT
value: "$(params.image-name):$(tasks.fetch-repository.results.commit)" value: >-
type=image,"name=$(params.image-name):latest,$(params.image-name):$(tasks.fetch-repository.results.commit)",push=true,compression=zstd,compression-level=22,oci-mediatypes=true
- name: CONTEXT - name: CONTEXT
value: $(params.path-to-image-context) value: $(params.path-to-image-context)
- name: DOCKERFILE - name: DOCKERFILE
value: $(params.path-to-dockerfile) value: $(params.path-to-dockerfile)
- name: BUILDER_IMAGE
value: "gcr.io/kaniko-project/executor:v1.23.2"
- name: EXTRA_ARGS - name: EXTRA_ARGS
value: value:
- "--target=$(params.target-name)" - --import-cache
- --cache=true - "type=registry,ref=$(params.image-name):buildcache"
- --cache-copy-layers - --export-cache
- --cache-repo=harbor.fizz.buzz/kanikocache/cache - "type=registry,ref=$(params.image-name):buildcache,mode=max,compression=zstd,compression-level=22,rewrite-timestamp=true,image-manifest=true,oci-mediatypes=true"
- --use-new-run # Should result in a speed-up - --opt
- --reproducible # To remove timestamps so layer caching works. - build-arg:SOURCE_DATE_EPOCH=$(tasks.get-git-commit-time.results.unix-time)
- --snapshot-mode=redo - name: BUILDKITD_TOML
- --skip-unused-stages=true value: |
- --registry-mirror=dockerhub.dockerhub.svc.cluster.local debug = true
[registry."docker.io"]
mirrors = ["dockerhub.dockerhub.svc.cluster.local"]
[registry."dockerhub.dockerhub.svc.cluster.local"]
http = true
insecure = true
workspaces: workspaces:
- name: source - name: source
workspace: git-source workspace: git-source
- name: dockerconfig - name: dockerconfig
workspace: docker-credentials workspace: docker-credentials
runAfter:
- fetch-repository
- name: run-cargo-fmt - name: run-cargo-fmt
taskSpec: taskSpec:
metadata: {} metadata: {}
@ -143,7 +174,7 @@ spec:
- build-image - build-image
params: params:
- name: docker-image - name: docker-image
value: "$(params.image-name):$(tasks.fetch-repository.results.commit)" value: "$(tasks.build-image.results.IMAGE_URL[1])"
- name: run-prettier - name: run-prettier
taskSpec: taskSpec:
metadata: {} metadata: {}
@ -177,7 +208,7 @@ spec:
- build-image - build-image
params: params:
- name: docker-image - name: docker-image
value: "$(params.image-name):$(tasks.fetch-repository.results.commit)" value: "$(tasks.build-image.results.IMAGE_URL[1])"
- name: commit-changes - name: commit-changes
taskRef: taskRef:
resolver: git resolver: git
@ -303,7 +334,7 @@ spec:
workspace: cargo-cache workspace: cargo-cache
params: params:
- name: docker-image - name: docker-image
value: "$(params.image-name):$(tasks.fetch-repository.results.commit)" value: "$(tasks.build-image.results.IMAGE_URL[1])"
workspaces: workspaces:
- name: git-source - name: git-source
- name: docker-credentials - name: docker-credentials
@ -333,4 +364,4 @@ spec:
- name: path-to-image-context - name: path-to-image-context
value: docker/natter_development/ value: docker/natter_development/
- name: path-to-dockerfile - name: path-to-dockerfile
value: docker/natter_development/Dockerfile value: docker/natter_development/

View File

@ -69,41 +69,72 @@ spec:
value: $(params.PULL_BASE_SHA) value: $(params.PULL_BASE_SHA)
- name: deleteExisting - name: deleteExisting
value: "true" value: "true"
- name: get-git-commit-time
taskSpec:
metadata: {}
stepTemplate:
image: alpine:3.20
computeResources:
requests:
cpu: 10m
memory: 600Mi
workingDir: "$(workspaces.repo.path)"
results:
- name: unix-time
description: The time of the git commit in unix timestamp format.
steps:
- image: alpine/git:v2.34.2
name: detect-tag-step
script: |
#!/usr/bin/env sh
set -euo pipefail
echo -n "$(git log -1 --pretty=%ct)" | tee $(results.unix-time.path)
workspaces:
- name: repo
workspace: git-source
runAfter:
- fetch-repository
- name: build-image - name: build-image
taskRef: taskRef:
resolver: git resolver: git
params: params:
- name: url - name: url
value: https://code.fizz.buzz/mirror/catalog.git # mirror of https://github.com/tektoncd/catalog.git value: https://code.fizz.buzz/talexander/personal_tekton_catalog.git
- name: revision - name: revision
value: df36b3853a5657fd883015cdbf07ad6466918acf value: 7ee31a185243ee6da13dcd26a592c585b64c80e5
- name: pathInRepo - name: pathInRepo
value: task/kaniko/0.6/kaniko.yaml value: task/buildkit-rootless-daemonless/0.1/buildkit-rootless-daemonless.yaml
params: params:
- name: IMAGE - name: OUTPUT
value: "$(params.image-name):$(tasks.fetch-repository.results.commit)" value: >-
type=image,"name=$(params.image-name):latest,$(params.image-name):$(tasks.fetch-repository.results.commit)",push=true,compression=zstd,compression-level=22,oci-mediatypes=true
- name: CONTEXT - name: CONTEXT
value: $(params.path-to-image-context) value: $(params.path-to-image-context)
- name: DOCKERFILE - name: DOCKERFILE
value: $(params.path-to-dockerfile) value: $(params.path-to-dockerfile)
- name: BUILDER_IMAGE
value: "gcr.io/kaniko-project/executor:v1.23.2"
- name: EXTRA_ARGS - name: EXTRA_ARGS
value: value:
- "--target=$(params.target-name)" - --import-cache
- --cache=true - "type=registry,ref=$(params.image-name):buildcache"
- --cache-copy-layers - --export-cache
- --cache-repo=harbor.fizz.buzz/kanikocache/cache - "type=registry,ref=$(params.image-name):buildcache,mode=max,compression=zstd,compression-level=22,rewrite-timestamp=true,image-manifest=true,oci-mediatypes=true"
- --use-new-run # Should result in a speed-up - --opt
- --reproducible # To remove timestamps so layer caching works. - build-arg:SOURCE_DATE_EPOCH=$(tasks.get-git-commit-time.results.unix-time)
- --snapshot-mode=redo - name: BUILDKITD_TOML
- --skip-unused-stages=true value: |
- --registry-mirror=dockerhub.dockerhub.svc.cluster.local debug = true
[registry."docker.io"]
mirrors = ["dockerhub.dockerhub.svc.cluster.local"]
[registry."dockerhub.dockerhub.svc.cluster.local"]
http = true
insecure = true
workspaces: workspaces:
- name: source - name: source
workspace: git-source workspace: git-source
- name: dockerconfig - name: dockerconfig
workspace: docker-credentials workspace: docker-credentials
runAfter:
- fetch-repository
- name: run-cargo-clippy - name: run-cargo-clippy
taskSpec: taskSpec:
metadata: {} metadata: {}
@ -153,7 +184,7 @@ spec:
- build-image - build-image
params: params:
- name: docker-image - name: docker-image
value: "$(params.image-name):$(tasks.fetch-repository.results.commit)" value: "$(tasks.build-image.results.IMAGE_URL[1])"
finally: finally:
- name: report-success - name: report-success
when: when:
@ -247,7 +278,7 @@ spec:
workspace: cargo-cache workspace: cargo-cache
params: params:
- name: docker-image - name: docker-image
value: "$(params.image-name):$(tasks.fetch-repository.results.commit)" value: "$(tasks.build-image.results.IMAGE_URL[1])"
workspaces: workspaces:
- name: git-source - name: git-source
- name: docker-credentials - name: docker-credentials
@ -277,4 +308,4 @@ spec:
- name: path-to-image-context - name: path-to-image-context
value: docker/natter_development/ value: docker/natter_development/
- name: path-to-dockerfile - name: path-to-dockerfile
value: docker/natter_development/Dockerfile value: docker/natter_development/

View File

@ -69,41 +69,72 @@ spec:
value: $(params.PULL_BASE_SHA) value: $(params.PULL_BASE_SHA)
- name: deleteExisting - name: deleteExisting
value: "true" value: "true"
- name: get-git-commit-time
taskSpec:
metadata: {}
stepTemplate:
image: alpine:3.20
computeResources:
requests:
cpu: 10m
memory: 600Mi
workingDir: "$(workspaces.repo.path)"
results:
- name: unix-time
description: The time of the git commit in unix timestamp format.
steps:
- image: alpine/git:v2.34.2
name: detect-tag-step
script: |
#!/usr/bin/env sh
set -euo pipefail
echo -n "$(git log -1 --pretty=%ct)" | tee $(results.unix-time.path)
workspaces:
- name: repo
workspace: git-source
runAfter:
- fetch-repository
- name: build-image - name: build-image
taskRef: taskRef:
resolver: git resolver: git
params: params:
- name: url - name: url
value: https://code.fizz.buzz/mirror/catalog.git # mirror of https://github.com/tektoncd/catalog.git value: https://code.fizz.buzz/talexander/personal_tekton_catalog.git
- name: revision - name: revision
value: df36b3853a5657fd883015cdbf07ad6466918acf value: 7ee31a185243ee6da13dcd26a592c585b64c80e5
- name: pathInRepo - name: pathInRepo
value: task/kaniko/0.6/kaniko.yaml value: task/buildkit-rootless-daemonless/0.1/buildkit-rootless-daemonless.yaml
params: params:
- name: IMAGE - name: OUTPUT
value: "$(params.image-name):$(tasks.fetch-repository.results.commit)" value: >-
type=image,"name=$(params.image-name):latest,$(params.image-name):$(tasks.fetch-repository.results.commit)",push=true,compression=zstd,compression-level=22,oci-mediatypes=true
- name: CONTEXT - name: CONTEXT
value: $(params.path-to-image-context) value: $(params.path-to-image-context)
- name: DOCKERFILE - name: DOCKERFILE
value: $(params.path-to-dockerfile) value: $(params.path-to-dockerfile)
- name: BUILDER_IMAGE
value: "gcr.io/kaniko-project/executor:v1.23.2"
- name: EXTRA_ARGS - name: EXTRA_ARGS
value: value:
- "--target=$(params.target-name)" - --import-cache
- --cache=true - "type=registry,ref=$(params.image-name):buildcache"
- --cache-copy-layers - --export-cache
- --cache-repo=harbor.fizz.buzz/kanikocache/cache - "type=registry,ref=$(params.image-name):buildcache,mode=max,compression=zstd,compression-level=22,rewrite-timestamp=true,image-manifest=true,oci-mediatypes=true"
- --use-new-run # Should result in a speed-up - --opt
- --reproducible # To remove timestamps so layer caching works. - build-arg:SOURCE_DATE_EPOCH=$(tasks.get-git-commit-time.results.unix-time)
- --snapshot-mode=redo - name: BUILDKITD_TOML
- --skip-unused-stages=true value: |
- --registry-mirror=dockerhub.dockerhub.svc.cluster.local debug = true
[registry."docker.io"]
mirrors = ["dockerhub.dockerhub.svc.cluster.local"]
[registry."dockerhub.dockerhub.svc.cluster.local"]
http = true
insecure = true
workspaces: workspaces:
- name: source - name: source
workspace: git-source workspace: git-source
- name: dockerconfig - name: dockerconfig
workspace: docker-credentials workspace: docker-credentials
runAfter:
- fetch-repository
- name: run-cargo-test - name: run-cargo-test
taskSpec: taskSpec:
metadata: {} metadata: {}
@ -143,7 +174,7 @@ spec:
- build-image - build-image
params: params:
- name: docker-image - name: docker-image
value: "$(params.image-name):$(tasks.fetch-repository.results.commit)" value: "$(tasks.build-image.results.IMAGE_URL[1])"
finally: finally:
- name: report-success - name: report-success
when: when:
@ -237,7 +268,7 @@ spec:
workspace: cargo-cache workspace: cargo-cache
params: params:
- name: docker-image - name: docker-image
value: "$(params.image-name):$(tasks.fetch-repository.results.commit)" value: "$(tasks.build-image.results.IMAGE_URL[1])"
workspaces: workspaces:
- name: git-source - name: git-source
- name: docker-credentials - name: docker-credentials
@ -267,4 +298,4 @@ spec:
- name: path-to-image-context - name: path-to-image-context
value: docker/natter_development/ value: docker/natter_development/
- name: path-to-dockerfile - name: path-to-dockerfile
value: docker/natter_development/Dockerfile value: docker/natter_development/

View File

@ -1,4 +1,6 @@
FROM rustlang/rust:nightly-alpine3.19 AS builder ARG ALPINE_VERSION="3.20"
FROM rustlang/rust:nightly-alpine$ALPINE_VERSION AS builder
RUN apk add --no-cache musl-dev RUN apk add --no-cache musl-dev
@ -6,8 +8,8 @@ RUN mkdir /root/natter
WORKDIR /root/natter WORKDIR /root/natter
COPY . . COPY . .
# TODO: Add static build, which currently errors due to proc_macro. RUSTFLAGS="-C target-feature=+crt-static" # TODO: Add static build, which currently errors due to proc_macro. RUSTFLAGS="-C target-feature=+crt-static"
RUN CARGO_TARGET_DIR=/target cargo build --profile release-lto RUN --mount=type=tmpfs,target=/tmp --mount=type=cache,target=/usr/local/cargo/registry,sharing=locked CARGO_TARGET_DIR=/target cargo build --profile release-lto
FROM alpine:3.19 AS runner FROM alpine:$ALPINE_VERSION AS runner
COPY --from=builder /target/release-lto/natter /usr/bin/ COPY --from=builder /target/release-lto/natter /usr/bin/

View File

@ -1,11 +1,13 @@
FROM rustlang/rust:nightly-alpine3.19 AS builder ARG ALPINE_VERSION="3.20"
FROM rustlang/rust:nightly-alpine$ALPINE_VERSION AS builder
RUN apk add --no-cache musl-dev RUN apk add --no-cache musl-dev
RUN cargo install --locked --no-default-features --features ci-autoclean cargo-cache RUN --mount=type=tmpfs,target=/tmp --mount=type=cache,target=/usr/local/cargo/registry,sharing=locked cargo install --locked --no-default-features --features ci-autoclean cargo-cache
RUN rustup component add rustfmt RUN rustup component add rustfmt
RUN rustup component add clippy RUN rustup component add clippy
FROM builder AS javascript FROM builder AS javascript
RUN apk add --no-cache npm RUN apk add --no-cache npm
RUN npm install --global prettier@3.1.0 RUN --mount=type=tmpfs,target=/tmp --mount=type=cache,target=/npmcache,sharing=locked npm set cache /npmcache && npm install --global prettier@3.1.0