From 0b793a3126d48761e749ba8176f3380382dab5a2 Mon Sep 17 00:00:00 2001 From: Arseny Kapoulkine Date: Sun, 27 Jun 2021 19:00:18 -0700 Subject: [PATCH 1/7] Add GitHub Actions based build --- .github/workflows/build.yml | 49 +++++++++++++++++++++++++++++++++++++ .travis.yml | 27 -------------------- 2 files changed, 49 insertions(+), 27 deletions(-) create mode 100644 .github/workflows/build.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..566aff4 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,49 @@ +name: build + +on: [push, pull_request] + +jobs: + unix: + strategy: + matrix: + os: [ubuntu, macos] + compiler: [g++, clang++] + defines: [standard, PUGIXML_WCHAR_MODE, PUGIXML_COMPACT, PUGIXML_NO_EXCEPTIONS] + exclude: + - os: macos + compiler: g++ + name: ${{matrix.os}} + runs-on: ${{matrix.os}}-latest + steps: + - uses: actions/checkout@v1 + - name: make test + run: | + set CXX=${{matrix.compiler}} + set DEFINES=${{matrix.defines}} + make test cxxstd=c++11 defines=$DEFINES config=release -j2 + make test cxxstd=c++98 defines=$DEFINES config=debug -j2 + make test defines=$DEFINES config=sanitize -j2 + - name: make coverage + if: ${{matrix.os == 'ubuntu' && matrix.compiler == 'clang++'}} + run: | + set DEFINES=${{matrix.defines}} + make test defines=$DEFINES config=coverage -j2 + bash <(curl -s https://codecov.io/bash) -f pugixml.cpp.gcov -X search -t ${{secrets.CODECOV_TOKEN}} -B ${{github.ref}} + + windows: + runs-on: windows-latest + strategy: + matrix: + arch: [Win32, x64] + defines: [standard, PUGIXML_WCHAR_MODE, PUGIXML_COMPACT, PUGIXML_NO_EXCEPTIONS] + steps: + - uses: actions/checkout@v1 + - name: cmake configure + run: cmake . -DPUGIXML_BUILD_TESTS=ON -DPUGIXML_BUILD_DEFINES=${{matrix.defines}} -A ${{matrix.arch}} + - name: cmake test + shell: bash # necessary for fail-fast + run: | + cmake --build . -- -property:Configuration=Debug -verbosity:minimal + Debug/pugixml-check.exe + cmake --build . -- -property:Configuration=Release -verbosity:minimal + Release/pugixml-check.exe diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 01bd59f..0000000 --- a/.travis.yml +++ /dev/null @@ -1,27 +0,0 @@ -language: cpp -os: - - linux - - osx -compiler: - - clang - - gcc - -matrix: - exclude: - - os: osx - compiler: gcc - -env: - - DEFINES=standard - - DEFINES=PUGIXML_WCHAR_MODE - - DEFINES=PUGIXML_COMPACT - - DEFINES=PUGIXML_NO_EXCEPTIONS - -script: - - if [[ ! ( "$CXX" == "clang++" && "$TRAVIS_OS_NAME" == "linux" ) ]]; then make test cxxstd=c++11 defines=$DEFINES config=coverage -j2; fi - - if [[ "$CXX" == "clang++" ]]; then make test cxxstd=c++11 defines=$DEFINES config=sanitize -j2; fi - - make test cxxstd=c++11 defines=$DEFINES config=release -j2 - - make test cxxstd=c++98 defines=$DEFINES config=debug -j2 - -after_success: - - bash <(curl -s https://codecov.io/bash) -f pugixml.cpp.gcov From 8bd9a19a7ec859139b4709591946cf565a994f13 Mon Sep 17 00:00:00 2001 From: Arseny Kapoulkine Date: Sun, 27 Jun 2021 19:01:06 -0700 Subject: [PATCH 2/7] Change badge to GHA badge. So long, Travis. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2982ec2..1d49def 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -pugixml [![Build Status](https://travis-ci.org/zeux/pugixml.svg?branch=master)](https://travis-ci.org/zeux/pugixml) [![Build status](https://ci.appveyor.com/api/projects/status/9hdks1doqvq8pwe7/branch/master?svg=true)](https://ci.appveyor.com/project/zeux/pugixml) [![codecov.io](https://codecov.io/github/zeux/pugixml/coverage.svg?branch=master)](https://codecov.io/github/zeux/pugixml?branch=master) ![MIT](https://img.shields.io/badge/license-MIT-blue.svg) +pugixml [![Actions Status](https://github.com/zeux/pugixml/workflows/build/badge.svg)](https://github.com/zeux/pugixml/actions) [![Build status](https://ci.appveyor.com/api/projects/status/9hdks1doqvq8pwe7/branch/master?svg=true)](https://ci.appveyor.com/project/zeux/pugixml) [![codecov.io](https://codecov.io/github/zeux/pugixml/coverage.svg?branch=master)](https://codecov.io/github/zeux/pugixml?branch=master) ![MIT](https://img.shields.io/badge/license-MIT-blue.svg) ======= pugixml is a C++ XML processing library, which consists of a DOM-like interface with rich traversal/modification From 3097a2c711c4fb0c1d9e5dc293200ab242d4ac81 Mon Sep 17 00:00:00 2001 From: Arseny Kapoulkine Date: Sun, 27 Jun 2021 19:04:15 -0700 Subject: [PATCH 3/7] Switch to export and GH vars --- .github/workflows/build.yml | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 566aff4..00c4da1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,16 +18,14 @@ jobs: - uses: actions/checkout@v1 - name: make test run: | - set CXX=${{matrix.compiler}} - set DEFINES=${{matrix.defines}} - make test cxxstd=c++11 defines=$DEFINES config=release -j2 - make test cxxstd=c++98 defines=$DEFINES config=debug -j2 - make test defines=$DEFINES config=sanitize -j2 + export CXX=${{matrix.compiler}} + make test cxxstd=c++11 defines=${{matrix.defines}} config=release -j2 + make test cxxstd=c++98 defines=${{matrix.defines}} config=debug -j2 + make test defines=${{matrix.defines}} config=sanitize -j2 - name: make coverage if: ${{matrix.os == 'ubuntu' && matrix.compiler == 'clang++'}} run: | - set DEFINES=${{matrix.defines}} - make test defines=$DEFINES config=coverage -j2 + make test defines=${{matrix.defines}} config=coverage -j2 bash <(curl -s https://codecov.io/bash) -f pugixml.cpp.gcov -X search -t ${{secrets.CODECOV_TOKEN}} -B ${{github.ref}} windows: From e7b545b28875b4e6e7c3e98f6c003547f11a2910 Mon Sep 17 00:00:00 2001 From: Arseny Kapoulkine Date: Sun, 27 Jun 2021 19:09:08 -0700 Subject: [PATCH 4/7] Remove custom job name for unix --- .github/workflows/build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 00c4da1..012c314 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,7 +12,6 @@ jobs: exclude: - os: macos compiler: g++ - name: ${{matrix.os}} runs-on: ${{matrix.os}}-latest steps: - uses: actions/checkout@v1 From 0de580155d3e6fe4693225e65ffd026b9a152ba6 Mon Sep 17 00:00:00 2001 From: Arseny Kapoulkine Date: Sun, 27 Jun 2021 19:12:59 -0700 Subject: [PATCH 5/7] Don't run GHA workflow on push to branches Also convert line endings to Unix. --- .github/workflows/build.yml | 96 +++++++++++++++++++------------------ 1 file changed, 50 insertions(+), 46 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 012c314..56b9554 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,46 +1,50 @@ -name: build - -on: [push, pull_request] - -jobs: - unix: - strategy: - matrix: - os: [ubuntu, macos] - compiler: [g++, clang++] - defines: [standard, PUGIXML_WCHAR_MODE, PUGIXML_COMPACT, PUGIXML_NO_EXCEPTIONS] - exclude: - - os: macos - compiler: g++ - runs-on: ${{matrix.os}}-latest - steps: - - uses: actions/checkout@v1 - - name: make test - run: | - export CXX=${{matrix.compiler}} - make test cxxstd=c++11 defines=${{matrix.defines}} config=release -j2 - make test cxxstd=c++98 defines=${{matrix.defines}} config=debug -j2 - make test defines=${{matrix.defines}} config=sanitize -j2 - - name: make coverage - if: ${{matrix.os == 'ubuntu' && matrix.compiler == 'clang++'}} - run: | - make test defines=${{matrix.defines}} config=coverage -j2 - bash <(curl -s https://codecov.io/bash) -f pugixml.cpp.gcov -X search -t ${{secrets.CODECOV_TOKEN}} -B ${{github.ref}} - - windows: - runs-on: windows-latest - strategy: - matrix: - arch: [Win32, x64] - defines: [standard, PUGIXML_WCHAR_MODE, PUGIXML_COMPACT, PUGIXML_NO_EXCEPTIONS] - steps: - - uses: actions/checkout@v1 - - name: cmake configure - run: cmake . -DPUGIXML_BUILD_TESTS=ON -DPUGIXML_BUILD_DEFINES=${{matrix.defines}} -A ${{matrix.arch}} - - name: cmake test - shell: bash # necessary for fail-fast - run: | - cmake --build . -- -property:Configuration=Debug -verbosity:minimal - Debug/pugixml-check.exe - cmake --build . -- -property:Configuration=Release -verbosity:minimal - Release/pugixml-check.exe +name: build + +on: + push: + branches: + - 'master' + pull_request: + +jobs: + unix: + strategy: + matrix: + os: [ubuntu, macos] + compiler: [g++, clang++] + defines: [standard, PUGIXML_WCHAR_MODE, PUGIXML_COMPACT, PUGIXML_NO_EXCEPTIONS] + exclude: + - os: macos + compiler: g++ + runs-on: ${{matrix.os}}-latest + steps: + - uses: actions/checkout@v1 + - name: make test + run: | + export CXX=${{matrix.compiler}} + make test cxxstd=c++11 defines=${{matrix.defines}} config=release -j2 + make test cxxstd=c++98 defines=${{matrix.defines}} config=debug -j2 + make test defines=${{matrix.defines}} config=sanitize -j2 + - name: make coverage + if: ${{matrix.os == 'ubuntu' && matrix.compiler == 'clang++'}} + run: | + make test defines=${{matrix.defines}} config=coverage -j2 + bash <(curl -s https://codecov.io/bash) -f pugixml.cpp.gcov -X search -t ${{secrets.CODECOV_TOKEN}} -B ${{github.ref}} + + windows: + runs-on: windows-latest + strategy: + matrix: + arch: [Win32, x64] + defines: [standard, PUGIXML_WCHAR_MODE, PUGIXML_COMPACT, PUGIXML_NO_EXCEPTIONS] + steps: + - uses: actions/checkout@v1 + - name: cmake configure + run: cmake . -DPUGIXML_BUILD_TESTS=ON -DPUGIXML_BUILD_DEFINES=${{matrix.defines}} -A ${{matrix.arch}} + - name: cmake test + shell: bash # necessary for fail-fast + run: | + cmake --build . -- -property:Configuration=Debug -verbosity:minimal + Debug/pugixml-check.exe + cmake --build . -- -property:Configuration=Release -verbosity:minimal + Release/pugixml-check.exe From 5cff00e5ea893afbd7169d5c046936c5065336b4 Mon Sep 17 00:00:00 2001 From: Arseny Kapoulkine Date: Sun, 27 Jun 2021 19:20:27 -0700 Subject: [PATCH 6/7] Fix coverage build to include CXX define Also it seems like we don't need to restrict coverage build to Linux/clang? --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 56b9554..2d22954 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,8 +26,8 @@ jobs: make test cxxstd=c++98 defines=${{matrix.defines}} config=debug -j2 make test defines=${{matrix.defines}} config=sanitize -j2 - name: make coverage - if: ${{matrix.os == 'ubuntu' && matrix.compiler == 'clang++'}} run: | + export CXX=${{matrix.compiler}} make test defines=${{matrix.defines}} config=coverage -j2 bash <(curl -s https://codecov.io/bash) -f pugixml.cpp.gcov -X search -t ${{secrets.CODECOV_TOKEN}} -B ${{github.ref}} From a6a63a1b503451b7ac7b69316b64d09ef56608a3 Mon Sep 17 00:00:00 2001 From: Arseny Kapoulkine Date: Sun, 27 Jun 2021 19:23:18 -0700 Subject: [PATCH 7/7] gcov crashes on LLVM-produced coverage on Linux --- .github/workflows/build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2d22954..9462f90 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,6 +16,7 @@ jobs: exclude: - os: macos compiler: g++ + name: ${{matrix.os}} (${{matrix.compiler}}, ${{matrix.defines}}) runs-on: ${{matrix.os}}-latest steps: - uses: actions/checkout@v1 @@ -26,6 +27,7 @@ jobs: make test cxxstd=c++98 defines=${{matrix.defines}} config=debug -j2 make test defines=${{matrix.defines}} config=sanitize -j2 - name: make coverage + if: ${{!(matrix.os == 'ubuntu' && matrix.compiler == 'clang++')}} # linux/clang produces coverage info gcov can't parse run: | export CXX=${{matrix.compiler}} make test defines=${{matrix.defines}} config=coverage -j2