Skip to content

Commit

Permalink
Ticket #4170: implement CI via GitHub Actions
Browse files Browse the repository at this point in the history
Signed-off-by: Yury V. Zaytsev <[email protected]>
  • Loading branch information
zyv committed Oct 20, 2024
1 parent b46e813 commit 620f565
Show file tree
Hide file tree
Showing 5 changed files with 279 additions and 0 deletions.
44 changes: 44 additions & 0 deletions .github/workflows/ci-alpine.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: ci-alpine

on: [ push, pull_request ]

jobs:
build-alpine:
runs-on: ubuntu-latest
container:
image: alpine:latest
timeout-minutes: 5
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository

steps:
- uses: actions/checkout@v4

- name: Install dependencies
run: |
apk add autoconf automake build-base libtool pkgconf sudo
apk add aspell-dev check-dev e2fsprogs-dev gettext-dev glib-dev gpm-dev libssh2-dev perl slang-dev
- name: Bootstrap build system
run: ./autogen.sh

- name: Build default configuration
run: |
# Tests must be run as a non-root user
adduser --home "$(pwd)" --no-create-home --disabled-password test
chown test -R "$(pwd)"
sudo -u test -i \
./configure \
--prefix="$(pwd)/install-prefix" \
--enable-mclib \
--enable-aspell
sudo -u test -i make -j$(nproc)
sudo -u test -i make check
sudo -u test -i make install
- uses: actions/upload-artifact@v4
if: failure()
with:
name: test-suite-logs-alpine
path: ./**/test-suite.log
47 changes: 47 additions & 0 deletions .github/workflows/ci-fedora.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: ci-fedora

on: [ push, pull_request ]

jobs:
build-fedora:
runs-on: ubuntu-latest
container:
image: fedora:latest
timeout-minutes: 5
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository

steps:
- uses: actions/checkout@v4

- name: Install dependencies
run: |
dnf install -y autoconf automake gcc gettext-devel libtool make pkgconfig
dnf install -y aspell-devel check-devel gpm-devel libX11-devel "pkgconfig(ext2fs)" "pkgconfig(glib-2.0)" "pkgconfig(gmodule-2.0)" "pkgconfig(libssh2)" "pkgconfig(slang)"
# For tests
dnf install -y glibc-gconv-extra
- name: Bootstrap build system
run: ./autogen.sh

- name: Build default configuration
run: |
# Tests must be run as a non-root user
useradd --home "$(pwd)" test
chown test -R "$(pwd)"
sudo -u test -i \
./configure \
--prefix="$(pwd)/install-prefix" \
--enable-mclib \
--enable-aspell
sudo -u test -i make -j$(nproc)
sudo -u test -i make check
sudo -u test -i make install
- uses: actions/upload-artifact@v4
if: failure()
with:
name: test-suite-logs-fedora
path: ./**/test-suite.log
42 changes: 42 additions & 0 deletions .github/workflows/ci-macos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: ci-macos

on: [ push, pull_request ]

jobs:
build-macos:
runs-on: macos-latest
timeout-minutes: 5
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository

env:
CFLAGS: -Wno-assign-enum

steps:
- uses: actions/checkout@v4

- name: Install dependencies
run: |
brew install autoconf automake gettext check gnu-indent libtool pkg-config
brew install aspell e2fsprogs glib libssh2 openssl s-lang
# unzip is part of the base system
- name: Bootstrap build system
run: ./autogen.sh

- name: Build default configuration
run: |
./configure \
--prefix="$(pwd)/install-prefix" \
--enable-mclib \
--enable-aspell=/opt/homebrew
make -j$(sysctl -n hw.logicalcpu)
make check
make install
- uses: actions/upload-artifact@v4
if: failure()
with:
name: test-suite-logs-macos
path: ./**/test-suite.log
46 changes: 46 additions & 0 deletions .github/workflows/ci-solaris.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: ci-solaris

on: [ push ]

jobs:
build-solaris:
runs-on: ubuntu-latest
timeout-minutes: 15
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository

steps:
- uses: actions/checkout@v4

- name: Build on Solaris
uses: vmactions/solaris-vm@v1
with:
release: "11.4-gcc" # autoconf automake developer/gcc/gcc-c libtool pkg-config
prepare: |
pkg install --no-backup-be --no-refresh --accept -v \
aspell check glib2 libssh2 libx11
run: |
./autogen.sh
useradd -d "$(pwd)" test
chown test -R $(pwd)
su - test -c ' \
export PKG_CONFIG_PATH=/usr/lib/64/pkgconfig \
\
./configure \
--prefix="$(pwd)/install-prefix" \
--with-screen=ncurses \
--enable-mclib \
--enable-aspell && \
\
make && \
make check && \
make install \
'
- uses: actions/upload-artifact@v4
if: failure()
with:
name: test-suite-logs-solaris
path: ./**/test-suite.log
100 changes: 100 additions & 0 deletions .github/workflows/ci-ubuntu.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
name: ci-ubuntu

on: [ push, pull_request ]

jobs:
build-ubuntu:
runs-on: ubuntu-latest
timeout-minutes: 10
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository

steps:
- uses: actions/checkout@v4

- name: Install dependencies
run: |
sudo apt-get install -y autoconf autopoint check gettext indent libtool pkg-config
sudo apt-get install -y e2fslibs-dev libaspell-dev libglib2.0-dev libgpm-dev libncurses5-dev libpcre2-dev libslang2-dev libssh2-1-dev libx11-dev unzip
- name: Bootstrap build system
run: ./autogen.sh

- name: Build distribution archive
run: |
mkdir -p build-distrib && cd $_
../configure
make dist-bzip2
- name: Build full configuration
run: |
tar -xjf $(ls build-distrib/mc-*.tar.bz2) --one-top-level=build-full
cd build-full
../configure \
--prefix="$(pwd)/install" \
--enable-mclib \
--enable-aspell \
--enable-vfs-undelfs \
--enable-werror
make indent
# TODO: exit 1
git ls-files --modified
make -j$(nproc)
make check
make install
- name: Build ncurses & pcre2 configuration
run: |
tar -xjf $(ls build-distrib/mc-*.tar.bz2) --one-top-level=build-ncurses
cd build-ncurses
../configure \
--prefix="$(pwd)/install" \
--with-screen=ncurses \
--with-search-engine=pcre2 \
--enable-werror
make -j$(nproc)
make check
- name: Build minimal configuration
run: |
tar -xjf $(ls build-distrib/mc-*.tar.bz2) --one-top-level=build-minimal
cd build-minimal
../configure \
--prefix="$(pwd)/install" \
--disable-shared \
--disable-static \
--disable-maintainer-mode \
--disable-largefile \
--disable-nls \
--disable-rpath \
--disable-charset \
--disable-mclib \
--disable-assert \
--disable-aspell \
--disable-background \
--disable-vfs \
--disable-doxygen-doc \
--without-x \
--without-gpm-mouse \
--without-internal-edit \
--without-diff-viewer \
--without-subshell \
--enable-tests \
--enable-werror
make -j$(nproc)
make check
- uses: actions/upload-artifact@v4
if: failure()
with:
name: test-suite-logs-ubuntu
path: build-*/**/test-suite.log

0 comments on commit 620f565

Please sign in to comment.