lite-xl/.github/workflows/build.yml

278 lines
8.6 KiB
YAML

name: CI
on:
push:
branches:
- '*'
# Temporarily disabled
#tags:
#- 'v[0-9]*'
pull_request:
branches:
- '*'
jobs:
# Note: not using git-archive(-all) because it can't include subprojects ignored by git
archive_source_code:
name: Source Code Tarball
runs-on: ubuntu-18.04
# Only on tags/releases
if: startsWith(github.ref, 'refs/tags/')
steps:
- name: Set Environment Variables
run: echo "INSTALL_NAME=lite-xl-${GITHUB_REF##*/}-src" >> "$GITHUB_ENV"
- uses: actions/checkout@v2
- name: Python Setup
uses: actions/setup-python@v2
with:
python-version: 3.6
- name: Install Dependencies
run: |
sudo apt-get install -qq ninja-build
pip3 install meson
- name: Archive source code
shell: bash
run: bash scripts/source-package.sh --destdir "${INSTALL_NAME}"
- uses: actions/upload-artifact@v2
with:
name: Source Code Tarball
path: ${{ env.INSTALL_NAME }}.tar.gz
# All builds use lhelper only for releases, using --static build argument,
# otherwise for normal builds dependencies are dynamically linked.
build_linux:
name: Linux
runs-on: ubuntu-18.04
strategy:
matrix:
config:
- { name: "GCC", cc: gcc, cxx: g++ }
- { name: "clang", cc: clang, cxx: clang++ }
env:
CC: ${{ matrix.config.cc }}
CXX: ${{ matrix.config.cxx }}
steps:
- name: Set Archive Name
if: ${{ matrix.config.cc == 'gcc' }}
run: |
echo "INSTALL_REF=${GITHUB_REF##*/}" >> "$GITHUB_ENV"
echo "INSTALL_NAME=lite-xl-${GITHUB_REF##*/}-linux" >> "$GITHUB_ENV"
- uses: actions/checkout@v2
- name: Python Setup
uses: actions/setup-python@v2
with:
python-version: 3.6
- name: Update Packages
run: sudo apt-get update
- name: Install Meson
run: |
sudo apt-get install -qq ninja-build
pip3 install meson
- name: Install Dependencies
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
run: sudo apt-get install -qq libsdl2-dev libfreetype6
- name: Build
if: ${{ matrix.config.cc == 'gcc' && !startsWith(github.ref, 'refs/tags/') }}
run: bash scripts/build.sh --prefix /
- name: Release Build
if: ${{ matrix.config.cc == 'gcc' && startsWith(github.ref, 'refs/tags/') }}
run: bash scripts/build.sh --prefix / --static
- name: Package
if: ${{ matrix.config.cc == 'gcc' }}
run: |
DESTDIR="$(pwd)/$INSTALL_NAME" meson install --skip-subprojects -C build
tar czvf "${INSTALL_NAME}".tar.gz "${INSTALL_NAME}"
- name: AppImage
if: ${{ matrix.config.cc == 'gcc' && startsWith(github.ref, 'refs/tags/') }}
run: bash scripts/appimage.sh --nobuild --static --version ${{ env.INSTALL_REF }}
- name: Upload Artifacts
uses: actions/upload-artifact@v2
if: ${{ matrix.config.cc == 'gcc' }}
with:
name: Linux Artifacts
path: |
${{ env.INSTALL_NAME }}.tar.gz
LiteXL-${{ env.INSTALL_REF }}-x86_64.AppImage
build_macos:
name: macOS (x86_64)
runs-on: macos-10.15
env:
CC: clang
CXX: clang++
steps:
- name: System Information
run: |
system_profiler SPSoftwareDataType
gcc -v
xcodebuild -version
- name: Set Archive Name
run: |
echo "INSTALL_NAME=lite-xl-${GITHUB_REF##*/}-macos" >> "$GITHUB_ENV"
bash --version
- uses: actions/checkout@v2
- name: Python Setup
uses: actions/setup-python@v2
with:
python-version: 3.9
- name: Install Build Tools
run: |
brew install ninja
pip3 install meson
cd ~; npm install appdmg; cd -
~/node_modules/appdmg/bin/appdmg.js --version
- name: Install Dependencies
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
run: brew install sdl2
- name: Install LHelper Dependencies
if: ${{ startsWith(github.ref, 'refs/tags/') }}
run: brew install bash md5sha1sum
- name: Build
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
run: bash scripts/build.sh --prefix "${GITHUB_WORKSPACE}/Lite XL.app"
- name: Release Build
if: ${{ startsWith(github.ref, 'refs/tags/') }}
run: |
bash --version
bash scripts/build.sh --prefix "${GITHUB_WORKSPACE}/Lite XL.app" --static
- name: Error Logs
if: failure()
run: |
mkdir ${INSTALL_NAME}
cp /usr/var/lhenv/lite-xl/logs/* ${INSTALL_NAME}
tar czvf ${INSTALL_NAME}.tar.gz ${INSTALL_NAME}
- name: Install
run: meson install --skip-subprojects -C build
- name: Create DMG Image
run: bash scripts/appdmg.sh ${{ env.INSTALL_NAME }}
- name: Upload DMG Image
uses: actions/upload-artifact@v2
with:
name: macOS DMG Image
path: ${{ env.INSTALL_NAME }}.dmg
- name: Upload Error Logs
uses: actions/upload-artifact@v2
if: failure()
with:
name: Error Logs
path: ${{ env.INSTALL_NAME }}.tar.gz
build_windows_msys2:
name: Windows
runs-on: windows-2019
strategy:
matrix:
msystem: [MINGW32, MINGW64]
defaults:
run:
shell: msys2 {0}
steps:
- uses: actions/checkout@v2
- uses: msys2/setup-msys2@v2
with:
#msystem: MINGW64
msystem: ${{ matrix.msystem }}
update: true
install: >-
base-devel
git
zip
- name: Set Environment Variables
run: echo "INSTALL_NAME=lite-xl-${GITHUB_REF##*/}-$(echo $MSYSTEM | awk '{print tolower($0)}')" >> "$GITHUB_ENV"
- name: Install Dependencies
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
run: |
pacman --noconfirm -S \
${MINGW_PACKAGE_PREFIX}-gcc \
${MINGW_PACKAGE_PREFIX}-meson \
${MINGW_PACKAGE_PREFIX}-ninja \
${MINGW_PACKAGE_PREFIX}-pkg-config \
${MINGW_PACKAGE_PREFIX}-freetype \
${MINGW_PACKAGE_PREFIX}-pcre2 \
${MINGW_PACKAGE_PREFIX}-SDL2
- name: Install Release Dependencies
if: ${{ startsWith(github.ref, 'refs/tags/') }}
run: |
pacman --noconfirm -S \
${MINGW_PACKAGE_PREFIX}-gcc \
${MINGW_PACKAGE_PREFIX}-meson \
${MINGW_PACKAGE_PREFIX}-ninja \
${MINGW_PACKAGE_PREFIX}-pkg-config
- name: Build
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
run: bash scripts/build.sh --prefix /
- name: Release Build
if: ${{ startsWith(github.ref, 'refs/tags/') }}
run: |
bash --version
bash scripts/build.sh --prefix / --static
- name: Error Logs
if: failure()
run: |
mkdir ${INSTALL_NAME}
cp /usr/var/lhenv/lite-xl/logs/* ${INSTALL_NAME}
tar czvf ${INSTALL_NAME}.tar.gz ${INSTALL_NAME}
- name: Package
run: bash scripts/msys2-package.sh --destdir ${INSTALL_NAME}
- name: Build Installer
if: ${{ startsWith(github.ref, 'refs/tags/') }}
run: bash scripts/innosetup/innosetup.sh
- name: Upload Artifacts
uses: actions/upload-artifact@v2
with:
name: Windows Artifacts
path: |
LiteXL*.exe
${{ env.INSTALL_NAME }}.zip
- name: Upload Error Logs
uses: actions/upload-artifact@v2
if: failure()
with:
name: Error Logs
path: ${{ env.INSTALL_NAME }}.tar.gz
deploy:
name: Deployment
runs-on: ubuntu-18.04
# Temporarily disabled
if: false
#if: startsWith(github.ref, 'refs/tags/')
needs:
- archive_source_code
- build_linux
- build_macos
- build_windows_msys2
steps:
- name: Set Environment Variables
run: echo "INSTALL_REF=${GITHUB_REF##*/}" >> "$GITHUB_ENV"
- uses: actions/download-artifact@v2
with:
name: Linux Artifacts
- uses: actions/download-artifact@v2
with:
name: macOS DMG Image
- uses: actions/download-artifact@v2
with:
name: Source Code Tarball
- uses: actions/download-artifact@v2
with:
name: Windows Artifacts
- name: Display File Information
shell: bash
run: ls -lR
# Note: not using `actions/create-release@v1`
# because it cannot update an existing release
# see https://github.com/actions/create-release/issues/29
- uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ env.INSTALL_REF }}
name: Release ${{ env.INSTALL_REF }}
draft: false
prerelease: false
files: |
lite-xl-${{ env.INSTALL_REF }}-*
LiteXL*.AppImage
LiteXL*.exe