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 =============