.github/workflows/upstream.yml
name: upstream
concurrency:
group: "${{github.workflow}}-${{github.ref}}"
cancel-in-progress: true
on:
workflow_dispatch:
schedule:
- cron: "0 8 * * 1,3,5" # At 08:00 on Monday, Wednesday, and Friday # https://crontab.guru/#0_8_*_*_1,3,5
pull_request:
types: [opened, synchronize]
branches:
- '*'
paths:
- .github/workflows/upstream.yml # this file
jobs:
xmlsoft-head:
strategy:
fail-fast: false
matrix:
plat: ["ubuntu", "windows", "macos"]
runs-on: ${{matrix.plat}}-latest
steps:
- name: configure git crlf
if: matrix.plat == 'windows'
run: |
git config --system core.autocrlf false
git config --system core.eol lf
- uses: actions/checkout@v4
with:
submodules: true
- uses: ruby/setup-ruby-pkgs@v1
with:
ruby-version: "3.3"
apt-get: "autogen libtool shtool"
brew: "automake autogen libtool shtool"
mingw: "autotools xz"
bundler-cache: true
bundler: latest
- name: Setup libxml2
env:
NOCONFIGURE: t
shell: bash
run: |
git clone --depth=1 https://gitlab.gnome.org/GNOME/libxml2
cd libxml2
git log -n1
./autogen.sh
- name: Setup libxslt
env:
NOCONFIGURE: t
shell: bash
run: |
git clone --depth=1 https://gitlab.gnome.org/GNOME/libxslt
cd libxslt
git log -n1
./autogen.sh
- name: "Compile against libxml2 and libxslt source directories"
shell: bash
run: "bundle exec rake compile -- --with-xml2-source-dir=${GITHUB_WORKSPACE}/libxml2 --with-xslt-source-dir=${GITHUB_WORKSPACE}/libxslt"
- run: "bundle exec rake test"
xmlsoft-head-valgrind:
runs-on: ubuntu-latest
container:
image: ghcr.io/sparklemotion/nokogiri-test:mri-3.3
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Setup libxml2
env:
NOCONFIGURE: t
run: |
git clone --depth=1 https://gitlab.gnome.org/GNOME/libxml2
cd libxml2
git log -n1
./autogen.sh
- name: Setup libxslt
env:
NOCONFIGURE: t
run: |
git clone --depth=1 https://gitlab.gnome.org/GNOME/libxslt
cd libxslt
git log -n1
./autogen.sh
- name: "Run bundle install"
run: "bundle install --local || bundle install"
- name: "Compile against libxml2 and libxslt source directories"
run: "bundle exec rake compile -- --with-xml2-source-dir=${GITHUB_WORKSPACE}/libxml2 --with-xslt-source-dir=${GITHUB_WORKSPACE}/libxslt"
- run: "bundle exec rake test:valgrind"
- run: "bundle exec rake test:memcheck"
ruby-head:
strategy:
fail-fast: false
matrix:
plat: ["ubuntu", "windows", "macos"]
sys: ["enable", "disable"]
runs-on: ${{matrix.plat}}-latest
steps:
- name: configure git crlf
if: matrix.plat == 'windows'
run: |
git config --system core.autocrlf false
git config --system core.eol lf
- uses: actions/checkout@v4
with:
submodules: true
- uses: ruby/setup-ruby-pkgs@v1
with:
ruby-version: "head"
apt-get: "libxml2-dev libxslt1-dev pkg-config"
mingw: "_upgrade_ libxml2 libxslt pkgconf"
bundler-cache: true
bundler: latest
- uses: actions/cache@v4
if: matrix.sys == 'disable'
with:
path: ports
key: ports-${{matrix.plat}}-${{hashFiles('dependencies.yml', 'patches/**/*.patch', 'ext/nokogiri/extconf.rb')}}
- run: bundle exec rake compile -- --${{matrix.sys}}-system-libraries
- run: bundle exec rake test
ruby-head-valgrind:
strategy:
fail-fast: false
matrix:
sys: ["disable"]
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: ruby/setup-ruby-pkgs@v1
with:
ruby-version: "head"
apt-get: "libxml2-dev libxslt1-dev pkg-config valgrind"
bundler-cache: true
bundler: latest
- uses: actions/cache@v4
if: matrix.sys == 'disable'
with:
path: ports
key: ports-ubuntu-head-${{hashFiles('dependencies.yml', 'patches/**/*.patch', 'ext/nokogiri/extconf.rb')}}
- run: bundle exec rake compile -- --${{matrix.sys}}-system-libraries
- run: bundle exec rake test:valgrind
- run: bundle exec rake test:memcheck
truffleruby-head:
strategy:
fail-fast: false
matrix:
flags:
- "--disable-system-libraries --disable-static"
- "--disable-system-libraries --enable-static"
- "--enable-system-libraries"
include:
- flags: "--enable-system-libraries"
apt_packages: "libxml2-dev libxslt1-dev pkg-config"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: ruby/setup-ruby-pkgs@v1
with:
ruby-version: truffleruby-head
bundler-cache: true
bundler: 2.5.10
apt-get: ${{ matrix.apt_packages }}
- uses: actions/cache@v4
with:
path: ports/archives
key: tarballs-ubuntu-${{hashFiles('dependencies.yml', 'patches/**/*.patch')}}
- run: bundle exec rake compile -- ${{matrix.flags}}
- run: bundle exec rake test
jruby-head:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: ruby/setup-ruby@v1
with:
ruby-version: "jruby-head"
bundler-cache: true
bundler: latest
- run: bundle exec rake compile
- run: bundle exec rake test
html5lib-tests:
runs-on: ubuntu-latest
container:
image: ghcr.io/sparklemotion/nokogiri-test:mri-3.3
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: actions/cache@v4
with:
path: ports
key: ports-ubuntu-3.3-${{hashFiles('dependencies.yml', 'patches/**/*.patch', 'ext/nokogiri/extconf.rb')}}
- name: Update html5lib-tests
run: |
cd test/html5lib-tests
git remote update origin
git checkout origin/master
git log --pretty=oneline -n1
- run: bundle install --local || bundle install
- run: bundle exec rake compile -- --disable-system-libraries
- run: bundle exec rake test