Release #1074
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 | |
on: | |
schedule: | |
- cron: '0 2 * * *' # run at 2 AM UTC | |
workflow_dispatch: | |
inputs: | |
tag_name: | |
description: 'Tag name for release' | |
required: false | |
default: nightly | |
push: | |
tags: | |
- v[0-9]+.[0-9]+.[0-9]+ | |
env: | |
cache-version: v9 | |
jobs: | |
check-new-commit: | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
with: | |
fetch-depth: 0 | |
- run: > | |
test \( "${{github.event_name}}" == "schedule" | |
-a 0 -lt $(git log --oneline --show-pulls --since "yesterday" -- . ":!.github" ":!.gitignore" ":!.golangci.yml" | wc -l) \) | |
-o \( "${{github.event_name}}" != "schedule" \) | |
################################################################# | |
# Linux | |
################################################################# | |
linux: | |
needs: [check-new-commit] | |
strategy: | |
matrix: | |
go-version: [1.21.x] | |
platform: [ubuntu-20.04] | |
qtversion: [5.15.6] | |
runs-on: ${{ matrix.platform }} | |
env: | |
GOPATH: ${{ github.workspace }} | |
QT_DIR: ${{ github.workspace }}/Qt | |
QT_VERSION: ${{ matrix.qtversion }} | |
QT_API: 5.13.0 | |
QT_DEBUG: false | |
GO111MODULE: on | |
QT_STATIC: true | |
QT_QMAKE_DIR: ${{ github.workspace }}/Qt/${{ matrix.qtversion }}/gcc_64/bin | |
steps: | |
- name: Linux prerequisites | |
run: | | |
sudo apt update | |
sudo apt-get -y install build-essential libglu1-mesa-dev libpulse-dev libglib2.0-dev cmake | |
sudo apt-get --no-install-recommends -qq -y install fontconfig libasound2 libegl1-mesa libnss3 libpci3 libxcomposite1 libxcursor1 libxi6 libxrandr2 libxtst6 | |
sudo apt-get --no-install-recommends -qq -y install libdbus-1-dev libssl-dev libzstd-dev | |
sudo apt-get install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev | |
sudo apt-get install libwayland-dev libwayland-egl++ wayland-scanner++ | |
- name: Install Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: ${{ matrix.go-version }} | |
- uses: actions/cache@v2 | |
id: cache-qt-linux | |
with: | |
path: ${{ github.workspace }}/Qt/${{ matrix.qtversion }}/gcc_64 | |
key: ${{ matrix.qtversion }}-qt-linux-${{ env.cache-version }} | |
- name: Build Qt | |
if: ${{ steps.cache-qt-linux.outputs.cache-hit != 'true' }} | |
run: | | |
curl -L -o qt-everywhere-opensource-src-${{ matrix.qtversion }}.tar.xz https://download.qt.io/official_releases/qt/5.15/${{ matrix.qtversion }}/single/qt-everywhere-opensource-src-${{ matrix.qtversion }}.tar.xz | |
tar Jxf qt-everywhere-opensource-src-${{ matrix.qtversion }}.tar.xz | |
rm qt-everywhere-opensource-src-${{ matrix.qtversion }}.tar.xz | |
mv qt-everywhere-src-${{ matrix.qtversion }} qt5 | |
ls -l ${{ github.workspace }}/qt5 | |
cd ${{ github.workspace }}/qt5 && ./configure -prefix ${{ github.workspace }}/Qt/${{ matrix.qtversion }}/gcc_64 -no-icu -confirm-license -opensource -static -qt-zlib -qt-libpng -qt-libjpeg -xcb -xcb-xlib -bundled-xcb-xinput -sysconfdir /etc/xdg -dbus-runtime -openssl-runtime -opengl -optimize-size -skip qtwebengine -skip qtfeedback -skip qtpim -feature-wayland-client -nomake tests -nomake examples && make -j $(grep -c ^processor /proc/cpuinfo) && make install -j $(grep -c ^processor /proc/cpuinfo) | |
rm -fr ${{ github.workspace }}/qt5 | |
- name: Build fcitx5 | |
env: | |
FILE: ${{ github.workspace }}/fcitx-qt5/qt5/platforminputcontext/CMakeLists.txt | |
CMAKE_PREFIX_PATH: ${{ github.workspace }}/Qt/${{ matrix.qtversion }}/gcc_64/lib/cmake | |
Qt5_DIR: ${{ github.workspace }}/Qt/${{ matrix.qtversion }}/gcc_64/lib/cmake/Qt5 | |
run: | | |
git clone -q --depth 1 https://github.com/fcitx/fcitx-qt5.git | |
echo -e "ADD_DEFINITIONS(-DQT_STATICPLUGIN)\n$(cat $FILE)" > $FILE | |
echo -e "find_package(Qt5 REQUIRED COMPONENTS Core Gui DBus)\n$(cat $FILE)" > $FILE | |
echo -e "$(head -n -5 $FILE)" > $FILE | |
sed -i -e 's/ MODULE / STATIC /g' $FILE | |
cd fcitx-qt5/qt5/platforminputcontext && cmake . && make -j $(grep -c ^processor /proc/cpuinfo) | |
- name: Copy libfcitxplatforminputcontextplugin.a | |
run: | | |
cp -p ${{ github.workspace }}/fcitx-qt5/qt5/platforminputcontext/libfcitxplatforminputcontextplugin.a ${{ github.workspace }}/Qt/${{ matrix.qtversion }}/gcc_64/plugins/platforminputcontexts/ | |
rm -fr ${{ github.workspace }}/fcitx-qt5 | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
with: | |
fetch-depth: 0 | |
path: ${{ github.workspace }}/src/github.com/${{ github.repository }} | |
- name: Free disk space | |
run: | | |
sudo swapoff -a | |
sudo rm -f /swapfile | |
sudo apt clean | |
sudo rm -rf /usr/share/dotnet | |
- name: Get Qt binding for Go | |
env: | |
Qt5_DIR: ${{ github.workspace }}/Qt/${{ matrix.qtversion }}/gcc_64/lib/cmake/Qt5 | |
run: | | |
cd ${{ github.workspace }}/src/github.com/${{ github.repository }} | |
make qt_bindings | |
- name: Get dependencies | |
run: | | |
cd ${{ github.workspace }}/src/github.com/${{ github.repository }} | |
make deps | |
- name: Retrieve version | |
id: version-linux | |
run: | | |
cd ${{ github.workspace }}/src/github.com/${{ github.repository }} | |
echo "::set-output name=GONEOVIM_VERSION::$(git describe --tags)" | |
- name: Build | |
run: | | |
cd ${{ github.workspace }}/src/github.com/${{ github.repository }} | |
make app | |
- if: github.event_name == 'workflow_dispatch' | |
run: echo "ARCHIVE_NAME=goneovim-linux" >> $GITHUB_ENV | |
- if: github.event_name == 'schedule' | |
run: echo "ARCHIVE_NAME=goneovim-linux" >> $GITHUB_ENV | |
- if: github.event_name == 'push' | |
run: echo "ARCHIVE_NAME=goneovim-${{ steps.version-linux.outputs.GONEOVIM_VERSION }}-linux" >> $GITHUB_ENV | |
- name: Archive | |
run: | | |
cd ${{ github.workspace }}/src/github.com/${{ github.repository }}/cmd/goneovim/deploy | |
mv linux "$ARCHIVE_NAME" | |
tar -jcvf "$ARCHIVE_NAME".tar.bz2 "$ARCHIVE_NAME" | |
- name: Upload for linux | |
uses: actions/upload-artifact@v4 | |
with: | |
name: goneovim-linux | |
path: ${{ github.workspace }}/src/github.com/${{ github.repository }}/cmd/goneovim/deploy/${{ env.ARCHIVE_NAME }}.tar.bz2 | |
################################################################# | |
# MacOS x86_64 | |
################################################################# | |
macos-x86_64: | |
needs: [check-new-commit] | |
strategy: | |
matrix: | |
go-version: [1.21.x] | |
platform: [macos-13] | |
runs-on: ${{ matrix.platform }} | |
env: | |
GOPATH: ${{ github.workspace }} | |
QT_HOMEBREW: true | |
QT_API: 5.13.0 | |
QT_DEBUG: false | |
GO111MODULE: on | |
QT_QMAKE_DIR: /usr/local/opt/qt@5/bin | |
steps: | |
- name: Install Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: ${{ matrix.go-version }} | |
- name: Install Qt for macOS | |
run: | | |
brew install qt@5 | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
with: | |
fetch-depth: 0 | |
path: ${{ github.workspace }}/src/github.com/${{ github.repository }} | |
- name: Get Qt binding for Go | |
run: | | |
cd ${{ github.workspace }}/src/github.com/${{ github.repository }} | |
make qt_bindings | |
- name: Get dependencies | |
run: | | |
cd ${{ github.workspace }}/src/github.com/${{ github.repository }} | |
make deps | |
- name: Retrieve version | |
id: version-macos | |
run: | | |
cd ${{ github.workspace }}/src/github.com/${{ github.repository }} | |
echo "::set-output name=GONEOVIM_VERSION::$(git describe --tags)" | |
echo "::set-output name=GONEOVIM_VERSION_HASH::$(git rev-parse HEAD)" | |
- name: Build | |
run: | | |
cd ${{ github.workspace }}/src/github.com/${{ github.repository }} | |
make app | |
- if: github.event_name == 'workflow_dispatch' | |
run: echo "ARCHIVE_NAME=goneovim-macos-x86_64" >> $GITHUB_ENV | |
- if: github.event_name == 'schedule' | |
run: echo "ARCHIVE_NAME=goneovim-macos-x86_64" >> $GITHUB_ENV | |
- if: github.event_name == 'push' | |
run: echo "ARCHIVE_NAME=goneovim-${{ steps.version-macos.outputs.GONEOVIM_VERSION }}-macos-x86_64" >> $GITHUB_ENV | |
- name: Archive | |
run: | | |
cd ${{ github.workspace }}/src/github.com/${{ github.repository }}/cmd/goneovim/deploy | |
mv darwin "$ARCHIVE_NAME" | |
tar -jcvf "$ARCHIVE_NAME".tar.bz2 "$ARCHIVE_NAME" | |
- name: Upload for macos | |
uses: actions/upload-artifact@v4 | |
with: | |
name: goneovim-macos-x86_64 | |
path: ${{ github.workspace }}/src/github.com/${{ github.repository }}/cmd/goneovim/deploy/${{ env.ARCHIVE_NAME }}.tar.bz2 | |
################################################################# | |
# MacOS M1 | |
################################################################# | |
macos-arm64: | |
needs: [check-new-commit] | |
strategy: | |
matrix: | |
go-version: [1.21.x] | |
platform: [macos-14] | |
runs-on: ${{ matrix.platform }} | |
env: | |
GOPATH: ${{ github.workspace }} | |
QT_HOMEBREW: false | |
QT_API: 5.13.0 | |
QT_VERSION: 5.15.12 | |
QT_DIR: ${{ github.workspace }}/Qt | |
QT_STATIC: true | |
QT_DEBUG: false | |
GO111MODULE: on | |
QT_QMAKE_DIR: ${{ github.workspace }}/Qt/bin | |
steps: | |
- name: Install Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: ${{ matrix.go-version }} | |
- name: Download pre built Qt | |
run: | | |
curl -L -o qt-macos-static-5.15.12.tar.bz2 https://github.com/akiyosi/qt-static-builds/releases/download/macOS-arm64/qt-macos-static-5.15.12.tar.bz2 | |
tar xf qt-macos-static-5.15.12.tar.bz2 | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
with: | |
fetch-depth: 0 | |
path: ${{ github.workspace }}/src/github.com/${{ github.repository }} | |
- name: Get Qt binding for Go | |
run: | | |
cd ${{ github.workspace }}/src/github.com/${{ github.repository }} | |
make qt_bindings | |
- name: Get dependencies | |
run: | | |
cd ${{ github.workspace }}/src/github.com/${{ github.repository }} | |
make deps | |
- name: Retrieve version | |
id: version-macos | |
run: | | |
cd ${{ github.workspace }}/src/github.com/${{ github.repository }} | |
echo "::set-output name=GONEOVIM_VERSION::$(git describe --tags)" | |
echo "::set-output name=GONEOVIM_VERSION_HASH::$(git rev-parse HEAD)" | |
- name: Build | |
run: | | |
cd ${{ github.workspace }}/src/github.com/${{ github.repository }} | |
make app | |
- if: github.event_name == 'workflow_dispatch' | |
run: echo "ARCHIVE_NAME=goneovim-macos-arm64" >> $GITHUB_ENV | |
- if: github.event_name == 'schedule' | |
run: echo "ARCHIVE_NAME=goneovim-macos-arm64" >> $GITHUB_ENV | |
- if: github.event_name == 'push' | |
run: echo "ARCHIVE_NAME=goneovim-${{ steps.version-macos.outputs.GONEOVIM_VERSION }}-macos-arm64" >> $GITHUB_ENV | |
- name: Archive | |
run: | | |
cd ${{ github.workspace }}/src/github.com/${{ github.repository }}/cmd/goneovim/deploy | |
mv darwin "$ARCHIVE_NAME" | |
tar -jcvf "$ARCHIVE_NAME".tar.bz2 "$ARCHIVE_NAME" | |
- name: Upload for macos | |
uses: actions/upload-artifact@v4 | |
with: | |
name: goneovim-macos-arm64 | |
path: ${{ github.workspace }}/src/github.com/${{ github.repository }}/cmd/goneovim/deploy/${{ env.ARCHIVE_NAME }}.tar.bz2 | |
################################################################# | |
# Windows | |
################################################################# | |
windows: | |
needs: [check-new-commit] | |
strategy: | |
matrix: | |
go-version: [1.21.0] | |
platform: [windows-latest] | |
runs-on: ${{ matrix.platform }} | |
env: | |
GOPATH: C:\ | |
QT_API: 5.13.0 | |
QT_MSYS2: true | |
QT_MSYS2_DIR: D:\a\_temp\msys64\ | |
QT_MSYS2_STATIC: true | |
QT_MSVC: false | |
QT_DEBUG: false | |
QT_DEBUG_CONSOLE: false | |
GO111MODULE: on | |
CGO_CFLAGS_ALLOW: ".*" | |
CGO_CXXFLAGS_ALLOW: ".*" | |
CGO_LDFLAGS_ALLOW: ".*" | |
# CGO_ENABLED: 1 | |
ACTIONS_ALLOW_UNSECURE_COMMANDS: true | |
steps: | |
- name: Install Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: ${{ matrix.go-version }} | |
- name: Setup MSYS2 and install Qt5 | |
uses: msys2/setup-msys2@v2 | |
with: | |
update: true | |
msystem: mingw64 | |
install: mingw-w64-x86_64-toolchain | |
- shell: msys2 {0} | |
run: | | |
pacman --noconfirm -S sed git make unzip zip mingw-w64-x86_64-qt-creator | |
pacman -Scc | |
pacman -Sc | |
curl -sL --retry 10 --retry-delay 60 -O https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-qt5-static-5.15.13-1-any.pkg.tar.zst | |
pacman -U --noconfirm mingw-w64-x86_64-qt5-static-5.15.13-1-any.pkg.tar.zst | |
# - name: Patch qt5 | |
# shell: msys2 {0} | |
# run: | | |
# curl -sL --retry 10 --retry-delay 60 -O https://github.com/akiyosi/github-actions-playground/releases/download/qt5-patched-qtbug-71737/qt-5.15.5_patched-qtbug71737.zip | |
# unzip qt-5.15.5_patched-qtbug71737.zip | |
# cp -fpR qt5/* /mingw64/qt5-static/ | |
# rm -fr qt5 | |
# rm qt-5.15.5_patched-qtbug71737.zip | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
with: | |
fetch-depth: 0 | |
path: ${{ github.workspace }}\${{ github.repository }} | |
- name: Copy checkout repogitory | |
shell: msys2 {0} | |
run: | | |
mkdir -p /c/${{ github.repository }} | |
ls -l /d/a/goneovim/goneovim/${{ github.repository }} | |
cp -pR /d/a/goneovim/goneovim/${{ github.repository }}/* /c/${{ github.repository }}/ | |
cp -pR /d/a/goneovim/goneovim/${{ github.repository }}/.* /c/${{ github.repository }}/ | |
mkdir -p /c/src/github.com/${{ github.repository }} | |
cp -pR /d/a/goneovim/goneovim/${{ github.repository }}/* /c/src/github.com/${{ github.repository }}/ | |
ls -l /c/${{ github.repository }} | |
ls -l /c/src/github.com/${{ github.repository }} | |
- name: Get Qt binding for Go | |
shell: msys2 {0} | |
run: | | |
export PATH=/c/hostedtoolcache/windows/go/${{ matrix.go-version }}/x64/bin/:$PATH | |
cd /c/${{ github.repository }} | |
make qt_bindings | |
- name: Get dependencies | |
shell: msys2 {0} | |
run: | | |
export PATH=/c/hostedtoolcache/windows/go/${{ matrix.go-version }}/x64/bin/:$PATH | |
cd /c/${{ github.repository }} | |
make deps | |
- name: Retrieve version | |
id: version-windows | |
run: | | |
cd C:\${{ github.repository }} | |
echo "::set-output name=GONEOVIM_VERSION::$(git describe --tags)" | |
- name: Build for windows | |
shell: msys2 {0} | |
run: | | |
export PATH=/c/hostedtoolcache/windows/go/${{ matrix.go-version }}/x64/bin/:$PATH | |
cd /c/${{ github.repository }} | |
make app | |
- if: github.event_name == 'workflow_dispatch' | |
run: echo "ARCHIVE_NAME=goneovim-windows" >> $env:GITHUB_ENV | |
- if: github.event_name == 'schedule' | |
run: echo "ARCHIVE_NAME=goneovim-windows" >> $env:GITHUB_ENV | |
- if: github.event_name == 'push' | |
run: echo "ARCHIVE_NAME=goneovim-${{ steps.version-windows.outputs.GONEOVIM_VERSION }}-windows" >> $env:GITHUB_ENV | |
- name: Archive | |
shell: msys2 {0} | |
run: | | |
cd /c/${{ github.repository }}/cmd/goneovim/deploy | |
mv windows ${{ env.ARCHIVE_NAME }} | |
zip -r ${{ env.ARCHIVE_NAME }}.zip ${{ env.ARCHIVE_NAME }} | |
- name: Upload | |
uses: actions/upload-artifact@v4 | |
with: | |
name: goneovim-windows | |
path: C:/${{ github.repository }}/cmd/goneovim/deploy/${{ env.ARCHIVE_NAME }}.zip | |
# freebsd: | |
# needs: [check-new-commit] | |
# strategy: | |
# matrix: | |
# go-version: [1.21.x] | |
# platform: [macos-latest] | |
# runs-on: ${{ matrix.platform }} | |
# steps: | |
# - name: Checkout code | |
# uses: actions/checkout@v3 | |
# with: | |
# fetch-depth: 0 | |
# | |
# - name: Retrieve version | |
# id: version-freebsd | |
# run: | | |
# echo "::set-output name=GONEOVIM_VERSION::$(git describe --tags)" | |
# echo "::set-output name=GONEOVIM_VERSION_HASH::$(git rev-parse HEAD)" | |
# | |
# - name: Build for freeBSD | |
# uses: cross-platform-actions/action@v0.13.0 | |
# env: | |
# GOPATH: /home/runner/go | |
# QT_PKG_CONFIG: true | |
# QT_API: 5.13.0 | |
# QT_DEBUG: false | |
# QT_STATIC: true | |
# GO111MODULE: on | |
# GOPROXY: https://goproxy.io | |
# CGO_CPPFLAGS: '-O3 -Wno-deprecated' | |
# with: | |
# environment_variables: GOPATH QT_PKG_CONFIG QT_API QT_DEBUG QT_STATIC GO111MODULE GOPROXY | |
# operating_system: freebsd | |
# architecture: x86_64 | |
# version: '13.2' | |
# shell: bash | |
# memory: 12G | |
# cpu_count: 4 | |
# run: | | |
# yes | sudo pkg install git go pkgconf | |
# yes | sudo pkg install devel/qt5 | |
# yes | sudo pkg install gmake | |
# gmake qt_bindings | |
# gmake deps | |
# gmake app | |
# | |
# - if: github.event_name == 'workflow_dispatch' | |
# run: echo "ARCHIVE_NAME=goneovim-freebsd" >> $GITHUB_ENV | |
# - if: github.event_name == 'schedule' | |
# run: echo "ARCHIVE_NAME=goneovim-freebsd" >> $GITHUB_ENV | |
# - if: github.event_name == 'push' | |
# run: echo "ARCHIVE_NAME=goneovim-${{ steps.version-freebsd.outputs.GONEOVIM_VERSION }}-freebsd" >> $GITHUB_ENV | |
# | |
# - name: Archive | |
# run: | | |
# cd cmd/goneovim/deploy | |
# mv freebsd "$ARCHIVE_NAME" | |
# tar -jcvf "$ARCHIVE_NAME".tar.bz2 "$ARCHIVE_NAME" | |
# | |
# - name: Upload | |
# uses: actions/upload-artifact@v4 | |
# with: | |
# name: goneovim-freebsd | |
# path: ${{ github.workspace }}/cmd/goneovim/deploy/${{ env.ARCHIVE_NAME }}.tar.bz2 | |
publish: | |
# needs: [linux, windows, macos, freebsd] | |
needs: [linux, windows, macos-x86_64, macos-arm64] | |
runs-on: ubuntu-20.04 | |
permissions: | |
contents: write | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/download-artifact@v4 | |
- name: Install dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y gettext-base | |
- if: github.event_name == 'workflow_dispatch' | |
run: echo "TAG_NAME=${{ github.event.inputs.tag_name }}" >> $GITHUB_ENV | |
- if: github.event_name == 'schedule' | |
run: echo 'TAG_NAME=nightly' >> $GITHUB_ENV | |
- if: github.event_name == 'push' | |
run: | | |
TAG_NAME=${{ github.ref }} | |
echo "TAG_NAME=${TAG_NAME#refs/tags/}" >> $GITHUB_ENV | |
- if: env.TAG_NAME == 'nightly' | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
(echo 'SUBJECT=Goneovim Nightly build'; | |
echo 'PRERELEASE=--prerelease') >> $GITHUB_ENV | |
gh release delete nightly --yes || true | |
git push origin :nightly || true | |
- if: env.TAG_NAME != 'nightly' | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
(echo "SUBJECT=Goneovim $TAG_NAME"; | |
echo 'PRERELEASE=') >> $GITHUB_ENV | |
- name: Publish | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
gh release create $TAG_NAME $PRERELEASE --title "$SUBJECT" --target $GITHUB_SHA /home/runner/work/goneovim/goneovim/goneovim-macos-x86_64/* /home/runner/work/goneovim/goneovim/goneovim-macos-arm64/* /home/runner/work/goneovim/goneovim/goneovim-linux/* /home/runner/work/goneovim/goneovim/goneovim-windows/* | |