Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
86337fa
Initial LLB builder implementation
denzp Jun 2, 2019
d58bff1
Reorganise files structure
denzp Jun 3, 2019
a8054e1
Type-safe `FileSystem::copy()` implementation
denzp Jun 3, 2019
43648c0
Basic documentation and minor API changes
denzp Jun 3, 2019
c08c300
Protobuf defs update script
denzp Jun 11, 2019
ed60edb
Frontend: initial experiments
denzp Jun 19, 2019
1304c48
Working solve
denzp Jun 21, 2019
4d2c98f
Build plan evaluation in a frontend
denzp Jun 23, 2019
b03b3ef
Parse Build Plan and construct Build Graph
denzp Jun 24, 2019
d681c30
Extract `buildkit-frontend` into a separate crate
denzp Jun 26, 2019
77eacc1
LLB: flexible ownership and borrowing
denzp Jul 1, 2019
c5fb70a
LLB: serialization refactoring preparation
denzp Jul 4, 2019
031d208
Basic LLB tests
denzp Jul 14, 2019
e14cbb2
Simplify serialization
denzp Jul 17, 2019
4dc17c6
Initial progress with the frontend
denzp Jul 30, 2019
9c4d557
Allow to have only single root mount and it has always be at first po…
denzp Jul 31, 2019
b0d1671
Produce alpine images
denzp Aug 1, 2019
48772c7
Better debugging experience
denzp Aug 2, 2019
493edfb
Build scripts support progress
denzp Aug 7, 2019
0defbec
Mount deps on both buildscript compile and run nodes
denzp Aug 11, 2019
14b0c9a
Parse grontend options
denzp Aug 15, 2019
721e764
Basic implementation of OCI image specification generation
denzp Aug 18, 2019
a7fb29e
Try to reuse existing images
denzp Aug 21, 2019
ccb65ed
Request builder image config
denzp Aug 25, 2019
68e0387
More `cargo-container-tools` helpers: build plan and metadata collectors
denzp Aug 29, 2019
7145e96
Parse config from metadata
denzp Sep 1, 2019
64eb699
Use specified builder image
denzp Sep 1, 2019
457df25
Rework configuration schema
denzp Sep 2, 2019
3311675
More deterministic builds
denzp Sep 2, 2019
b4a4f9e
Refactor config
denzp Sep 3, 2019
52c3a7a
Refactor debugging
denzp Sep 3, 2019
6644afb
Use specified output image
denzp Sep 3, 2019
3d615aa
Export usable images
denzp Sep 4, 2019
da9e73a
Reorganise examples
denzp Sep 9, 2019
2566612
Better configurability of the output images
denzp Sep 10, 2019
0ba7d06
Cleanup the host binary
denzp Sep 10, 2019
d4a486b
Focus on `docker build -f ...` approach
denzp Sep 13, 2019
fe6827d
Update outdated deps
denzp Sep 13, 2019
27541e9
Scratch output image
denzp Sep 13, 2019
8e029f0
Shorter debug option
denzp Sep 15, 2019
d28b090
Tests image creation
denzp Sep 17, 2019
794a5a2
Update deps
denzp Sep 23, 2019
1120124
Extract buildkit-* crates into own repo and use them from Crates.io
denzp Sep 30, 2019
90db987
Rename "cargo-buildkit-frontend" into "cargo-wharf-frontend"
denzp Sep 30, 2019
b65b376
Allow to specify a build target
denzp Oct 6, 2019
3925c45
Adjust for `buildkit-llb`:`0.2`
denzp Oct 6, 2019
06a35ce
Integration tests
denzp Oct 6, 2019
0331f45
Use more correct Source when evaluating config
denzp Oct 6, 2019
a954953
Support single crates with multiple binaries
denzp Oct 6, 2019
aff2c21
Getting closer to be able to bootstrap images without Dockerfiles
denzp Oct 9, 2019
275a10b
Use correct docker tags
denzp Oct 9, 2019
2fb18e1
Use buildscript metadata
denzp Oct 13, 2019
7f5832c
Build in Release by default and adjust build-args
denzp Oct 13, 2019
0443ac7
Fix tests
denzp Oct 13, 2019
6bbd1f5
Pretty output
denzp Oct 13, 2019
716315f
Top level README
denzp Oct 13, 2019
e0ceaa1
Add licenses
denzp Oct 13, 2019
5942333
Adjust README
denzp Oct 13, 2019
d469568
Frontend README
denzp Oct 17, 2019
be23fc9
Container tools README
denzp Oct 17, 2019
0765f4a
CI setup
denzp Oct 17, 2019
4753268
Adjust CI
denzp Oct 17, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Produce alpine images
  • Loading branch information
denzp committed Aug 1, 2019
commit b0d1671f5239d3bd0d8a094469a5f5dfedda981a
799 changes: 780 additions & 19 deletions Cargo.lock

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[workspace]
members = [
#"cargo-wharf",
#"cargo-container-tools",
"cargo-container-tools",
"cargo-buildkit-frontend",
"buildkit-proto",
"buildkit-llb",
Expand Down
29 changes: 10 additions & 19 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,26 +1,17 @@
TOOLS_VERSION = $(shell cargo pkgid --manifest-path=cargo-container-tools/Cargo.toml | cut -d\# -f2 | cut -d: -f2)
FRONTEND_VERSION = $(shell cargo pkgid --manifest-path=cargo-buildkit-frontend/Cargo.toml | cut -d\# -f2 | cut -d: -f2)

with-docker: docker-container-tools docker-cargo-frontend
with-buildctl: buildctl-container-tools buildctl-cargo-frontend

docker-container-tools:
docker build -t denzp/cargo-container-tools:$(TOOLS_VERSION) -f cargo-container-tools/Dockerfile .

docker-cargo-frontend:
docker build -t denzp/buildkit-cargo-frontend:$(FRONTEND_VERSION) -f buildkit-cargo-frontend/Dockerfile .
# TOOLS_VERSION = v$(shell cargo pkgid --manifest-path=cargo-container-tools/Cargo.toml | cut -d\# -f2 | cut -d: -f2)
# FRONTEND_VERSION = v$(shell cargo pkgid --manifest-path=cargo-buildkit-frontend/Cargo.toml | cut -d\# -f2 | cut -d: -f2)

buildctl-container-tools:
buildctl build --frontend=dockerfile.v0 --local context=. --local dockerfile=cargo-container-tools --output type=image,push=false,docker.io/denzp/cargo-container-tools:$(TOOLS_VERSION)
buildctl build --frontend gateway.v0 --opt source=docker/dockerfile:1.1-experimental --local context=. --local dockerfile=cargo-container-tools --output type=image,name=docker.io/denzp/cargo-container-tools:local

buildctl-cargo-frontend:
buildctl build --frontend=dockerfile.v0 --local context=. --local dockerfile=cargo-buildkit-frontend --output type=image,push=false,name=denzp/cargo-buildkit-frontend:$(FRONTEND_VERSION)
buildctl build --frontend gateway.v0 --opt source=docker/dockerfile:1.1-experimental --local context=. --local dockerfile=cargo-buildkit-frontend --output type=image,name=docker.io/denzp/cargo-buildkit-frontend:local

buildctl-cargo-frontend-devel-build-plan:
buildctl build --opt debug=build-plan --frontend gateway.v0 --opt gateway-devel=true --opt source=dockerfile.v0 --local gateway-context=. --local gateway-dockerfile=cargo-buildkit-frontend --local context=. --output type=local,dest=.debug-output
buildctl-cargo-frontend-example: buildctl-container-tools buildctl-cargo-frontend
buildctl build --frontend gateway.v0 --opt source=denzp/cargo-buildkit-frontend:local --local context=examples/workspace --output type=local,dest=.debug-output

buildctl-cargo-frontend-devel-llb:
buildctl build --opt debug=llb --frontend gateway.v0 --opt gateway-devel=true --opt source=dockerfile.v0 --local gateway-context=. --local gateway-dockerfile=cargo-buildkit-frontend --local context=. --output type=local,dest=.debug-output
buildctl-cargo-frontend-example-build-plan: buildctl-container-tools buildctl-cargo-frontend
buildctl build --frontend gateway.v0 --opt source=denzp/cargo-buildkit-frontend:local --local context=examples/workspace --opt debug=build-plan --output type=local,dest=.debug-output

buildctl-cargo-frontend-devel:
buildctl build --frontend gateway.v0 --opt gateway-devel=true --opt source=dockerfile.v0 --local gateway-context=. --local gateway-dockerfile=cargo-buildkit-frontend --local context=. --output type=local,dest=.debug-output
buildctl-cargo-frontend-example-llb: buildctl-container-tools buildctl-cargo-frontend
buildctl build --frontend gateway.v0 --opt source=denzp/cargo-buildkit-frontend:local --local context=examples/workspace --opt debug=llb --output type=local,dest=.debug-output
2 changes: 1 addition & 1 deletion buildkit-llb/src/ops/exec/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,7 @@ fn serialization_with_several_root_mounts() {

crate::check_op!(
command,
// |digest| { "sha256:54a66b514361b13b17f8b5aaaa2392a4c07b55ac53303e4f50584f3dfef6add0" },
|digest| { "sha256:baa1bf591d2c47058b7361a0284fa8a3f1bd0fac8a93c87affa77ddc0a5026fd" },
|description| { vec![] },
|caps| { vec!["exec.mount.bind"] },
|cached_tail| {
Expand Down
18 changes: 7 additions & 11 deletions cargo-buildkit-frontend/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,22 +1,18 @@
# syntax=docker/dockerfile-upstream:experimental
FROM clux/muslrust:nightly as builder

FROM rustlang/rust:nightly as builder
USER root

# Crate whole workspace
WORKDIR /rust-src
COPY . /rust-src

# Build the binary with a cache mount
RUN --mount=type=cache,target=/rust-src/target \
--mount=type=cache,target=/usr/local/cargo/git \
--mount=type=cache,target=/usr/local/cargo/registry \
["cargo", "build", "--bin", "cargo-buildkit-frontend"]
--mount=type=cache,target=/root/.cargo/git \
--mount=type=cache,target=/root/.cargo/registry \
["cargo", "build", "--release", "--target", "x86_64-unknown-linux-musl", "--bin", "cargo-buildkit-frontend"]

# Copy the resulting binary into a normal layer
RUN --mount=type=cache,target=/rust-src/target \
["cp", "/rust-src/target/debug/cargo-buildkit-frontend", "/usr/local/bin/cargo-buildkit-frontend"]
["cp", "/rust-src/target/x86_64-unknown-linux-musl/release/cargo-buildkit-frontend", "/usr/local/bin/cargo-buildkit-frontend"]

# Copy the binaries into the final stage
FROM debian:stable-slim
FROM alpine
COPY --from=builder /usr/local/bin/cargo-buildkit-frontend /usr/local/bin/cargo-buildkit-frontend
ENTRYPOINT ["/usr/local/bin/cargo-buildkit-frontend"]
2 changes: 1 addition & 1 deletion cargo-container-tools/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "cargo-container-tools"
version = "0.1.0"
version = "0.2.0"
authors = ["Denys Zariaiev <denys.zariaiev@gmail.com>"]
edition = "2018"
publish = false
Expand Down
25 changes: 6 additions & 19 deletions cargo-container-tools/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,30 +1,17 @@
# syntax=docker/dockerfile-upstream:experimental

FROM ekidd/rust-musl-builder:nightly as builder
FROM clux/muslrust:nightly as builder

USER root
ENV RUSTUP_HOME "/home/rust/.rustup"

# Crate sources and workspace lockfile
WORKDIR /rust-src
COPY Cargo.lock /rust-src/Cargo.lock
COPY cargo-container-tools /rust-src

# Alternative caching approach
RUN --mount=type=cache,target=/rust-src/target --mount=type=cache,target=/root/.cargo \
["cargo", "build", "--release", "--target", "x86_64-unknown-linux-musl"]

RUN --mount=type=cache,target=/rust-src/target \
["cp", "/rust-src/target/x86_64-unknown-linux-musl/release/cargo-buildscript", "/usr/local/bin/cargo-buildscript"]
COPY . /rust-src

RUN --mount=type=cache,target=/rust-src/target \
["cp", "/rust-src/target/x86_64-unknown-linux-musl/release/cargo-test-runner", "/usr/local/bin/cargo-test-runner"]
--mount=type=cache,target=/root/.cargo/git \
--mount=type=cache,target=/root/.cargo/registry \
["cargo", "build", "--release", "--target", "x86_64-unknown-linux-musl", "--bin", "cargo-buildscript"]

RUN --mount=type=cache,target=/rust-src/target \
["cp", "/rust-src/target/x86_64-unknown-linux-musl/release/cargo-ldd", "/usr/local/bin/cargo-ldd"]
["cp", "/rust-src/target/x86_64-unknown-linux-musl/release/cargo-buildscript", "/usr/local/bin/cargo-buildscript"]

# Copy the binaries from build stage
FROM alpine
COPY --from=builder /usr/local/bin/cargo-buildscript /usr/local/bin/cargo-buildscript
COPY --from=builder /usr/local/bin/cargo-test-runner /usr/local/bin/cargo-test-runner
COPY --from=builder /usr/local/bin/cargo-ldd /usr/local/bin/cargo-ldd
4 changes: 0 additions & 4 deletions cargo-container-tools/src/bin/cargo-ldd/main.rs

This file was deleted.

4 changes: 0 additions & 4 deletions cargo-container-tools/src/bin/cargo-test-runner/main.rs

This file was deleted.