release #1383
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: release | |
permissions: | |
contents: write | |
on: | |
schedule: | |
- cron: '0 18 * * *' | |
push: | |
branches: [ master, test ] | |
workflow_dispatch: | |
env: | |
llvm_ver: 17.0.6 | |
jobs: | |
ubuntu: #{{{ | |
runs-on: ubuntu-20.04 | |
outputs: | |
winscp_ver: ${{ steps.winscp.outputs.version }} | |
putty_ver: ${{ steps.putty.outputs.version }} | |
mobaxterm_ver: ${{ steps.mobaxterm.outputs.version }} | |
# astyle_ver: ${{ steps.astyle.outputs.version }} | |
ahk_ver: ${{ steps.ahk.outputs.version }} | |
uctags_ver: ${{ steps.uctags.outputs.version }} | |
env: | |
WINSCP_VER: ${{ secrets.WINSCP_VER }} | |
steps: | |
- | |
name: Init Env | |
run: | | |
sudo apt-get update | |
mkdir -p ~/tools | |
echo $PATH | |
echo $(date) | |
# - | |
# name: Build make 3.82 | |
# run: | | |
# wget -qOmake.tgz https://ftp.gnu.org/gnu/make/make-3.82.tar.gz | |
# tar xzvf make.tgz | |
# cd make-3.82 | |
# sed -i 's/# if _GNU_GLOB_INTERFACE_VERSION == GLOB_INTERFACE_VERSION/# if _GNU_GLOB_INTERFACE_VERSION >= GLOB_INTERFACE_VERSION/' glob/glob.c | |
# ./configure --prefix=/opt/make_3.8.2 | |
# make -j && make install | |
# cd /opt/make_3.8.2/bin | |
# ./make --version | |
# XZ_OPT=-9 tar cJvf ~/tools/make_3.8.2_linux_amd64.txz /opt/make_3.8.2 | |
# - | |
# name: Build astyle #{{{ | |
# id: astyle | |
# run: | | |
# echo "build astyle latest" | |
# git clone https://gitlab.com/saalen/astyle.git | |
# cd astyle | |
# | |
# ver=$(git describe --tags $(git rev-list --tags --max-count=1)) | |
# git checkout $release | |
# | |
# cd AStyle | |
# mkdir out && cd $_ | |
# cmake ../ -DCMAKE_EXE_LINKER_FLAGS_RELEASE="-static" | |
# make -j | |
# | |
# chmod a+x ./astyle | |
# ./astyle --version | |
# ldd ./astyle || true | |
# XZ_OPT=-9 tar cJvf ~/tools/astyle_linux_amd64.txz astyle | |
# | |
# echo "version=$ver" >> $GITHUB_OUTPUT | |
- | |
name: Get uctags #{{{ | |
id: uctags | |
run: | | |
ver=$(curl -sv "https://github.com/universal-ctags/ctags-nightly-build/releases/latest" 2>&1 | grep -Po "(?<=releases/tag/).*?\+\w+") | |
date=$(echo $ver | grep -Po "^.*?(?=\+)") | |
echo $ver $date | |
wget -qOuctags.txz https://github.com/universal-ctags/ctags-nightly-build/releases/download/$ver/uctags-$date-linux-x86_64.release.tar.xz | |
tar xJvf uctags.txz | |
cd uctags-*/bin | |
ver=$(./ctags --version | grep -Po "(?<=Universal Ctags )\d+\.\d+\.\d+\(.*?\)") | |
echo "uctags version: $ver" | |
echo "version=$ver" >> $GITHUB_OUTPUT | |
XZ_OPT=-9 tar cJvf ~/tools/ctags_linux_amd64.txz ctags | |
- | |
name: Get autohotkey2 lsp #{{{ | |
id: ahk | |
run: | | |
mkdir autohotkey2-lsp && cd $_ | |
curl -L -o install.js https://raw.githubusercontent.com/thqby/vscode-autohotkey2-lsp/main/tools/install.js | |
node install.js | |
ver=$(cat package.json | grep '"version":' | grep -Po "(\d+\.){2}\d+") | |
cd ../ | |
echo "version=$ver" >> $GITHUB_OUTPUT | |
7z -mx9 a ~/tools/autohotkey2-lsp.zip ./autohotkey2-lsp | |
- | |
name: Get putty #{{{ | |
id: putty | |
run: | | |
ver=$(curl -s "https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html" | grep -Po "(?<=latest release \()\d\.\d+" | head -1) | |
if [ -z "$ver" ]; then | |
ver=0.80 | |
fi | |
mkdir -p putty && cd $_ | |
wget -q https://the.earth.li/~sgtatham/putty/latest/w64/putty.exe | |
wget -q https://the.earth.li/~sgtatham/putty/latest/w64/pscp.exe | |
wget -q https://the.earth.li/~sgtatham/putty/latest/w64/psftp.exe | |
wget -q https://the.earth.li/~sgtatham/putty/latest/w64/puttytel.exe | |
wget -q https://the.earth.li/~sgtatham/putty/latest/w64/plink.exe | |
wget -q https://the.earth.li/~sgtatham/putty/latest/w64/pageant.exe | |
wget -q https://the.earth.li/~sgtatham/putty/latest/w64/puttygen.exe | |
7z -mx9 a ~/tools/putty_${ver}.zip ../putty | |
echo "version=$ver" >> $GITHUB_OUTPUT | |
- | |
name: Get MobaXterm | |
id: mobaxterm | |
run: | | |
moba_link=$(curl -s https://mobaxterm.mobatek.net/download-home-edition.html | grep -Po "https:.*?Portable.*?\.zip" | head -1) | |
ver=$(echo $moba_link | grep -Po "\d+\.\d+") | |
wget -q $moba_link | |
7z x MobaXterm*.zip -oMobaXterm | |
mv MobaXterm/MobaXterm* MobaXterm/MobaXterm.exe | |
7z -mx9 a ~/tools/MobaXterm_${ver}.zip ./MobaXterm | |
echo "version=$ver" >> $GITHUB_OUTPUT | |
- | |
name: Get winscp | |
id: winscp | |
run: | | |
ver=$(curl -s "https://github.com/winscp/winscp/tags" | grep -Po "(?<=tags/)(\d+\.){2}\d+(?=\.zip)" | head -1) | |
mkdir -p winscp && cd $_ | |
echo "version=$ver" >> $GITHUB_OUTPUT | |
if [ "$WINSCP_VER" != "0" ]; then | |
ver=$WINSCP_VER | |
fi | |
wget -Owinscp.zip https://winscp.net/download/WinSCP-${ver}-Portable.zip | |
unzip winscp.zip && rm winscp.zip | |
7z -mx9 a ~/tools/winscp_${ver}.zip ../winscp | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: tools-multi | |
path: ~/tools | |
retention-days: 1 | |
version: #{{{ | |
runs-on: ubuntu-latest | |
outputs: | |
clangd: ${{ steps.clangd.outputs.version }} | |
ccls: ${{ steps.ccls.outputs.version }} | |
steps: | |
- | |
id: clangd | |
run: | | |
ver=$(curl -sv "https://github.com/llvm/llvm-project/releases/latest" 2>&1 | grep -P location: | grep -Po "\d+\.\d+\.\d+") | |
echo "version=$ver" >> $GITHUB_OUTPUT | |
- | |
id: ccls | |
run: | | |
git clone --depth=1 https://github.com/MaskRay/ccls | |
cd ccls | |
ver="master-$(git rev-parse --short HEAD)" | |
echo "version=$ver" >> $GITHUB_OUTPUT | |
# luals: #{{{ | |
# runs-on: ubuntu-latest | |
# outputs: | |
# version: ${{ steps.build.outputs.version }} | |
# steps: | |
# - name: Build | |
# id: build | |
# run: | | |
# mkdir -p ~/tools | |
# | |
# ver=$(curl -sv "https://github.com/ninja-build/ninja/releases/latest" 2>&1 | grep -P location: | grep -Po "(\d+\.){2}\d+") | |
# wget -qOninja.zip https://github.com/ninja-build/ninja/releases/download/v${ver}/ninja-linux.zip | |
# 7z x ninja.zip | |
# sudo mv ninja /usr/local/bin | |
# ninja --version | |
# | |
# git clone https://github.com/LuaLS/lua-language-server --recurse-submodules | |
# # cd lua-language-server/3rd/EmmyLuaCodeStyle | |
# # git checkout master | |
# # cd ../../ | |
# # git add . | |
# cd lua-language-server | |
# ./make.sh | |
# | |
# chmod +x ./bin/* | |
# ver=$(./bin/lua-language-server --version) | |
# ver="${ver}-$(git rev-parse --short HEAD)" | |
# echo "version=$ver" >> $GITHUB_OUTPUT | |
# | |
# mkdir lua-language-server | |
# cp -r main.lua debugger.lua LICENSE changelog.md locale meta script bin ./lua-language-server/ | |
# XZ_OPT=-9 tar cJf ~/tools/lua-language-server-linux-x64.txz ./lua-language-server | |
# - uses: actions/upload-artifact@v4 | |
# with: | |
# name: tools-luals | |
# path: ~/tools | |
# retention-days: 1 | |
tig: #{{{ | |
runs-on: ubuntu-20.04 | |
outputs: | |
version: ${{ steps.build.outputs.version }} | |
steps: | |
- name: Build | |
id: build | |
run: | | |
sudo apt-get update | |
sudo apt install -y automake | |
mkdir -p ~/tools | |
echo "install ncursesw 6.3" | |
# https://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.3.tar.gz | |
wget -qOncurses.tgz https://mirrors.aliyun.com/gnu/ncurses/ncurses-6.3.tar.gz | |
tar xzf ncurses.tgz | |
cd ncurses-* | |
./configure --prefix=/usr/local \ | |
--enable-widec --enable-pc-files --with-terminfo-dirs='/etc/terminfo:/lib/terminfo:/usr/share/terminfo' \ | |
--without-debug --without-tests | |
make -j && sudo make install | |
cd - | |
echo "install readline 8.1" | |
# https://ftp.gnu.org/gnu/readline/readline-8.1.tar.gz | |
wget -qOreadline.tgz https://mirrors.aliyun.com/gnu/readline/readline-8.1.tar.gz | |
tar xzf readline.tgz | |
cd readline-* | |
./configure --prefix=/usr/local | |
make -j && sudo make install | |
cd - | |
ver=$(curl -sv "https://github.com/PCRE2Project/pcre2/releases/latest" 2>&1 | grep -P location: | grep -Po "\d+\.\d+") | |
echo "install pcre2 $ver" | |
wget -qOpcre2.tgz https://github.com/PCRE2Project/pcre2/releases/download/pcre2-$ver/pcre2-$ver.tar.gz | |
tar xzf pcre2.tgz | |
cd pcre2-* | |
./configure --prefix=/usr/local \ | |
--build=x86_64-linux-gnu --sysconfdir=/etc --localstatedir=/var \ | |
--disable-option-checking --disable-silent-rules \ | |
--disable-maintainer-mode --disable-dependency-tracking --enable-pcre2-16 --enable-pcre2-32 \ | |
--disable-pcre2grep-callout | |
make -j && sudo make install | |
cd - | |
echo "build tig latest release" | |
ver=$(curl -sv "https://github.com/jonas/tig/releases/latest" 2>&1 | grep -P location: | grep -Po "(\d+\.){2}\d+") | |
#ver=2.5.4 | |
wget -qOtig.tgz https://github.com/jonas/tig/releases/download/tig-$ver/tig-$ver.tar.gz | |
tar xzf tig.tgz | |
cd tig-* | |
./autogen.sh | |
./configure LIBS=-pthread LDFLAGS="-static -L/usr/local/lib" CPPFLAGS="-I/usr/local/include" | |
make -j | |
cp src/tig . | |
chmod a+x ./tig | |
./tig --version | |
ldd ./tig || true | |
XZ_OPT=-9 tar cJvf ~/tools/tig_linux_amd64.txz tig | |
echo "version=$ver" >> $GITHUB_OUTPUT | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: tools-tig | |
path: ~/tools | |
retention-days: 1 | |
atuin: | |
runs-on: windows-latest | |
defaults: | |
run: | |
shell: msys2 {0} | |
steps: | |
- uses: msys2/setup-msys2@v2 | |
with: | |
update: true | |
msystem: UCRT64 | |
- run: pacman --noconfirm -Syu p7zip mingw-w64-ucrt-x86_64-rust mingw-w64-ucrt-x86_64-protobuf # protobuf is needed by atuin | |
- uses: Swatinem/rust-cache@v2 | |
- run: | | |
cargo install atuin | |
7z -mx9 a /c/atuin_windows_amd64.zip /c/Users/runneradmin/.cargo/bin/atuin.exe | |
- name: 'Upload Artifact' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: tools-atuin | |
path: c:\atuin_windows_amd64.zip | |
publish: #{{{ | |
needs: [ubuntu, version, tig, atuin] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/download-artifact@v4 | |
with: | |
path: tools | |
pattern: tools-* | |
merge-multiple: true | |
- run: ls -la tools | |
- name: Publish | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
GITEE_KEY: ${{ secrets.GITEE_KEY }} | |
run: | | |
{ | |
echo "* clangd ${{ needs.version.outputs.clangd }} last release with rpath lib" | |
echo "* clang-format ${{ needs.version.outputs.clangd }} last release static" | |
# echo "* ccls ${{ needs.version.outputs.ccls }} linux (build with llvm ${{ env.llvm_ver }})" | |
# echo "* ccls ${{ needs.version.outputs.cls }} windows(build with llvm ${{ env.llvm_ver }})" | |
echo "* uctags ${{ needs.ubuntu.outputs.uctags_ver }} static" | |
# echo "* luals ${{ needs.luals.outputs.version }}" | |
echo "* autohotkey2-lsp ${{ needs.ubuntu.outputs.ahk_ver }}" | |
echo "* tig ${{ needs.tig.outputs.version }} static" | |
echo "* atuin windows last release" | |
# echo "* astyle ${{ needs.ubuntu.outputs.astyle_ver }} static" | |
# echo "* make 3.8.2" | |
# echo "* putty ${{ needs.ubuntu.outputs.putty_ver }}" | |
# echo "* MobaXterm ${{ needs.ubuntu.outputs.mobaxterm_ver }}" | |
# echo "* winscp ${{ needs.ubuntu.outputs.winscp_ver }}" | |
} | tee /tmp/note.md | |
#upload to draft, publish after clangd build end | |
tag_name=release_temp | |
gh release delete $tag_name -y || true | |
gh release create $tag_name -t "tools" -F "/tmp/note.md" -d --target $GITHUB_SHA | |
sleep 5 | |
gh release upload $tag_name --clobber ./tools/* |