From f1b17f7d2bf03ed798520c3a5f322c0d79f3787c Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Tue, 1 Jun 2021 00:44:49 +0200 Subject: Continuous Integration artifacts are now built only once a day (nightly builds) and include Gtk+ versions * The CI tests are unchanged. The workflow file has been renamed to ci.yml, though. * Nightly builds are described by nightly.yml and are built at 4:13. * Nightly Ubuntu package builds now include the Gtk+ 3 packages. --- .github/workflows/ci.yml | 57 ++++++++++++++ .github/workflows/continuous-integration.yml | 107 --------------------------- .github/workflows/nightly.yml | 58 +++++++++++++++ README | 5 +- 4 files changed, 118 insertions(+), 109 deletions(-) create mode 100644 .github/workflows/ci.yml delete mode 100644 .github/workflows/continuous-integration.yml create mode 100644 .github/workflows/nightly.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..4351a0c --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,57 @@ +name: Continuous Integration + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + strategy: + matrix: + os: [ubuntu-18.04, ubuntu-20.04] + compiler: ['CC=gcc CXX=g++', 'CC=clang CXX=clang++'] + interface: [ncurses, gtk] + + # NOTE: The virtual environments already contain both GCC and Clang + runs-on: ${{ matrix.os }} + + steps: + + - name: Recursive Git Clone + uses: actions/checkout@v2 + with: + submodules: recursive + + - name: Update Repositories + run: sudo apt-get update + - name: Install Build Dependencies + run: > + sudo apt-get install -y + build-essential + autoconf automake libtool + libglib2.0-dev libncurses-dev libgtk-3-dev gob2 xvfb + groff doxygen + + - name: Configure Build + run: | + autoreconf -i + ./configure --with-interface=${{ matrix.interface }} --enable-html-manual ${{ matrix.compiler }} + + # NOTE: xvfb-run emulates an XServer and is required when building + # Gtk versions (since SciTECO calls itself during the build). + - name: make + run: xvfb-run -a make + - name: make install + run: sudo xvfb-run -a make install + - name: Run Test Suite + run: xvfb-run -a make check + - name: Build Developer Documentation + run: cd doc && make devdoc + # FIXME: Will try to perform an out-of-tree build which will not + # work without manual intervention due to Scintilla. +# - name: make distcheck +# run: xvfb-run -a make distcheck + - name: Build Source Tarball + run: make dist diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml deleted file mode 100644 index cbe7837..0000000 --- a/.github/workflows/continuous-integration.yml +++ /dev/null @@ -1,107 +0,0 @@ -name: Continuous Integration - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - build-and-test: - strategy: - matrix: - os: [ubuntu-18.04, ubuntu-20.04] - compiler: ['CC=gcc CXX=g++', 'CC=clang CXX=clang++'] - interface: [ncurses, gtk] - - # NOTE: The virtual environments already contain both GCC and Clang - runs-on: ${{ matrix.os }} - - steps: - - - name: Recursive Git Clone - uses: actions/checkout@v2 - with: - submodules: recursive - - - name: Update Repositories - run: sudo apt-get update - - name: Install Build Dependencies - run: > - sudo apt-get install -y - build-essential - autoconf automake libtool - libglib2.0-dev libncurses-dev libgtk-3-dev gob2 xvfb - groff doxygen - - - name: Configure Build - run: | - autoreconf -i - ./configure --with-interface=${{ matrix.interface }} --enable-html-manual ${{ matrix.compiler }} - - # NOTE: xvfb-run emulates an XServer and is required when building - # Gtk versions (since SciTECO calls itself during the build). - - name: make - run: xvfb-run -a make - - name: make install - run: sudo xvfb-run -a make install - - name: Run Test Suite - run: xvfb-run -a make check - - name: Build Developer Documentation - run: cd doc && make devdoc - # FIXME: Will try to perform an out-of-tree build which will not - # work without manual intervention due to Scintilla. -# - name: make distcheck -# run: xvfb-run -a make distcheck - - name: Build Source Tarball - run: make dist - - # This is a separate job since we don't need to build Debian packages - # using Clang and there is no need to run "make all". - debian-packages: - strategy: - matrix: - os: [ubuntu-18.04, ubuntu-20.04] - - runs-on: ${{ matrix.os }} - - steps: - - - name: Recursive Git Clone - uses: actions/checkout@v2 - with: - submodules: recursive - - - name: Update Repositories - run: sudo apt-get update - - name: Install Build Dependencies - run: > - sudo apt-get install -y - devscripts build-essential lintian debhelper - autoconf automake libtool - libglib2.0-dev libncurses-dev - groff-base - - # NOTE: We need to configure the build directory only to generate distribute.mk. - - name: Configure Build - run: | - autoreconf -i - ./configure - - # NOTE: Packages are left in debian-temp/. - - name: Build Debian Package - run: ./distribute.mk debian-binary - # FIXME: For doing Windows builds, we need a few manually built packages - # (PDCurses, Glib...). - # Perhaps they can be uploaded to Sourceforge and simply downloaded here. - # Alternatively, we could manually prepare a Docker container image or - # even build them from scratch here. -# - name: Build Windows Bundle -# run: ./distribute.mk mingw-binary - - # NOTE: There is no way to prevent Github zipping the artifact. - - name: Archive Debian Package (ncurses) - uses: actions/upload-artifact@v2 - with: - name: ${{ matrix.os }} package (ncurses) - path: debian-temp/*.deb diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml new file mode 100644 index 0000000..6795c67 --- /dev/null +++ b/.github/workflows/nightly.yml @@ -0,0 +1,58 @@ +name: Nightly Builds + +on: + schedule: + # Daily at 3:14 + - cron: '14 3 * * *' + +jobs: + debian-packages: + strategy: + matrix: + os: [ubuntu-18.04, ubuntu-20.04] + + runs-on: ${{ matrix.os }} + + steps: + + - name: Recursive Git Clone + uses: actions/checkout@v2 + with: + submodules: recursive + + - name: Update Repositories + run: sudo apt-get update + - name: Install Build Dependencies + run: > + sudo apt-get install -y + devscripts build-essential lintian debhelper dh-exec + autoconf automake libtool + libglib2.0-dev libncurses-dev libgtk-3-dev gob2 xvfb + groff-base + + # NOTE: We need to configure the build directory only to generate distribute.mk. + - name: Configure Build + run: | + autoreconf -i + ./configure + + # NOTE: The debian package build rules already use xvfb-run to emulate an XServer + # when necessary since the PPA build servers might also be headless. + # NOTE: Packages are left in debian-temp/. + - name: Build Debian/Ubuntu Packages + run: ./distribute.mk debian-binary + + # FIXME: For doing Windows builds, we need a few manually built packages + # (PDCurses, Glib...). + # Perhaps they can be uploaded to Sourceforge and simply downloaded here. + # Alternatively, we could manually prepare a Docker container image or + # even build them from scratch here. +# - name: Build Windows Bundle +# run: ./distribute.mk mingw-binary + + # NOTE: There is no way to prevent Github from zipping the artifact. + - name: Archive Debian/Ubuntu Packages + uses: actions/upload-artifact@v2 + with: + name: ${{ matrix.os }} packages (ncurses and GTK+ 3) + path: debian-temp/*.deb diff --git a/README b/README index 6b40434..03f6902 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -[![Continuous Integration](https://github.com/rhaberkorn/sciteco/actions/workflows/continuous-integration.yml/badge.svg)](https://github.com/rhaberkorn/sciteco/actions/workflows/continuous-integration.yml) +[![Continuous Integration](https://github.com/rhaberkorn/sciteco/actions/workflows/ci.yml/badge.svg)](https://github.com/rhaberkorn/sciteco/actions/workflows/ci.yml) [![Nightly Builds](https://github.com/rhaberkorn/sciteco/actions/workflows/nightly.yml/badge.svg)](https://github.com/rhaberkorn/sciteco/actions/workflows/nightly.yml) Overview ======== @@ -115,8 +115,9 @@ There are prebuilt binary packages and source bundles for your convenience: * The official [SciTECO homepage](http://sciteco.sf.net/) is a live demo. These releases may be quite outdated, so you may also give a try to the -[nightly Ubuntu packages](https://nightly.link/rhaberkorn/sciteco/workflows/continuous-integration/master) - +[nightly Ubuntu packages](https://nightly.link/rhaberkorn/sciteco/workflows/nightly/master) - they represent the repository's HEAD commit but may well be instable. +Both ncurses and Gtk+ packages are provided. If everything fails, you can try building from source. See [`INSTALL`](INSTALL) for more details. -- cgit v1.2.3