name: CI on: { push: { branches: [master] } } env: { VERSION: "0.1" } jobs: build: runs-on: ubuntu-latest defaults: { run: { shell: bash } } steps: - name: Checkout Code uses: actions/checkout@v3 with: fetch-depth: 0 - name: Clone Submodules run: git submodule update --init --depth=1 - name: Build Linux run: | ./build.sh -DLPM_VERSION='"'$VERSION-x86_64-linux-`git rev-parse --short HEAD`'"' && tar -czvf lpm-$VERSION-x86_64-linux.tar.gz lpm cp lpm lpm.x86_64-linux - name: Package Debian/Ubuntu env: { REV: "1", ARCH: "amd64", DESCRIPTION: "A plugin manager for the lite-xl text editor.", MAINTAINER: "Adam Harrison " } run: | export NAME=lpm_$VERSION.0-$REV""_$ARCH mkdir -p $NAME/usr/bin $NAME/DEBIAN && cp lpm $NAME/usr/bin printf "Package: lpm\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 && CC=x86_64-w64-mingw32-gcc AR=x86_64-w64-mingw32-gcc-ar WINDRES=x86_64-w64-mingw32-windres CURL_CONFIGURE="-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_SYSTEM_NAME=Windows" GIT2_CONFIGURE="-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY -DBUILD_CLAR=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_SYSTEM_NAME=Windows -DDLLTOOL=x86_64-w64-mingw32-dlltool" SSL_CONFIGURE=mingw ./build.sh -DLPM_VERSION='"'$VERSION-x86_64-windows-`git rev-parse --short HEAD`'"' && zip -r lpm-$VERSION-x86_64-win32.zip lpm.exe cp lpm.exe lpm.x86_64-windows.exe - name: Create Release(s) env: { GITHUB_TOKEN: "${{ github.token }}" } run: | gh release delete -y continuous || true; gh release create -t 'Continuous Release' continuous *.zip *.tar.gz *.deb if [[ `git tag --points-at HEAD | head -c 4` == "v"* ]]; then export RELEASE=`git tag --points-at HEAD | head -c 4` gh release delete -y $RELEASE || true; gh release create -t $RELEASE $RELEASE lpm.x86_64-linux lpm.x86_64-windows.exe git checkout master && cat manifest.json | jq ".plugins[0].files[0].checksum = "'"'"`sha256sum lpm.x86_64-linux | sed 's/ .*//'`"'"' | jq ".plugins[0].files[1].checksum = "'"'"`sha256sum lpm.x86_64-windows.exe | sed 's/ .*//'`"'"' > new-manifest.json mv new-manifest.json manifest.json && git add manifest.json && git commit -m 'Updated manifest.json with updated release checksums.' && git push fi