From a548525d757e1e06729ffbcb405c5e5fa0de914f Mon Sep 17 00:00:00 2001 From: Anna Prosvetova Date: Mon, 16 Aug 2021 14:55:27 +0300 Subject: [PATCH] CI: Multiarch Docker toolchain (#641) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: あく --- .github/workflows/build_toolchain.yml | 46 +++++++++++++++ docker/Dockerfile | 81 ++++++--------------------- 2 files changed, 64 insertions(+), 63 deletions(-) create mode 100644 .github/workflows/build_toolchain.yml diff --git a/.github/workflows/build_toolchain.yml b/.github/workflows/build_toolchain.yml new file mode 100644 index 00000000..2068730c --- /dev/null +++ b/.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 \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile index 406d806e..f6ab89c3 100644 --- a/docker/Dockerfile +++ b/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/* + dfu-util \ + openocd \ + srecord \ + libncurses5 \ + wget && \ + apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* -# install arm-none-eabi - -# 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"] \ No newline at end of file