Skip to content

Add GitHub pipelines#308

Merged
orenmnero merged 20 commits into
quickfix:masterfrom
weird-sisters:add_github_pipelines
Sep 24, 2020
Merged

Add GitHub pipelines#308
orenmnero merged 20 commits into
quickfix:masterfrom
weird-sisters:add_github_pipelines

Conversation

@tarc
Copy link
Copy Markdown
Contributor

@tarc tarc commented May 24, 2020

This PR adds three pipelines to the repo, watching push and pull request events:

  1. Build with Autotools (build_test_autotools.yml).
  2. Build with CMake (build_test_cmake.yml).
  3. Build Visual Studio Solution (build_test_sln.yml).

They make use of the integrated GitHub actions.

As the pipelines were being developed, some "bugs" were catched:

  • A copy of Except.h was missing for WIN32 builds from cmake/QuickfixPrebuildSetup.cmake.
  • DataDictionaryTestCase is buggy on Windows.
  • resetBeforeAndAfterWithTestFileManager fixture from FileStoreTestCase is also buggy on Windows.

So a #ifndef _MSC_VER was added to take resetBeforeAndAfterWithTestFileManager out of the Windows compilation and the entries for DataDictionaryTestCase were commented out from src/CMakeLists.txt and from src/test_unit_vs15.vcxproj.

However, #280 fixes the issue with DataDictionaryTestCase, as it's possible to check by merging the present PR with that, reversing the last commit from the present PR and waiting for the tests to complete.

I understand that there's already a CI with Travis, but the present PR covers a more complete range of configurations. The Autotools pipeline runs on Linux and macOS; the CMake one, on Windows, Linux and macOS. The Visual Studio pipeline is the only one that covers only Windows runs.

As to configurations, the CMake pipeline covers debug and release, but do not touch architecture. The Visual Studio is the most complete in this regard, as it covers debug and release for the Win32 and Mixed Platforms architectures (those being the ones that make sense to build from quickfix_vs15.sln). The Autotools pipeline also do not touch on architecture and covers only release.

When it is possible the pipelines cover building and the three kinds of testing present - at, pt and ut. I think they stood for "Acceptance Tests", "Performance Tests" and "Unit Tests". Although it can be easily implemented, there are no tests for macOS. Also, the acceptance tests are set to be performed only for release builds triggered by pull requests. Performance tests also run only for release builds (but do so for both push and pull requests). Unit tests run always (except for macOS, as said earlier).

The Autotools pipeline just runs a make check after the build and then cats test/test-suite.log. The same actions as the ones done by Travis.

The only solution being used by the Visual Studio pipeline is quickfix_vs15.sln for GitHub's test runners only come with Visual Studio 2019 anyway. It was necessary to pass command line arguments to msbuild to force it to use the installed versions of PlatformToolset and WindowsTargetPlatformVersion:

- name: Build
run: msbuild $env:Solution /t:Build /p:Platform=$env:Platform /p:Configuration=$env:Configuration /p:TargetFrameworkVersion=$env:TargetFrameworkVersion /p:PlatformToolset=$env:PlatformToolset /p:WindowsTargetPlatformVersion=$env:WindowsTargetPlatformVersion
env:
Configuration: ${{ matrix.configuration }}
Platform: ${{ matrix.platform }}
Solution: ${{ matrix.solution }}
TargetFrameworkVersion: ${{ matrix.targetframeworkversion }}
PlatformToolset: ${{ matrix.platformtoolset }}
WindowsTargetPlatformVersion: ${{ matrix.windowstargetplatformversion }}

If there's interest in merging this PR, I can address any issues that may arise.

@tarc tarc force-pushed the add_github_pipelines branch 3 times, most recently from de46af0 to 4686106 Compare May 24, 2020 12:52
@tarc tarc force-pushed the add_github_pipelines branch from 4686106 to dece0db Compare June 17, 2020 05:52
@tarc
Copy link
Copy Markdown
Contributor Author

tarc commented Jun 17, 2020

Obs.: This was edited to reflect ongoing changes in the main repo...

Well, I guess that maybe a PR consisting only of the creation of pipeline files makes more sense. I am then removing from the present PR any change to source/project files.

Therefore, this PR makes intentionally evident that some compilation settings are failing. Here's a table with this information:

Badge Link to Build
Build Visual Studio Solution https://github.com/tarc/quickfix/actions/runs/138060381
Build with CMake https://github.com/tarc/quickfix/actions/runs/138060378

I'm opening issues to make problems evident:

#311
#316

And here are new PRs fixing these issues:

#312
#315

In order to provide evidence that those new PRs indeed fix the issues at hand, here follows a table summarizing the statuses of the same PRs but requested against the present branch in my personal repo:

PR External PR Badge Link to Build
#312 tarc#18 Build with CMake https://github.com/tarc/quickfix/actions/runs/138173119
#315 tarc#20 Build Visual Studio Solution https://github.com/tarc/quickfix/actions/runs/138209466

What do you think, @mgatny ? @orenmnero ?

@tarc tarc force-pushed the add_github_pipelines branch from dece0db to 1f094c4 Compare June 17, 2020 06:08
@tarc tarc force-pushed the add_github_pipelines branch 2 times, most recently from 5fb4e1a to 26cb4ce Compare June 17, 2020 14:49
@tarc tarc force-pushed the add_github_pipelines branch from 26cb4ce to 8019726 Compare June 17, 2020 14:56
@orenmnero orenmnero merged commit e3d403c into quickfix:master Sep 24, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants