aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows')
-rw-r--r--.github/workflows/ci.yml275
-rw-r--r--.github/workflows/commit-validation.yml38
-rw-r--r--.github/workflows/format-validation.yml88
-rw-r--r--.github/workflows/lint.yml33
-rw-r--r--.github/workflows/nightly.yml91
-rw-r--r--.github/workflows/release-candidate.yml83
6 files changed, 0 insertions, 608 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
deleted file mode 100644
index 3b8a72efa..000000000
--- a/.github/workflows/ci.yml
+++ /dev/null
@@ -1,275 +0,0 @@
-name: CI tests
-
-on:
- push:
- branches:
- - '*'
- - '!rc/*'
- paths-ignore:
- - 'doc/**'
- - 'MANUAL.txt'
- - '*.md'
- - 'RELEASE_CHECKLIST'
- - 'BUGS'
- - 'changelog'
- - 'README.template'
- - 'appveyor.yml'
- - 'tools/**'
- - 'linux/**'
- - 'macos/**'
- - 'windows/**'
- - 'man/**'
- pull_request:
- paths-ignore:
- - 'doc/**'
- - 'MANUAL.txt'
- - '*.md'
- - 'RELEASE_CHECKLIST'
- - 'BUGS'
- - 'changelog'
- - 'README.template'
- - 'appveyor.yml'
- - 'tools/**'
- - 'linux/**'
- - 'macos/**'
- - 'windows/**'
- - 'man/**'
-
-jobs:
- linux:
-
- runs-on: ubuntu-18.04
- strategy:
- fail-fast: true
- matrix:
- versions:
- - ghc: '8.0.2'
- cabal: '2.4'
- prefix: 'v2-'
- cabalopts: ''
- testopts: ''
- - ghc: '8.2.2'
- cabal: '2.4'
- prefix: 'v2-'
- cabalopts: ''
- testopts: ''
- - ghc: '8.4.4'
- cabal: '2.4'
- prefix: 'v2-'
- cabalopts: '-f-embed_data_files'
- testopts: ''
- - ghc: '8.6.5'
- cabal: '3.2'
- prefix: ''
- cabalopts: ''
- testopts: '--test-option=--hide-successes'
- - ghc: '8.8.4'
- cabal: '3.2'
- prefix: ''
- cabalopts: ''
- testopts: '--test-option=--hide-successes'
- - ghc: '8.10.4'
- cabal: '3.2'
- prefix: ''
- cabalopts: '-ftrypandoc'
- testopts: '--test-option=--hide-successes'
- - ghc: '9.0.1'
- cabal: '3.4'
- prefix: ''
- cabalopts: ''
- testopts: '--test-option=--hide-successes'
- steps:
- - uses: actions/checkout@v2
-
- # needed by memory
- - name: Install numa
- run: sudo apt-get install libnuma-dev
-
- # need to install older cabal/ghc versions from ppa repository
-
- - name: Install recent cabal/ghc
- uses: haskell/actions/setup@v1
- with:
- ghc-version: ${{ matrix.versions.ghc }}
- cabal-version: ${{ matrix.versions.cabal }}
-
- # declare/restore cached things
- # caching doesn't work for scheduled runs yet
- # https://github.com/actions/cache/issues/63
-
- - name: Cache cabal global package db
- id: cabal-global
- uses: actions/cache@v2
- with:
- path: |
- ~/.cabal
- key: ${{ runner.os }}-${{ matrix.versions.ghc }}-${{ matrix.versions.cabal }}-cabal-global-${{ hashFiles('cabal.project') }}
-
- - name: Cache cabal work
- id: cabal-local
- uses: actions/cache@v2
- with:
- path: |
- dist-newstyle
- key: ${{ runner.os }}-${{ matrix.versions.ghc }}-${{ matrix.versions.cabal }}-cabal-local
-
- - name: Install dependencies
- run: |
- cabal ${{ matrix.versions.prefix }}update
- cabal ${{ matrix.versions.prefix }}build ${{ matrix.versions.cabalopts }} --dependencies-only --enable-tests --disable-optimization
-
- - name: Build and test
- run: |
- cabal ${{ matrix.versions.prefix }}build ${{ matrix.versions.cabalopts }} --enable-tests --disable-optimization 2>&1 | tee build.log
- # fail if warnings in local build
- ! grep -q ": *[Ww]arning:" build.log || exit 1
- cabal ${{ matrix.versions.prefix }}test ${{ matrix.versions.cabalopts }} --disable-optimization ${{ matrix.versions.testopts }}
-
- windows:
-
- runs-on: windows-2019
-
- steps:
- - uses: actions/checkout@v2
-
- # We should have ghc 8.10, cabal, stack pre-installed
- # - uses: haskell/actions/setup@v1
- # with:
- # enable-stack: true
- # stack-version: 'latest'
-
- # declare/restore cached things
- # caching doesn't work for scheduled runs yet
- # https://github.com/actions/cache/issues/63
-
- - name: Cache stack global package db
- id: stack-global-package-db
- uses: actions/cache@v2
- with:
- path: |
- C:\Users\runneradmin\AppData\Roaming\stack\
- key: ${{ runner.os }}-appdata-roaming-stack-${{ hashFiles('stack.yaml') }}
-
- # stack's local package dbs for the project and each package
- # - name: Cache .stack-work
- # uses: actions/cache@v1
- # with:
- # path: .stack-work
- # key: ${{ runner.os }}-stack-work-${{ hashFiles('stack.yaml') }}
- # restore-keys: ${{ runner.os }}-stack-work
-
- - name: Install dependencies
- run: |
- stack update
- stack install happy
- stack test --dependencies-only --fast
- - name: Build and test
- shell: cmd
- run: |
- stack test --fast --test-arguments=--hide-successes
-
- macos:
-
- runs-on: macOS-10.15
- strategy:
- fail-fast: true
- matrix:
- versions:
- - ghc: '8.8.4'
- cabal: '3.2'
-
- steps:
- - uses: actions/checkout@v2
-
- - name: Install recent cabal/ghc
- uses: haskell/actions/setup@v1
- with:
- ghc-version: ${{ matrix.versions.ghc }}
- cabal-version: ${{ matrix.versions.cabal }}
-
- # declare/restore cached things
- # caching doesn't work for scheduled runs yet
- # https://github.com/actions/cache/issues/63
-
- - name: Cache cabal global package db
- id: cabal-global
- uses: actions/cache@v2
- with:
- path: |
- ~/.cabal
- key: ${{ runner.os }}-${{ matrix.versions.ghc }}-${{ matrix.versions.cabal }}-cabal-global-${{ hashFiles('cabal.project') }}
-
- - name: Cache cabal work
- id: cabal-local
- uses: actions/cache@v2
- with:
- path: |
- dist-newstyle
- key: ${{ runner.os }}-${{ matrix.versions.ghc }}-${{ matrix.versions.cabal }}-cabal-local
-
- - name: Install dependencies
- run: |
- cabal v2-update
- cabal v2-build --dependencies-only --enable-tests --disable-optimization
- - name: Build and test
- run: |
- cabal v2-build --enable-tests --disable-optimization 2>&1 | tee build.log
- # fail if warnings in local build
- ! grep -q ": *[Ww]arning:" build.log || exit 1
- cabal v2-test --disable-optimization
-
- benchmark:
-
- runs-on: ubuntu-18.04
- strategy:
- fail-fast: true
- matrix:
- versions:
- - ghc: '8.8.4'
- cabal: '3.2'
- - ghc: '8.10.2'
- cabal: '3.2'
- steps:
- - uses: actions/checkout@v2
-
- # need to install older cabal/ghc versions from ppa repository
-
- - name: Install recent cabal/ghc
- uses: haskell/actions/setup@v1
- with:
- ghc-version: ${{ matrix.versions.ghc }}
- cabal-version: ${{ matrix.versions.cabal }}
-
- # declare/restore cached things
- # caching doesn't work for scheduled runs yet
- # https://github.com/actions/cache/issues/63
-
- - name: Cache cabal global package db
- id: cabal-global
- uses: actions/cache@v2
- with:
- path: |
- ~/.cabal
- key: benchmark-${{ runner.os }}-${{ matrix.versions.ghc }}-${{ matrix.versions.cabal }}-cabal-global-${{ hashFiles('cabal.project') }}
-
- - name: Cache cabal work
- id: cabal-local
- uses: actions/cache@v2
- with:
- path: |
- dist-newstyle
- key: benchmark-${{ runner.os }}-${{ matrix.versions.ghc }}-${{ matrix.versions.cabal }}-cabal-local
-
- - name: Install dependencies
- run: |
- v2=$([ "${{ matrix.versions.cabal }}" = "2.2" ] && printf 'new' || printf 'v2')
- cabal $v2-update
- cabal $v2-build --dependencies-only --enable-optimization=1 --enable-benchmarks --disable-tests
-
- - name: Build and test
- run: |
- v2=$([ "${{ matrix.versions.cabal }}" = "2.2" ] && printf 'new' || printf 'v2')
- cabal $v2-build --enable-optimization=1 --enable-benchmarks --disable-tests 2>&1 | tee build.log
- # fail if warnings in local build
- ! grep -q ": *[Ww]arning:" build.log || exit 1
- cabal $v2-bench --enable-optimization=1 --benchmark-options='--timeout=6 +RTS -T -RTS'
diff --git a/.github/workflows/commit-validation.yml b/.github/workflows/commit-validation.yml
deleted file mode 100644
index 0b52e94e5..000000000
--- a/.github/workflows/commit-validation.yml
+++ /dev/null
@@ -1,38 +0,0 @@
-name: commit-validation
-on: [ push, pull_request ]
-
-jobs:
- check-commit-msg-length:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v1
- - name: Check commit message length
- run: |
- # Get last commit messages
- if [ "${{github.event_name}}" = "push" ]; then
- if [ "${{github.event.before}}" = "0000000000000000000000000000000000000000" ]; then
- # We are on a new branch
- current="$(echo '${{github.ref}}' | sed 's!^refs/heads!origin!')"
- readarray -t other < <(git show-ref | awk -F' ' '{ sub(/^refs\/remotes\//,"",$NF); }($NF != "'"$current"'"){print "^" $NF;}')
- LOG_RANGE=( "$current" "${other[@]}" )
- unset current other
- else
- # We are on existing branch
- LOG_RANGE=( "${{github.event.before}}.." )
- fi
- elif [ "${{github.event_name}}" = "pull_request" ]; then
- LOG_RANGE=( "origin/${{github.base_ref}}.." )
- fi
- if [[ -v LOG_RANGE ]]; then
- if git log --no-merges --pretty=format:"%s" "${LOG_RANGE[@]}" -- | grep -qE "^[^#].{78}"; then
- echo -e "Last commit log contains a line with more than 78 characters:\n"
- git log --no-merges --pretty=format:"%h: %s" "${LOG_RANGE[@]}" -- | grep -E "^[^:]+: [^#].{78}"
- echo
- exit 1
- else
- echo "Commit log looks good."
- fi
- unset LOG_RANGE
- else
- echo "Not checking commits on ${{github.event_name}}"
- fi
diff --git a/.github/workflows/format-validation.yml b/.github/workflows/format-validation.yml
deleted file mode 100644
index a0a5b34b7..000000000
--- a/.github/workflows/format-validation.yml
+++ /dev/null
@@ -1,88 +0,0 @@
-name: Format validation
-
-on:
- push:
- branches:
- - '*'
- - '!rc/*'
- paths:
- - 'test/writer.jats_articleauthoring'
- - 'test/writer.jats_publishing'
- - 'test/writer.jats_archiving'
- - 'test/tables.jats_archiving'
- - 'test/tables/nordics.jats_archiving'
- - 'test/tables/planets.jats_archiving'
- - 'test/tables/students.jats_archiving'
- pull_request:
- branches:
- - '*'
- - '!rc/*'
- paths:
- - 'test/writer.jats_articleauthoring'
- - 'test/writer.jats_publishing'
- - 'test/writer.jats_archiving'
- - 'test/tables.jats_archiving'
- - 'test/tables/nordics.jats_archiving'
- - 'test/tables/planets.jats_archiving'
- - 'test/tables/students.jats_archiving'
-
-jobs:
- jats:
- name: JATS
- runs-on: ubuntu-latest
- env:
- VALIDATOR_URL: "https://jats-validator.hubmed.org/dtd/"
- strategy:
- fail-fast: false
- matrix:
- tagset:
- - articleauthoring
- - publishing
- - archiving
- steps:
- - name: Checkout
- uses: actions/checkout@v2
-
- - name: Validate writer output
- run: |
- filename=test/writer.jats_${{ matrix.tagset }}
- printf "Validating file %s\n" "$filename"
- json="$(curl --form "xml=@${filename}" --silent "$VALIDATOR_URL")"
- err_count="$(printf '%s' "$json" | jq '.errors | length')"
- if [ "$err_count" -eq 0 ]; then
- printf "File was validated successfully.\n"
- exit 0
- else
- printf "Validator report:\n%s" "$json"
- exit 1
- fi
-
- - name: Validate tables
- # Archiving has the simplest template, so we only check with that.
- if: matrix.tagset == 'archiving'
- run: |
- tmpl="$(cat <<EOF
- <?xml version="1.0" encoding="utf-8" ?>
- <!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.2 20190208//EN"
- "JATS-archivearticle1.dtd">
- <article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="1.2" article-type="other">
- <front><article-meta></article-meta></front>
- <body>%s</body></article>
- EOF
- )"
- jats_file="$(mktemp jats-tables.XXXXX)"
- exit_code=0
- for f in tables tables/nordics tables/planets tables/students; do
- filename=test/$f.jats_archiving
- printf "Validating %s...\n" "$filename"
- printf "$tmpl" "$(cat $filename)" > "$jats_file"
- json="$(curl --form "xml=@${jats_file}" --silent "$VALIDATOR_URL")"
- err_count="$(printf "%s" "$json" | jq '.errors | length')"
- if [ "$err_count" -eq 0 ]; then
- printf "Table output is valid when used as body content.\n"
- else
- printf "Validator report:\n%s" "$json"
- exit_code=1
- fi
- done
- exit "$exit_code"
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
deleted file mode 100644
index fb7d9d0b5..000000000
--- a/.github/workflows/lint.yml
+++ /dev/null
@@ -1,33 +0,0 @@
-name: Lint
-
-# Trigger the workflow on push or pull request, but only for the
-# master branch
-on:
- pull_request:
- branch: [master]
- push:
- branch: [master]
- paths-ignore:
- - LICENSE
- - README.md
- - CHANGELOG.md
- - stack.yaml
- - .travis.yml
-
-jobs:
- lint:
- name: Lint
- runs-on: ubuntu-latest
- env:
- hlint_script: https://raw.github.com/ndmitchell/hlint/master/misc/run.sh
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
-
- - name: Check cabal file for missing test files
- run: make check-cabal
-
- - name: Download and run hlint
- run: |
- curl -sSL "${hlint_script}" | sh -s .
diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml
deleted file mode 100644
index 784c57276..000000000
--- a/.github/workflows/nightly.yml
+++ /dev/null
@@ -1,91 +0,0 @@
-name: Nightly
-
-on:
- schedule:
- - cron: '53 7 * * *'
-
-jobs:
- linux:
-
- runs-on: ubuntu-18.04
- steps:
- - uses: actions/checkout@v2
-
- - name: Install recent cabal/ghc
- uses: haskell/actions/setup@v1
- with:
- ghc-version: '8.10.3'
- cabal-version: '3.2'
-
- - name: Install dependencies
- run: |
- ghc --version
- cabal --version
- cabal v2-update
- cabal v2-build --dependencies-only
- - name: Build
- run: |
- cabal v2-install
- strip $HOME/.cabal/bin/pandoc
- - name: Install artifact
- run: |
- export ARTIFACTS=nightly-linux/pandoc-nightly-linux-$(date +%Y-%m-%d)
- mkdir -p ${ARTIFACTS}
- cp $HOME/.cabal/bin/pandoc ${ARTIFACTS}/
- cp COPYRIGHT ${ARTIFACTS}/
- echo "Built from ${GITHUB_SHA}" > ${ARTIFACTS}/README.nightly.txt
- - uses: actions/upload-artifact@master
- with:
- name: nightly-linux
- path: nightly-linux
-
- windows:
-
- runs-on: windows-2019
-
- steps:
- - uses: actions/checkout@v2
- - name: Install dependencies
- run: |
- stack update
- stack build --dependencies-only pandoc
- - name: Build artifacts
- shell: cmd
- run: |
- for /f %%a in ('powershell -Command "Get-Date -format yyyy-MM-dd"') do set THEDATE=%%a
- set ARTIFACTS=%CD%\nightly-windows\pandoc-nightly-windows-%THEDATE%
- mkdir %ARTIFACTS%
- stack build pandoc
- forfiles /P .\.stack-work\install /M pandoc*.exe /S /C "cmd /C copy @path %%ARTIFACTS%%"
- copy COPYRIGHT %ARTIFACTS%
- ren %ARTIFACTS%\COPYRIGHT COPYRIGHT.txt
- echo Built from %GITHUB_SHA% > %ARTIFACTS%\README.nightly.txt
- - uses: actions/upload-artifact@master
- with:
- name: nightly-windows
- path: nightly-windows
-
- macos:
-
- runs-on: macOS-10.15
-
- steps:
- - uses: actions/checkout@v2
- - name: Install dependencies
- run: |
- stack update
- stack build --dependencies-only pandoc
- - name: Build artifacts
- run: |
- export ARTIFACTS=nightly-macos/pandoc-nightly-macos-$(date +%Y-%m-%d)
- mkdir -p ${ARTIFACTS}
- stack build pandoc
- for f in $(find .stack-work/install -name 'pandoc*' -perm +001 -type f); do cp $f ${ARTIFACTS}/; done
- mv ${ARTIFACTS}/pandoc ${ARTIFACTS}/pandoc
- cp COPYRIGHT ${ARTIFACTS}/
- echo "Built from ${GITHUB_SHA}" > ${ARTIFACTS}/README.nightly.txt
- - uses: actions/upload-artifact@master
- with:
- name: nightly-macos
- path: nightly-macos
-
diff --git a/.github/workflows/release-candidate.yml b/.github/workflows/release-candidate.yml
deleted file mode 100644
index cfb770ef5..000000000
--- a/.github/workflows/release-candidate.yml
+++ /dev/null
@@ -1,83 +0,0 @@
-name: Release candidate
-
-on:
- push:
- branches:
- - 'rc/**'
-
-jobs:
- linux:
-
- runs-on: ubuntu-18.04
- steps:
- - uses: actions/checkout@v1
- - name: Create linux package
- run: |
- make debpkg
- mkdir linux-release-candidate
- cp linux/artifacts/*.deb linux-release-candidate/
- cp linux/artifacts/*.tar.gz linux-release-candidate/
- - uses: actions/upload-artifact@v2
- with:
- name: linux-release-candidate
- path: linux-release-candidate
-
- windows:
-
- runs-on: windows-2019
- strategy:
- fail-fast: true
- matrix:
- versions:
- - osarch: "windows-x86_64"
- arch: "x64"
- stack_opts: "-j1"
- steps:
- - uses: actions/checkout@v1
- - name: Install dependencies
- run: |
- stack update
- stack build ${{ matrix.versions.stack_opts }} --dependencies-only pandoc
- - name: Create windows package
- shell: cmd
- run: |
- for /f %%a in ('powershell -Command "Get-Date -format yyyy-MM-dd"') do set THEDATE=%%a
- stack build ${{ matrix.versions.stack_opts }} pandoc
- for /f "tokens=1-2 delims= " %%a in ('stack exec pandoc -- --version') do (
- @set VERSION=%%b
- goto :next
- )
- :next
- if "%VERSION%" == "" (
- echo Error: could not determine version number.
- exit /b 1
- )
- echo Detected version %VERSION%
- @set WINDOWS=%CD%\windows
- @set RELEASE=%WINDOWS%\pandoc-%VERSION%
- mkdir %RELEASE%
- forfiles /P .\.stack-work\install /M pandoc.exe /S /C "cmd /C echo @path && echo %%WINDOWS%% && copy @path %%RELEASE%%"
- stack exec pandoc -- -s --toc MANUAL.txt -o %RELEASE%\MANUAL.html
- stack exec pandoc -- -s COPYING.md -t rtf -o %RELEASE%\COPYING.rtf
- copy %RELEASE%\COPYING.rtf %WINDOWS%
- copy COPYRIGHT %RELEASE%\COPYRIGHT.txt
- cd windows
- echo Creating msi...
- dir
- @set WIXBIN="c:\Program Files (x86)\WiX Toolset v3.11\bin"
- @set WORKDIR=%CD%
- echo Running candle...
- %WIXBIN%\candle -arch ${{ matrix.versions.arch }} -dVERSION=%VERSION% -dBINPATH=%RELEASE% *.wxs -out wixobj\
- if %errorlevel% neq 0 exit /b %errorlevel%
- echo Running light...
- %WIXBIN%\light -sw1076 -ext WixUIExtension -ext WixUtilExtension -cultures:en-us -loc Pandoc-en-us.wxl -out %WORKDIR%\pandoc-%VERSION%-${{ matrix.versions.osarch }}-UNSIGNED.msi wixobj\*.wixobj
- 7z a "pandoc-%VERSION%-${{ matrix.versions.osarch }}.zip" pandoc-%VERSION%
- cd ..
- mkdir windows-release-candidate
- copy windows\pandoc-%VERSION%-${{ matrix.versions.osarch }}-UNSIGNED.msi windows-release-candidate
- copy windows\pandoc-%VERSION%-${{ matrix.versions.osarch }}.zip windows-release-candidate
- copy windows\Makefile windows-release-candidate
- - uses: actions/upload-artifact@v2
- with:
- name: windows-release-candidate
- path: windows-release-candidate