aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/main.yml108
-rw-r--r--README.md1
-rw-r--r--TODO13
3 files changed, 122 insertions, 0 deletions
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
new file mode 100644
index 00000000..8c49f7bf
--- /dev/null
+++ b/.github/workflows/main.yml
@@ -0,0 +1,108 @@
+name: QPDF Build
+env:
+ QTEST_COLOR: 1
+on:
+ push:
+ branches:
+ - main
+ - master
+ - build
+ pull_request:
+jobs:
+ Distfiles:
+ # Generate distfiles.zip, which is a prerequisite for the mac and
+ # Windows builds. Only the mac and Windows builds actually "need"
+ # it, but declaring all the jobs to need it forces it to run
+ # first.
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: 'Create distfiles.zip'
+ run: build-scripts/make-distfiles
+ - name: 'Upload extra distribution files'
+ uses: actions/upload-artifact@v1
+ with:
+ name: distfiles
+ path: distfiles.zip
+ Linux:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: 'Generate, build, and test'
+ run: build-scripts/build-linux
+ - name: Upload distribution
+ uses: actions/upload-artifact@v1
+ with:
+ name: distribution
+ path: distribution
+ Windows:
+ # If updating this, see note in TODO about MSVC wildcard expansion.
+ runs-on: windows-2019
+ needs: Distfiles
+ strategy:
+ fail-fast: false
+ max-parallel: 4
+ matrix:
+ tool: [msvc, mingw]
+ wordsize: [64, 32]
+ steps:
+ - name: 'Disable git autocrlf'
+ shell: bash
+ run: git config --global core.autocrlf input
+ - uses: actions/checkout@v2
+ - name: 'Download distribution files'
+ uses: actions/download-artifact@v2
+ with:
+ name: distfiles
+ - name: 'Build, test, generate binary distributions'
+ shell: cmd
+ run: build-scripts/build-windows.bat ${{ matrix.wordsize }} ${{ matrix.tool }}
+ - name: 'Upload binary distributions'
+ uses: actions/upload-artifact@v1
+ with:
+ name: distribution
+ path: distribution
+ macOS:
+ runs-on: macos-10.15
+ needs: Distfiles
+ steps:
+ - uses: actions/checkout@v2
+ - name: 'Download distribution files'
+ uses: actions/download-artifact@v2
+ with:
+ name: distfiles
+ - name: 'Mac build and test'
+ run: build-scripts/build-mac
+ AppImage:
+ runs-on: ubuntu-latest
+ needs: Distfiles
+ steps:
+ - uses: actions/checkout@v2
+ - name: 'Build AppImage'
+ run: build-scripts/build-appimage
+ - name: 'Upload AppImage'
+ uses: actions/upload-artifact@v1
+ with:
+ name: distribution
+ path: distribution
+ Linux32:
+ runs-on: ubuntu-latest
+ needs: Distfiles
+ steps:
+ - uses: actions/checkout@v2
+ - name: 'Linux 32-bit'
+ run: build-scripts/build-linux32
+ Fuzzers:
+ runs-on: ubuntu-latest
+ needs: Distfiles
+ steps:
+ - uses: actions/checkout@v2
+ - name: 'Build Fuzzer'
+ run: build-scripts/build-fuzzer
+ Sanitizers:
+ runs-on: ubuntu-latest
+ needs: Distfiles
+ steps:
+ - uses: actions/checkout@v2
+ - name: 'Sanitizer Tests'
+ run: build-scripts/test-sanitizers
diff --git a/README.md b/README.md
index 0455301b..3de6ab20 100644
--- a/README.md
+++ b/README.md
@@ -2,6 +2,7 @@
[![QPDF](logo/qpdf.svg)](http://qpdf.sourceforge.net)
+[![QPDF Build](https://github.com/qpdf/qpdf/workflows/QPDF%20Build/badge.svg)](https://github.com/qpdf/qpdf/actions)
[![Azure Pipeline Build Status](https://dev.azure.com/qpdf/qpdf/_apis/build/status/qpdf.qpdf)](https://dev.azure.com/qpdf/qpdf/_build/latest?definitionId=5) [![Total lgtm alerts](https://img.shields.io/lgtm/alerts/g/qpdf/qpdf.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/qpdf/qpdf/alerts/)
[![Language grade on lgtm: C/C++](https://img.shields.io/lgtm/grade/cpp/g/qpdf/qpdf.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/qpdf/qpdf/context:cpp)
diff --git a/TODO b/TODO
index cbd317e8..0718ee2e 100644
--- a/TODO
+++ b/TODO
@@ -91,6 +91,19 @@ Fuzz Errors
18745, 20391, 23581
* Timeout: 15471, 17630
+GitHub Actions
+==============
+
+* Actions are triggered on push to main and master. When we eventually
+ rename master to main, make sure the reference to master is removed
+ from .github/workflows/*.yml.
+
+* At the time of migrating from Azure Pipelines to GitHub Actions
+ (2020-10), there was no standard test result publisher (to replace
+ the PublishTestResults@2 task). There are some third-party actions,
+ but I'd rather not depend on them. Keep an eye open for this coming
+ to GitHub Actions.
+
Windows Build
=============