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,78 +1,33 @@ | |||||||
| FROM ubuntu:18.04 | FROM ubuntu:focal | ||||||
| 
 | 
 | ||||||
| # hadolint ignore=DL3008 | RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \ | ||||||
| RUN apt-get update && \ |         ca-certificates \ | ||||||
|     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 \ |  | ||||||
|         build-essential \ |         build-essential \ | ||||||
|         python \ |  | ||||||
|         python-dev \ |  | ||||||
|         python-pip \ |  | ||||||
|         python-setuptools \ |  | ||||||
|         python3 \ |         python3 \ | ||||||
|         imagemagick \ |         python-lxml \ | ||||||
|         srecord \ |  | ||||||
|         git \ |         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 \ |         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 | 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 && \ | ||||||
| # hadolint ignore=DL3003 |     rm gcc-arm-none-eabi-10-2020-q4-major-$(uname -m)-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-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 && \ |  | ||||||
|     cd gcc-arm-none-eabi-10-2020-q4-major/bin/ && \ |     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 && \ |     for file in * ; do ln -s "${PWD}/${file}" "/usr/bin/${file}" ; done && \ | ||||||
|     cd / && arm-none-eabi-gcc -v && arm-none-eabi-gdb -v |     cd / && arm-none-eabi-gcc -v && arm-none-eabi-gdb -v | ||||||
| 
 | 
 | ||||||
| # install hex2dfu | RUN git clone https://github.com/rusdacent/hex2dfu.git && \ | ||||||
| 
 |     cd hex2dfu && gcc hex2dfu.c ED25519/*.c -o hex2dfu && mv ./hex2dfu /usr/local/bin/hex2dfu  && \ | ||||||
| # hadolint ignore=DL3003 |     hex2dfu -h | ||||||
| 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 |  | ||||||
| 
 | 
 | ||||||
| COPY entrypoint.sh syntax_check.sh / | COPY entrypoint.sh syntax_check.sh / | ||||||
| 
 | 
 | ||||||
| RUN chmod +x /syntax_check.sh | RUN chmod +x /syntax_check.sh | ||||||
| 
 | 
 | ||||||
| ENTRYPOINT ["/entrypoint.sh"] | ENTRYPOINT ["/entrypoint.sh"] | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Anna Prosvetova
						Anna Prosvetova