Skip to content

Commit ef93bcf

Browse files
committed
Adding v0.15.0 firecracker docker image
1 parent 9edbabe commit ef93bcf

File tree

3 files changed

+78
-2
lines changed

3 files changed

+78
-2
lines changed

Makefile

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,19 @@ all-tests:
2727
generate build clean:
2828
go $@ $(EXTRAGOARGS)
2929

30+
sandbox-test-fc-build:
31+
docker build -f fctesting/sandbox/Dockerfile -t "firecracker" .
32+
33+
sandbox-test-fc-run:
34+
docker run \
35+
--init \
36+
--rm \
37+
--privileged \
38+
--security-opt seccomp=unconfined \
39+
--ulimit core=0 \
40+
--device=/dev/kvm:/dev/kvm \
41+
-t firecracker
42+
43+
sandbox-test-fc: sandbox-test-fc-build sandbox-test-fc-run
44+
3045
.PHONY: all generate clean build test unit-tests all-tests

fctesting/sandbox/Dockerfile

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
ARG TMP_BUILD_DIR=/tmp/build
2+
3+
FROM rust:1.32 as build
4+
5+
ARG TMP_BUILD_DIR
6+
ARG FIRECRACKER_SRC_DIR="/firecracker"
7+
ARG FIRECRACKER_BUILD_DIR="$FIRECRACKER_SRC_DIR/build"
8+
ARG CARGO_REGISTRY_DIR="$FIRECRACKER_BUILD_DIR/cargo_registry"
9+
ARG FIRECRACKER_VERSION="0.15.0"
10+
11+
ENV CARGO_HOME=/usr/local/rust
12+
ENV RUSTUP_HOME=/usr/local/rust
13+
ENV PATH="$CARGO_HOME/bin:$PATH"
14+
ENV CARGO_TARGET_DIR="$FIRECRACKER_BUILD_DIR/cargo_target"
15+
ENV FC_TEST_DATA_PATH="$TMP_BUILD_DIR"
16+
17+
# Install system dependecies
18+
#
19+
RUN apt-get update \
20+
&& apt-get -y install --no-install-recommends \
21+
musl-tools
22+
23+
# Install the Rust toolchain
24+
#
25+
# Install 1.32.0 due to Firecracker crashing with 148 code
26+
RUN mkdir "$TMP_BUILD_DIR" \
27+
&& rustup install 1.32.0 \
28+
&& rustup override set 1.32.0 \
29+
&& rustup target add x86_64-unknown-linux-musl \
30+
&& cd /
31+
32+
# Install Firecracker and set binaries to TMP_BUILD_DIR
33+
RUN git clone https://github.com/firecracker-microvm/firecracker.git
34+
WORKDIR firecracker
35+
RUN git checkout tags/v"$FIRECRACKER_VERSION"
36+
RUN cargo build --release --features vsock --target-dir "$TMP_BUILD_DIR"
37+
RUN cp "$TMP_BUILD_DIR"/x86_64-unknown-linux-musl/release/firecracker "$TMP_BUILD_DIR"
38+
RUN cp "$TMP_BUILD_DIR"/x86_64-unknown-linux-musl/release/jailer "$TMP_BUILD_DIR"
39+
40+
FROM golang:1.12
41+
42+
ARG TMP_BUILD_DIR
43+
ENV FC_TEST_DATA_PATH="$TMP_BUILD_DIR"
44+
ARG FIRECRACKER_GO_SDK_SRC_DIR="/firecracker-go-sdk"
45+
ADD . /firecracker-go-sdk/
46+
COPY --from=build "$TMP_BUILD_DIR" "$TMP_BUILD_DIR"
47+
48+
RUN apt-get update \
49+
&& apt-get -y install --no-install-recommends \
50+
binutils-dev \
51+
git \
52+
make
53+
54+
WORKDIR "$FIRECRACKER_GO_SDK_SRC_DIR"
55+
RUN cp -rf testdata/* "$TMP_BUILD_DIR"
56+
RUN curl -fsSL -o "$TMP_BUILD_DIR"/vmlinux https://s3.amazonaws.com/spec.ccfc.min/img/hello/kernel/hello-vmlinux.bin
57+
RUN go mod download
58+
CMD ["make", "test"]

machine_test.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,7 @@ func TestMicroVMExecution(t *testing.T) {
341341
}
342342

343343
func TestStartVMM(t *testing.T) {
344-
socketPath := filepath.Join("testdata", "TestStartVMM.sock")
344+
socketPath := filepath.Join(testDataPath, "TestStartVMM.sock")
345345
defer os.Remove(socketPath)
346346
cfg := Config{
347347
SocketPath: socketPath,
@@ -376,12 +376,13 @@ func TestStartVMM(t *testing.T) {
376376
}
377377

378378
func TestStartVMMOnce(t *testing.T) {
379-
socketPath := filepath.Join("testdata", "TestStartVMMOnce.sock")
379+
socketPath := filepath.Join(testDataPath, "TestStartVMMOnce.sock")
380380
defer os.Remove(socketPath)
381381

382382
cfg := Config{
383383
SocketPath: socketPath,
384384
DisableValidation: true,
385+
LogLevel: "Debug",
385386
KernelImagePath: getVmlinuxPath(t),
386387
MachineCfg: models.MachineConfiguration{
387388
VcpuCount: 1,
@@ -391,6 +392,8 @@ func TestStartVMMOnce(t *testing.T) {
391392
cmd := VMCommandBuilder{}.
392393
WithSocketPath(cfg.SocketPath).
393394
WithBin(getFirecrackerBinaryPath()).
395+
WithStdout(os.Stdout).
396+
WithStderr(os.Stderr).
394397
Build(ctx)
395398
m, err := NewMachine(ctx, cfg, WithProcessRunner(cmd))
396399
if err != nil {

0 commit comments

Comments
 (0)