CI: Multiarch Docker toolchain (#641)
Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
		
							parent
							
								
									dd6be78f44
								
							
						
					
					
						commit
						a548525d75
					
				
							
								
								
									
										46
									
								
								.github/workflows/build_toolchain.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								.github/workflows/build_toolchain.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -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 | ||||
| @ -1,75 +1,30 @@ | ||||
| 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 / | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Anna Prosvetova
						Anna Prosvetova