diff --git a/.github/workflows/nightly.yaml b/.github/workflows/nightly.yaml new file mode 100644 index 00000000..2ca663e8 --- /dev/null +++ b/.github/workflows/nightly.yaml @@ -0,0 +1,42 @@ +name: Nightly builds +on: + schedule: + - cron: '0 0 * * *' +jobs: + nightly: + strategy: + matrix: + go-version: [1.19.x] + os: [ubuntu-latest] + runs-on: ${{ matrix.os }} + steps: + - name: Setup + uses: actions/setup-go@v5 + with: + go-version: ${{ matrix.go-version }} + + - name: Checkout + uses: actions/checkout@v4 + with: + ref: master + + - name: Build + run: tools/cross-compile.sh + + - name: Tag + uses: rickstaa/action-create-tag@v1 + with: + tag: nightly + force_push_tag: true + message: "Pre-release nightly" + + - name: Publish + uses: softprops/action-gh-release@v2 + with: + name: nightly + tag_name: nightly + files: binaries/* + prerelease: true + + - name: Cleanup + run: rm -rf binaries diff --git a/tools/cross-compile.sh b/tools/cross-compile.sh index dcd6ca97..a79acf25 100755 --- a/tools/cross-compile.sh +++ b/tools/cross-compile.sh @@ -1,120 +1,109 @@ -cd .. +#!/bin/sh -mkdir -p binaries -mkdir -p micro-$1 - -cp LICENSE micro-$1 -cp README.md micro-$1 -cp LICENSE-THIRD-PARTY micro-$1 -cp assets/packaging/micro.1 micro-$1 -cp assets/packaging/micro.desktop micro-$1 -cp assets/micro-logo-mark.svg micro-$1/micro.svg +set -e HASH="$(git rev-parse --short HEAD)" VERSION="$(go run tools/build-version.go)" DATE="$(go run tools/build-date.go)" ADDITIONAL_GO_LINKER_FLAGS="$(go run tools/info-plist.go $VERSION)" +mkdir -p binaries +mkdir -p micro-$VERSION + +cp LICENSE micro-$VERSION +cp README.md micro-$VERSION +cp LICENSE-THIRD-PARTY micro-$VERSION +cp assets/packaging/micro.1 micro-$VERSION +cp assets/packaging/micro.desktop micro-$VERSION +cp assets/micro-logo-mark.svg micro-$VERSION/micro.svg + +create_artefact_generic() +{ + mv micro micro-$VERSION/ + tar -czf micro-$VERSION-$1.tgz micro-$VERSION + sha256sum micro-$VERSION-$1.tgz > micro-$VERSION-$1.tgz.sha + mv micro-$VERSION-$1.* binaries + rm micro-$VERSION/micro +} + +create_artefact_windows() +{ + mv micro.exe micro-$VERSION/ + zip -r -q -T micro-$VERSION-$1.zip micro-$VERSION + sha256sum micro-$VERSION-$1.zip > micro-$VERSION-$1.zip.sha + mv micro-$VERSION-$1.* binaries + rm micro-$VERSION/micro.exe +} + # Mac echo "OSX 64" GOOS=darwin GOARCH=amd64 make build -mv micro micro-$1 -tar -czf micro-$1-osx.tar.gz micro-$1 -mv micro-$1-osx.tar.gz binaries +create_artefact_generic "osx" # Mac ARM64 echo "MacOS ARM64" GOOS=darwin GOARCH=arm64 make build -mv micro micro-$1 -tar -czf micro-$1-macos-arm64.tar.gz micro-$1 -mv micro-$1-macos-arm64.tar.gz binaries +create_artefact_generic "macos-arm64" # Linux echo "Linux 64" GOOS=linux GOARCH=amd64 make build -./tools/package-deb.sh $1 -mv micro-$1-amd64.deb binaries - -mv micro micro-$1 -tar -czf micro-$1-linux64.tar.gz micro-$1 -mv micro-$1-linux64.tar.gz binaries +if ./tools/package-deb.sh $VERSION; then + sha256sum micro-$VERSION-amd64.deb > micro-$VERSION-amd64.deb.sha + mv micro-$VERSION-amd64.* binaries +fi +create_artefact_generic "linux64" echo "Linux 64 fully static" CGO_ENABLED=0 GOOS=linux GOARCH=amd64 make build -mv micro micro-$1 -tar -czf micro-$1-linux64-static.tar.gz micro-$1 -mv micro-$1-linux64-static.tar.gz binaries +create_artefact_generic "linux64-static" echo "Linux 32" GOOS=linux GOARCH=386 make build -mv micro micro-$1 -tar -czf micro-$1-linux32.tar.gz micro-$1 -mv micro-$1-linux32.tar.gz binaries +create_artefact_generic "linux32" echo "Linux ARM 32" GOOS=linux GOARM=6 GOARCH=arm make build -mv micro micro-$1 -tar -czf micro-$1-linux-arm.tar.gz micro-$1 -mv micro-$1-linux-arm.tar.gz binaries +create_artefact_generic "linux-arm" echo "Linux ARM 64" GOOS=linux GOARCH=arm64 make build -mv micro micro-$1 -tar -czf micro-$1-linux-arm64.tar.gz micro-$1 -mv micro-$1-linux-arm64.tar.gz binaries +create_artefact_generic "linux-arm64" # NetBSD echo "NetBSD 64" GOOS=netbsd GOARCH=amd64 make build -mv micro micro-$1 -tar -czf micro-$1-netbsd64.tar.gz micro-$1 -mv micro-$1-netbsd64.tar.gz binaries +create_artefact_generic "netbsd64" echo "NetBSD 32" GOOS=netbsd GOARCH=386 make build -mv micro micro-$1 -tar -czf micro-$1-netbsd32.tar.gz micro-$1 -mv micro-$1-netbsd32.tar.gz binaries +create_artefact_generic "netbsd32" # OpenBSD echo "OpenBSD 64" GOOS=openbsd GOARCH=amd64 make build -mv micro micro-$1 -tar -czf micro-$1-openbsd64.tar.gz micro-$1 -mv micro-$1-openbsd64.tar.gz binaries +create_artefact_generic "openbsd64" echo "OpenBSD 32" GOOS=openbsd GOARCH=386 make build -mv micro micro-$1 -tar -czf micro-$1-openbsd32.tar.gz micro-$1 -mv micro-$1-openbsd32.tar.gz binaries +create_artefact_generic "openbsd32" # FreeBSD echo "FreeBSD 64" GOOS=freebsd GOARCH=amd64 make build -mv micro micro-$1 -tar -czf micro-$1-freebsd64.tar.gz micro-$1 -mv micro-$1-freebsd64.tar.gz binaries +create_artefact_generic "freebsd64" echo "FreeBSD 32" GOOS=freebsd GOARCH=386 make build -mv micro micro-$1 -tar -czf micro-$1-freebsd32.tar.gz micro-$1 -mv micro-$1-freebsd32.tar.gz binaries - -rm micro-$1/micro +create_artefact_generic "freebsd32" # Windows echo "Windows 64" GOOS=windows GOARCH=amd64 make build -mv micro.exe micro-$1 -zip -r -q -T micro-$1-win64.zip micro-$1 -mv micro-$1-win64.zip binaries +create_artefact_windows "win64" echo "Windows 32" GOOS=windows GOARCH=386 make build -mv micro.exe micro-$1 -zip -r -q -T micro-$1-win32.zip micro-$1 -mv micro-$1-win32.zip binaries +create_artefact_windows "win32" -rm -rf micro-$1 +rm -rf micro-$VERSION diff --git a/tools/package-deb.sh b/tools/package-deb.sh index 416b88f9..6be3b14b 100755 --- a/tools/package-deb.sh +++ b/tools/package-deb.sh @@ -1 +1 @@ -fpm -s dir -t deb -p micro-$1-amd64.deb --name micro --license mit --version $1 --deb-recommends xclip --description "A modern and intuitive terminal-based text editor" --after-install ./assets/packaging/deb/micro.postinst --before-remove ./assets/packaging/deb/micro.prerm ./micro=/usr/bin/micro ./assets/packaging/micro.1=/usr/share/man/man1/micro.1 +command -v fpm > /dev/null && fpm -s dir -t deb -p micro-$1-amd64.deb --name micro --license mit --version $1 --deb-recommends xclip --description "A modern and intuitive terminal-based text editor" --after-install ./assets/packaging/deb/micro.postinst --before-remove ./assets/packaging/deb/micro.prerm ./micro=/usr/bin/micro ./assets/packaging/micro.1=/usr/share/man/man1/micro.1