Skip to content

Build all and make release on tag #45

Build all and make release on tag

Build all and make release on tag #45

Workflow file for this run

name: Build all and make release on tag
on:
workflow_dispatch:
push:
tags:
- '*'
jobs:
build-linux:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Install cross compilation tools
run: |
sudo apt-get install -y gcc g++ make git gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf gcc-aarch64-linux-gnu g++-aarch64-linux-gnu zip gcc-i686-linux-gnu g++-i686-linux-gnu
- name: Build mklittlefs x86-64
run: |
tgt=linux pfx=x86_64-linux-gnu exe="" AHOST="x86_64-pc-linux-gnu" TARGET_OS=${tgt} CC=${pfx}-gcc CXX=${pfx}-g++ STRIP=${pfx}-strip make clean mklittlefs${exe} BUILD_CONFIG_NAME="-arduino" CPPFLAGS=""
name=mklittlefs-$(git rev-parse --short HEAD)
mkdir -p tmp/mklittlefs
mv mklittlefs tmp/mklittlefs/.
cd tmp
zip -rq ../x86_64-linux-gnu-${name}.zip mklittlefs
cd ..
rm -rf tmp
make clean
- name: Build mklittlefs aarch64
run: |
tgt=linux pfx=aarch64-linux-gnu exe="" AHOST="aarch64-linux-gnu" TARGET_OS=${tgt} CC=${pfx}-gcc CXX=${pfx}-g++ STRIP=${pfx}-strip make clean mklittlefs${exe} BUILD_CONFIG_NAME="-arduino" CPPFLAGS=""
name=mklittlefs-$(git rev-parse --short HEAD)
mkdir -p tmp/mklittlefs
mv mklittlefs tmp/mklittlefs/.
cd tmp
zip -rq ../aarch64-linux-gnu-${name}.zip mklittlefs
cd ..
rm -rf tmp
make clean
- name: Build mklittlefs arm
run: |
tgt=linux pfx=arm-linux-gnueabihf exe="" AHOST="arm-linux-gnueabihf" TARGET_OS=${tgt} CC=${pfx}-gcc CXX=${pfx}-g++ STRIP=${pfx}-strip make clean mklittlefs${exe} BUILD_CONFIG_NAME="-arduino" CPPFLAGS=""
name=mklittlefs-$(git rev-parse --short HEAD)
mkdir -p tmp/mklittlefs
mv mklittlefs tmp/mklittlefs/.
cd tmp
zip -rq ../arm-linux-gnueabihf-${name}.zip mklittlefs
cd ..
rm -rf tmp
make clean
- name: Upload mklittlefs x86-64
uses: actions/upload-artifact@v4
with:
name: x86_64-linux-gnu-mklittlefs.zip
path: x86_64-linux-gnu-mklittlefs-*.zip
- name: Upload mklittlefs aarch64
uses: actions/upload-artifact@v4
with:
name: aarch64-linux-gnu-mklittlefs.zip
path: aarch64-linux-gnu-mklittlefs-*.zip
- name: Upload mklittlefs arm-linux-gnueabihf
uses: actions/upload-artifact@v4
with:
name: arm-linux-gnueabihf-mklittlefs.zip
path: arm-linux-gnueabihf-mklittlefs-*.zip
build-mac-arm:
runs-on: macos-14
steps:
- uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '15.0.1'
- uses: actions/checkout@v4
with:
submodules: true
- name: Build mklittlefs MacARM
run: |
rm -f *.json *.gz *.zip
pfx=aarch64-apple-darwin20
AHOST=aarch64-apple-darwin TARGET_OS=osx CC=gcc CXX=g++ STRIP=strip make clean mklittlefs BUILD_CONFIG_NAME="-arduino" CPPFLAGS=""
- name: Package mklittlefs MacARM
run: |
name=mklittlefs-$(git rev-parse --short HEAD)
mkdir -p tmp/mklittlefs
mv mklittlefs tmp/mklittlefs/.
cd tmp
tar zcvf ../aarch64-apple-darwin-${name}.tar.gz mklittlefs
cd ..
rm -rf tmp
- name: Upload mklittlefs MacARM
uses: actions/upload-artifact@v4
with:
name: aarch64-apple-darwin-mklittlefs.tar.gz
path: aarch64-apple-darwin-mklittlefs-*.tar.gz
build-mac:
runs-on: macos-13
steps:
- uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '14.1.0'
- uses: actions/checkout@v4
with:
submodules: true
- name: Build mklittlefs Mac86
run: |
rm -f *.json *.gz *.zip
pfx=x86_64-apple-darwin20
AHOST=x86_64-apple-darwin TARGET_OS=osx CC=gcc CXX=g++ STRIP=strip make clean mklittlefs BUILD_CONFIG_NAME="-arduino" CPPFLAGS=""
- name: Package mklittlefs Mac86
run: |
name=mklittlefs-$(git rev-parse --short HEAD)
mkdir -p tmp/mklittlefs
mv mklittlefs tmp/mklittlefs/.
cd tmp
tar zcvf ../x86_64-apple-darwin-${name}.tar.gz mklittlefs
cd ..
rm -rf tmp
- name: Upload mklittlefs Mac86
uses: actions/upload-artifact@v4
with:
name: x86_64-apple-darwin-mklittlefs.tar.gz
path: x86_64-apple-darwin-mklittlefs-*.tar.gz
build-windows:
runs-on: windows-latest
defaults:
run:
shell: msys2 {0}
strategy:
matrix:
include:
- { sys: mingw64, env: x86_64 }
- { sys: mingw32, env: i686 }
steps:
- uses: msys2/setup-msys2@v2
with:
msystem: ${{matrix.sys}}
install: development mingw-w64-${{matrix.env}}-make git mingw-w64-${{matrix.env}}-toolchain zip
- uses: actions/checkout@v4
with:
submodules: true
- name: Build mklittlefs ${{matrix.env}}
run: |
rm -f *.json *.gz *.zip
pfx=${{matrix.env}}-w64-mingw32
AHOST=${{matrix.env}}-mingw32 TARGET_OS=windows CC=${pfx}-gcc CXX=${pfx}-g++ STRIP=strip mingw32-make clean mklittlefs.exe BUILD_CONFIG_NAME="-arduino" CPPFLAGS=""
- name: Package mklittlefs ${{matrix.env}}
run: |
name=mklittlefs-$(git rev-parse --short HEAD)
mkdir -p tmp/mklittlefs
mv mklittlefs.exe tmp/mklittlefs/.
cp /mingw*/bin/libwinpthread*.dll tmp/mklittlefs/.
cd tmp
zip -rq ../${{matrix.env}}-w64-mingw32-${name}.zip mklittlefs
cd ..
rm -rf tmp
- name: Upload mklittlefs ${{matrix.env}}
uses: actions/upload-artifact@v4
with:
name: ${{matrix.env}}-w64-mingw32-mklittlefs.zip
path: ${{matrix.env}}-w64-mingw32-mklittlefs-*.zip
make-release:
needs: [build-linux, build-mac-arm, build-mac, build-windows, build-brewfile]
runs-on: ubuntu-latest
permissions:
contents: write
outputs:
tag: ${{ steps.get_tag.outputs.tag }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Get tag
id: get_tag
run: echo "tag=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: .
- name: Renaming artifacts
run: |
rev=$(git rev-parse --short HEAD)
mkdir release
# Use pre-built tar.gz files for Mac
mv x86_64-apple-darwin-mklittlefs.tar.gz/*tar.gz ./release/x86_64-apple-darwin-mklittlefs-${rev}.tar.gz
mv aarch64-apple-darwin-mklittlefs.tar.gz/*tar.gz ./release/aarch64-apple-darwin-mklittlefs-${rev}.tar.gz
mv i686-w64-mingw32-mklittlefs.zip/*zip ./release/i686-w64-mingw32-mklittlefs-${rev}.zip
mv x86_64-w64-mingw32-mklittlefs.zip/*zip ./release/x86_64-w64-mingw32-mklittlefs-${rev}.zip
mkdir tmp && cd tmp && unzip ../x86_64-linux-gnu-mklittlefs.zip/*zip && tar zcvf ../release/x86_64-linux-gnu-mklittlefs-${rev}.tar.gz mklittlefs && cd .. && rm -rf tmp
mkdir tmp && cd tmp && unzip ../aarch64-linux-gnu-mklittlefs.zip/*zip && tar zcvf ../release/aarch64-linux-gnu-mklittlefs-${rev}.tar.gz mklittlefs && cd .. && rm -rf tmp
mkdir tmp && cd tmp && unzip ../arm-linux-gnueabihf-mklittlefs.zip/*zip && tar zcvf ../release/arm-linux-gnueabihf-mklittlefs-${rev}.tar.gz mklittlefs && cd .. && rm -rf tmp
(cd release; unzip ../mklittlefs-source*.zip)
ls -l release
- name: Drafting release
uses: ncipollo/release-action@v1
with:
artifacts: "release/*"
draft: true
generateReleaseNotes: true
- name: Add formula to release
uses: ncipollo/release-action@v1
with:
artifacts: "homebrew-formula/mklittlefs.rb"
allowUpdates: true
build-brewfile:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
path: mklittlefs
- name: Create mklittlefs-source ZIP file
run: |
(cd mklittlefs; zip -9r ../mklittlefs-source.zip .)
- name: Upload mklittlefs complete source zipfile (which will then be RE-ZIPPED by GH)
id: upload-src-step
uses: actions/upload-artifact@v4
with:
name: mklittlefs-source.zip
include-hidden-files: true
path: mklittlefs
- name: Make Brewfile update
run: |
sha=$(shasum -a 256 mklittlefs-source.zip | cut -f1 -d' ')
tag=${GITHUB_REF#refs/tags/}
tag=$(echo $tag | sed 's/refs.*/0.0.0/')
echo Making a new file with $sha and version $tag
mkdir -p homebrew-formula
cat > homebrew-formula/mklittlefs.rb << 'EOF'
class Mklittlefs < Formula
desc "Creates LittleFS images for ESP8266, ESP32, Pico RP2040, and RP2350"
homepage "https://github.com/earlephilhower/mklittlefs"
url "https://github.com/earlephilhower/mklittlefs/releases/download/$tag/mklittlefs-source.zip"
version "TAGHERE"
sha256 "SHAHERE"
license "MIT"
def install
system "make", "BUILD_CONFIG_NAME=-#{version}"
bin.install "mklittlefs"
end
test do
out = pipe_output("#{bin}/mklittlefs --version")
assert_match(/#{version}/, out)
end
end
EOF
sed -i s/TAGHERE/$tag/g homebrew-formula/mklittlefs.rb
sed -i s/SHAHERE/$sha/g homebrew-formula/mklittlefs.rb
echo =============================
cat homebrew-formula/mklittlefs.rb
echo =============================
- name: Upload Homebrew Formula
uses: actions/upload-artifact@v4
with:
name: homebrew-formula
path: homebrew-formula/mklittlefs.rb