From dc09dea579a7e958ea05e044dfe46bec07088815 Mon Sep 17 00:00:00 2001 From: "Benjamin Henrion (zoobab)" Date: Sun, 27 Jan 2019 19:58:28 +0100 Subject: [PATCH 1/7] add Dockerfile to build the static binary --- .gitignore | 1 + Dockerfile | 6 ++++++ bin/.gitkeepme | 0 build.sh | 15 +++++++++++++++ 4 files changed, 22 insertions(+) create mode 100644 Dockerfile create mode 100644 bin/.gitkeepme create mode 100755 build.sh diff --git a/.gitignore b/.gitignore index f73247cad87..0d2ecca610d 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ /cmd/formatter/debug.test /.cli-config.yml /wiki +/bin/arduino-cli diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000000..e8d372e6778 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,6 @@ +FROM golang:1.11.3-stretch +COPY . /go/src/arduino-cli +WORKDIR /go/src/arduino-cli +RUN go get . +RUN CGO_ENABLED=0 GOOS=linux go install -a -ldflags '-s -w -extldflags "-static"' . +ENTRYPOINT ["/bin/cp", "-v", "/go/bin/arduino-cli", "/out"] diff --git a/bin/.gitkeepme b/bin/.gitkeepme new file mode 100644 index 00000000000..e69de29bb2d diff --git a/build.sh b/build.sh new file mode 100755 index 00000000000..71b8cb7f308 --- /dev/null +++ b/build.sh @@ -0,0 +1,15 @@ +#!/bin/bash +set -e + +banner() { +echo "================================================================" +echo "$1" +echo "================================================================" +} + +PROJECT="arduino-cli" + +banner "Building docker image..." +docker build -t $PROJECT . +banner "Copying the binary..." +docker run -v ${PWD}/bin:/out:rw $PROJECT From 9661ea85e6947c46025d1001fbd273ee1761f68d Mon Sep 17 00:00:00 2001 From: "Benjamin Henrion (zoobab)" Date: Sun, 27 Jan 2019 20:12:33 +0100 Subject: [PATCH 2/7] copy to /bin --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index e8d372e6778..a0ec5d8d18a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,4 +3,5 @@ COPY . /go/src/arduino-cli WORKDIR /go/src/arduino-cli RUN go get . RUN CGO_ENABLED=0 GOOS=linux go install -a -ldflags '-s -w -extldflags "-static"' . +RUN cp -v /go/bin/arduino-cli /bin/arduino-cli ENTRYPOINT ["/bin/cp", "-v", "/go/bin/arduino-cli", "/out"] From 22f86598a38bf3b4da4600bdc202ba23093341a8 Mon Sep 17 00:00:00 2001 From: "Benjamin Henrion (zoobab)" Date: Wed, 30 Jan 2019 20:44:42 +0100 Subject: [PATCH 3/7] put the esp8266 sdk in there --- Dockerfile | 8 ++++++-- dot-cli-config.yml | 3 +++ 2 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 dot-cli-config.yml diff --git a/Dockerfile b/Dockerfile index a0ec5d8d18a..73d2c833515 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,5 +3,9 @@ COPY . /go/src/arduino-cli WORKDIR /go/src/arduino-cli RUN go get . RUN CGO_ENABLED=0 GOOS=linux go install -a -ldflags '-s -w -extldflags "-static"' . -RUN cp -v /go/bin/arduino-cli /bin/arduino-cli -ENTRYPOINT ["/bin/cp", "-v", "/go/bin/arduino-cli", "/out"] +WORKDIR /root +ENV USER root +COPY dot-cli-config.yml /go/bin/.cli-config.yml +RUN arduino-cli core update-index --debug +RUN arduino-cli core install esp8266:esp8266 +RUN arduino-cli board listall diff --git a/dot-cli-config.yml b/dot-cli-config.yml new file mode 100644 index 00000000000..0cdb19010dd --- /dev/null +++ b/dot-cli-config.yml @@ -0,0 +1,3 @@ +board_manager: + additional_urls: + - http://arduino.esp8266.com/stable/package_esp8266com_index.json From 57ff708f078540131dc4c939c8286f44f656402b Mon Sep 17 00:00:00 2001 From: "Benjamin Henrion (zoobab)" Date: Wed, 30 Jan 2019 21:11:00 +0100 Subject: [PATCH 4/7] add blink --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index 73d2c833515..14365801eb8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,3 +9,4 @@ COPY dot-cli-config.yml /go/bin/.cli-config.yml RUN arduino-cli core update-index --debug RUN arduino-cli core install esp8266:esp8266 RUN arduino-cli board listall +RUN arduino-cli sketch new blink --debug From 2cd4595a545977e9739e024890ba731ff6a11105 Mon Sep 17 00:00:00 2001 From: "Benjamin Henrion (zoobab)" Date: Thu, 31 Jan 2019 14:45:47 +0100 Subject: [PATCH 5/7] compile a blink to cache all the toolchain --- Dockerfile | 2 ++ blink.ino | 10 ++++++++++ 2 files changed, 12 insertions(+) create mode 100644 blink.ino diff --git a/Dockerfile b/Dockerfile index 14365801eb8..85e04dc2e7a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,3 +10,5 @@ RUN arduino-cli core update-index --debug RUN arduino-cli core install esp8266:esp8266 RUN arduino-cli board listall RUN arduino-cli sketch new blink --debug +COPY blink.ino /root/Arduino/blink/blink.ino +RUN arduino-cli compile --fqbn esp8266:esp8266:nodemcuv2 Arduino/blink diff --git a/blink.ino b/blink.ino new file mode 100644 index 00000000000..fab5a8d45c9 --- /dev/null +++ b/blink.ino @@ -0,0 +1,10 @@ +void setup() { + pinMode(LED_BUILTIN, OUTPUT); +} + +void loop() { + digitalWrite(LED_BUILTIN, HIGH); + delay(1000); + digitalWrite(LED_BUILTIN, LOW); + delay(1000); +} From e837bf7199f72c940b6b403cc62774caf874dd15 Mon Sep 17 00:00:00 2001 From: "Benjamin Henrion (zoobab)" Date: Thu, 31 Jan 2019 18:07:18 +0100 Subject: [PATCH 6/7] try /usr/bin --- Dockerfile | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 85e04dc2e7a..f4ca6faf803 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,9 +3,13 @@ COPY . /go/src/arduino-cli WORKDIR /go/src/arduino-cli RUN go get . RUN CGO_ENABLED=0 GOOS=linux go install -a -ldflags '-s -w -extldflags "-static"' . + +FROM alpine:3.8 +RUN apk add ca-certificates WORKDIR /root +COPY --from=0 /go/bin/arduino-cli /usr/bin/arduino-cli ENV USER root -COPY dot-cli-config.yml /go/bin/.cli-config.yml +COPY dot-cli-config.yml /usr/bin/.cli-config.yml RUN arduino-cli core update-index --debug RUN arduino-cli core install esp8266:esp8266 RUN arduino-cli board listall From 1b95e8613df9c584cbd363ac770dc6d9f9c71954 Mon Sep 17 00:00:00 2001 From: "Benjamin Henrion (zoobab)" Date: Sun, 10 Feb 2019 19:22:23 +0100 Subject: [PATCH 7/7] arduino-cli tools needs glibc :-( --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index f4ca6faf803..c75610affaf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,8 +4,8 @@ WORKDIR /go/src/arduino-cli RUN go get . RUN CGO_ENABLED=0 GOOS=linux go install -a -ldflags '-s -w -extldflags "-static"' . -FROM alpine:3.8 -RUN apk add ca-certificates +FROM frolvlad/alpine-glibc +RUN apk add ca-certificates python WORKDIR /root COPY --from=0 /go/bin/arduino-cli /usr/bin/arduino-cli ENV USER root