Project rebranding #32
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: { push: { branches: [master] } } | |
permissions: write-all | |
jobs: | |
build_linux_android_windows: | |
runs-on: ubuntu-latest | |
environment: Release | |
defaults: { run: { shell: bash } } | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v3 | |
with: { fetch-depth: 0 } | |
- name: Set Environment Variables | |
run: | | |
git config --global user.name "Github Actions" && git config --global user.email "[email protected]" | |
echo VERSION=`git describe --tags --abbrev=0 --match "v*" | tail -c +2` >> $GITHUB_ENV && echo FULL_VERSION=`git describe --tags --match "v*" | tail -c +2` >> $GITHUB_ENV && echo REV=$((`git describe --tags --match "v*" | sed 's/.*-\([0-9]*\)-.*/\1/' | sed s/^v.*//` + 1)) >> $GITHUB_ENV | |
- name: Clone Submodules | |
run: git submodule update --init --depth=1 | |
- name: Build Linux | |
run: | | |
sudo apt-get install musl-tools musl musl-dev | |
wget -q https://musl.cc/riscv64-linux-musl-cross.tgz && tar -zxvf riscv64-linux-musl-cross.tgz | |
wget -q https://musl.cc/aarch64-linux-musl-cross.tgz && tar -zxvf aarch64-linux-musl-cross.tgz | |
./build.sh clean && BIN=ppm.riscv64-linux HOSTCC=gcc CC=`pwd`/riscv64-linux-musl-cross/bin/riscv64-linux-musl-cc AR=`pwd`/riscv64-linux-musl-cross/bin/riscv64-linux-musl-ar ./build.sh -DPPM_STATIC -DPPM_VERSION='"'$FULL_VERSION-riscv64-linux'"' -static -O3 | |
./build.sh clean && BIN=ppm.aarch64-linux HOSTCC=gcc CC=`pwd`/aarch64-linux-musl-cross/bin/aarch64-linux-musl-cc AR=`pwd`/aarch64-linux-musl-cross/bin/aarch64-linux-musl-ar ./build.sh -DPPM_STATIC -DPPM_VERSION='"'$FULL_VERSION-aarch64-linux'"' -static -O3 | |
./build.sh clean && BIN=ppm.x86_64-linux CC=musl-gcc ./build.sh -DPPM_STATIC -DPPM_VERSION='"'$FULL_VERSION-x86_64-linux'"' -static -O3 | |
- name: Run Tests | |
run: | | |
cp ./ppm.x86_64-linux ppm && ./ppm test t/run.lua | |
- name: Build Android | |
env: { ANDROID_ABI_VERSION: "26" } | |
run: | | |
export CMAKE_DEFAULT_FLAGS="-DCMAKE_ANDROID_NDK=$ANDROID_NDK_HOME -DCMAKE_ANDROID_API=$ANDROID_ABI_VERSION -DCMAKE_SYSTEM_VERSION=$ANDROID_ABI_VERSION -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=NEVER -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=NEVER -DCMAKE_SYSTEM_NAME=Android -DCMAKE_SYSTEM_INCLUDE_PATH=$ANDROID_SYSROOT_NDK/sysroot/usr/include" | |
export AR="$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar" | |
./build.sh clean && export ARCH="arm-android" && CFLAGS="-Dinline=" BIN=ppm.$ARCH CMAKE_DEFAULT_FLAGS="$CMAKE_DEFAULT_FLAGS -DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a" HOSTCC=gcc CC=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi$ANDROID_ABI_VERSION-clang ./build.sh -DPPM_VERSION='"'$FULL_VERSION-$ARCH'"' -DPPM_STATIC | |
./build.sh clean && export ARCH="aarch64-android" && CFLAGS="-Dinline=" BIN=ppm.$ARCH CMAKE_DEFAULT_FLAGS="$CMAKE_DEFAULT_FLAGS -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a" HOSTCC=gcc CC=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android$ANDROID_ABI_VERSION-clang ./build.sh -DPPM_VERSION='"'$FULL_VERSION-$ARCH'"' -DPPM_STATIC | |
./build.sh clean && export ARCH="x86-android" && CFLAGS="-Dinline=" BIN=ppm.$ARCH CMAKE_DEFAULT_FLAGS="$CMAKE_DEFAULT_FLAGS -DCMAKE_ANDROID_ARCH_ABI=x86" HOSTCC=gcc CC=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android$ANDROID_ABI_VERSION-clang ./build.sh -DPPM_VERSION='"'$FULL_VERSION-$ARCH'"' -DPPM_STATIC | |
./build.sh clean && export ARCH="x86_64-android" && CFLAGS="-Dinline=" BIN=ppm.$ARCH CMAKE_DEFAULT_FLAGS="$CMAKE_DEFAULT_FLAGS -DCMAKE_ANDROID_ARCH_ABI=x86_64" HOSTCC=gcc CC=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android$ANDROID_ABI_VERSION-clang ./build.sh -DPPM_VERSION='"'$FULL_VERSION-$ARCH'"' -DPPM_STATIC | |
# - name: Package Debian/Ubuntu | |
# env: { ARCH: "amd64", DESCRIPTION: "A plugin manager for the pragtical text editor.", MAINTAINER: "Adam Harrison <[email protected]>" } | |
# run: | | |
# export NAME=ppm_$VERSION.0-$REV""_$ARCH | |
# mkdir -p $NAME/usr/bin $NAME/DEBIAN && cp ppm $NAME/usr/bin | |
# printf "Package: ppm\nVersion: $VERSION\nArchitecture: $ARCH\nMaintainer: $MAINTAINER\nDescription: $DESCRIPTION\n" > $NAME/DEBIAN/control | |
# dpkg-deb --build --root-owner-group $NAME | |
- name: Build Windows | |
run: | | |
sudo apt-get install mingw-w64 && ./build.sh clean && BIN=ppm.x86_64-windows.exe HOSTCC=gcc CC=x86_64-w64-mingw32-gcc AR=x86_64-w64-mingw32-gcc-ar WINDRES=x86_64-w64-mingw32-windres CMAKE_DEFAULT_FLAGS="-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=NEVER -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=NEVER -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_SYSTEM_INCLUDE_PATH=/usr/share/mingw-w64/include" LZMA_CONFIGURE="--host=x86_64-w64-mingw32" GIT2_CONFIGURE="-DDLLTOOL=x86_64-w64-mingw32-dlltool" ./build.sh -DPPM_STATIC -DPPM_VERSION='"'$VERSION-x86_64-windows'"' -O3 | |
- name: Create Release(s) | |
env: { GITHUB_TOKEN: "${{ github.token }}", ARTIFACTS: "ppm.x86_64-linux ppm.aarch64-linux ppm.riscv64-linux ppm.x86_64-windows.exe ppm.arm-android ppm.aarch64-android ppm.x86-android ppm.x86_64-android" } | |
run: | | |
perl -pe 'last if $_ =~ m/^\s*#/ && $_ !~ m/#\s*$ENV{VERSION}/' < CHANGELOG.md | tail -n +2 > NOTES.md | |
gh release delete -y continuous || true; gh release create -t 'Continuous Release' -F NOTES.md continuous $ARTIFACTS | |
if git tag --points-at HEAD | tail -n1 | grep "^v"; then | |
gh release delete -y v$VERSION || true; | |
gh release create -t v$VERSION -F NOTES.md v$VERSION $ARTIFACTS | |
gh release delete -y latest || true; | |
gh release create -t latest -F NOTES.md latest $ARTIFACTS | |
fi | |
build_macos: | |
needs: build_linux_android_windows | |
runs-on: macos-11 | |
env: | |
CC: clang | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v3 | |
with: { fetch-depth: 0 } | |
- name: Set Environment Variables | |
run: echo VERSION=`git describe --tags --abbrev=0 --match "v*" | tail -c +2` >> $GITHUB_ENV && echo FULL_VERSION=`git describe --tags --match "v*" | tail -c +2` >> $GITHUB_ENV && echo REV=$((`git describe --tags --match "v*" | sed 's/.*-\([0-9]*\)-.*/\1/' | sed s/^v.*//` + 1)) >> $GITHUB_ENV | |
- name: Clone Submodules | |
run: git submodule update --init --depth=1 | |
- name: Build MacOS | |
env: { GITHUB_TOKEN: "${{ github.token }}" } | |
run: | | |
./build.sh clean && BIN=ppm.x86_64-darwin ./build.sh -DPPM_STATIC -DPPM_VERSION='"'$FULL_VERSION-x86_64-darwin'"' -O3 | |
./build.sh clean && BIN=ppm.aarch64-darwin CC=clang CFLAGS="-arch arm64" ./build.sh -DPPM_STATIC -DPPM_VERSION='"'$FULL_VERSION-aarch64-darwin'"' -O3 | |
gh release upload continuous ppm.x86_64-darwin ppm.aarch64-darwin | |
if git tag --points-at HEAD | tail -n1 | grep "^v"; then | |
gh release upload v$VERSION ppm.x86_64-darwin | |
gh release upload latest ppm.x86_64-darwin | |
gh release upload v$VERSION ppm.aarch64-darwin | |
gh release upload latest ppm.aarch64-darwin | |
git branch -f latest HEAD | |
git tag -f latest | |
git push -f origin refs/heads/latest | |
git push -f origin refs/tags/latest | |
fi | |
git tag -f continuous | |
git push -f origin refs/tags/continuous |