Просмотр исходного кода

CI: Multiarch Docker toolchain (#641)

Co-authored-by: あく <alleteam@gmail.com>
Anna Prosvetova 4 лет назад
Родитель
Сommit
a548525d75
2 измененных файлов с 64 добавлено и 63 удалено
  1. 46 0
      .github/workflows/build_toolchain.yml
  2. 18 63
      docker/Dockerfile

+ 46 - 0
.github/workflows/build_toolchain.yml

@@ -0,0 +1,46 @@
+name: 'Build toolchain Docker image'
+
+on:
+  push:
+    branches:
+      - dev
+    tags:
+      - '*'
+
+jobs:
+  build:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout code
+        uses: actions/checkout@v2
+        with:
+          fetch-depth: 0
+      - name: Docker meta
+        id: meta
+        uses: docker/metadata-action@v3
+        with:
+          images: flipperdevices/flipperzero-toolchain
+          flavor: latest=${{ startsWith(github.ref, 'refs/tags/') && !endsWith(github.ref, 'rc')}}
+          tags: |
+            type=ref,event=branch
+            type=ref,event=tag
+      - name: Set up QEMU
+        uses: docker/setup-qemu-action@v1
+      - name: Set up Docker Buildx
+        uses: docker/setup-buildx-action@v1
+      - name: Login to DockerHub
+        uses: docker/login-action@v1
+        with:
+          username: ${{ secrets.DOCKERHUB_USERNAME }}
+          password: ${{ secrets.DOCKERHUB_TOKEN }}
+      - name: Build and push
+        id: docker_build
+        uses: docker/build-push-action@v2
+        with:
+          context: docker/
+          push: true
+          tags: ${{ steps.meta.outputs.tags }}
+          labels: ${{ steps.meta.outputs.labels }}
+          platforms: linux/amd64,linux/arm64
+          cache-from: type=registry,ref=flipperdevices/flipperzero-toolchain:buildcache
+          cache-to: type=registry,ref=flipperdevices/flipperzero-toolchain:buildcache,mode=max

+ 18 - 63
docker/Dockerfile

@@ -1,78 +1,33 @@
-FROM ubuntu:18.04
+FROM ubuntu:focal
 
-# hadolint ignore=DL3008
-RUN apt-get update && \
-    DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
-        software-properties-common \
-        gpg-agent \
-        make \
-        cmake \
-        autoconf \
-        automake \
-        libtool \
-        libusb-1.0 \
-        libusb-1.0-0-dev \
-        libgtk-3-dev pandoc \
-        curl \
-        wget \
-        g++ \
-        gcc \
-        unzip \
+RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \
+        ca-certificates \
         build-essential \
-        python \
-        python-dev \
-        python-pip \
-        python-setuptools \
         python3 \
-        imagemagick \
-        srecord \
+        python-lxml \
         git \
-        pkg-config \
-        dfu-util \
-        && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
-
-RUN pip install lxml
-
-
-SHELL ["/bin/bash", "-eo", "pipefail", "-c"]
-RUN wget --progress=dot:giga -O - "https://apt.llvm.org/llvm-snapshot.gpg.key" | apt-key add - && add-apt-repository "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-12 main"
-
-# hadolint ignore=DL3008
-RUN apt-get update && \
-    apt-get install -y --no-install-recommends \
-        libclang-12-dev \
         clang-format-12 \
-        && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
-
-# install arm-none-eabi
+        dfu-util \
+        openocd \
+        srecord \
+        libncurses5 \
+        wget && \
+    apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
 
-# hadolint ignore=DL3003
-RUN wget --progress=dot:giga "https://developer.arm.com/-/media/Files/downloads/gnu-rm/10-2020q4/gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2" && \
-    tar xjf gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2 && \
-    rm gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2 && \
+RUN wget --progress=dot:giga "https://developer.arm.com/-/media/Files/downloads/gnu-rm/10-2020q4/gcc-arm-none-eabi-10-2020-q4-major-$(uname -m)-linux.tar.bz2" && \
+    tar xjf gcc-arm-none-eabi-10-2020-q4-major-$(uname -m)-linux.tar.bz2 && \
+    rm gcc-arm-none-eabi-10-2020-q4-major-$(uname -m)-linux.tar.bz2 && \
     cd gcc-arm-none-eabi-10-2020-q4-major/bin/ && \
+    rm -rf ../share && \
     for file in * ; do ln -s "${PWD}/${file}" "/usr/bin/${file}" ; done && \
     cd / && arm-none-eabi-gcc -v && arm-none-eabi-gdb -v
 
-# install hex2dfu
-
-# hadolint ignore=DL3003
-RUN wget --progress=dot:giga "https://github.com/rusdacent/hex2dfu/archive/master.zip" --output-document=hex2dfu.zip && \
-    unzip hex2dfu.zip && \
-    rm hex2dfu.zip && \
-    cd hex2dfu-master && gcc hex2dfu.c ED25519/*.c -o hex2dfu && \
-    ln -s "${PWD}/hex2dfu" /usr/bin/hex2dfu
-
-# install openocd
-
-# hadolint ignore=DL3003
-RUN git clone --depth 1 --branch v0.11.0 https://github.com/ntfreak/openocd.git && \
-    cd openocd && ./bootstrap && ./configure && make install && \
-    cd .. && rm -rf openocd && \
-    openocd --version
+RUN git clone https://github.com/rusdacent/hex2dfu.git && \
+    cd hex2dfu && gcc hex2dfu.c ED25519/*.c -o hex2dfu && mv ./hex2dfu /usr/local/bin/hex2dfu  && \
+    hex2dfu -h
 
 COPY entrypoint.sh syntax_check.sh /
 
 RUN chmod +x /syntax_check.sh
 
-ENTRYPOINT ["/entrypoint.sh"]
+ENTRYPOINT ["/entrypoint.sh"]