name: QPDF Build env: QTEST_COLOR: 1 on: push: branches: - main - build - build/* paths-ignore: - 'ChangeLog' - 'README*' - 'TODO' pull_request: schedule: # Building regularly with cron makes it safe for us to use # *-latest with runs-on. If a new version of tools or agents comes # out, we'll find out fast if our builds break on it because we # have reliable testing. - cron: '12 4 * * 5' 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 - name: 'Upload external libs' uses: actions/upload-artifact@v1 with: name: external-libs path: external-libs-dist 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: runs-on: windows-latest 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 path: . - name: 'Download external libs' uses: actions/download-artifact@v2 with: name: external-libs path: . - 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-latest needs: Distfiles steps: - uses: actions/checkout@v2 - name: 'Download distribution files' uses: actions/download-artifact@v2 with: name: distfiles - name: 'Download external libs' uses: actions/download-artifact@v2 with: name: external-libs path: . - 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