GithubHelp home page GithubHelp logo

fieryswampshire / boost-ci Goto Github PK

View Code? Open in Web Editor NEW

This project forked from boostorg/boost-ci

0.0 1.0 0.0 157 KB

Continuous Integration Toolkit for boostorg code repositories

License: Boost Software License 1.0

Shell 72.98% Batchfile 23.86% C++ 3.16%

boost-ci's Introduction

Boost

Boost.CI

This repository contains scripts that enable continuous integration with Appveyor, Azure Pipelines, codecov.io, Coverity Scan, GitHub Actions, and Travis CI. These scripts are intended to be downloaded and used during boost repository builds to improve project quality. In most cases the scripts are self-configuring. Some integrations require additional setup actions to complete.

Boost.CI also allows you to run a big-endian build on Travis CI.

Summary (TL;DR)

Here are all the steps you need to take as a Boost repository maintainer to enable all of these CI features in your repository:

  1. Checkout develop and then make a new branch called ci.
  2. Copy the .appveyor.yml file from this repository into the top level of your repository.
  3. Copy the .azure-pipelines.yml file from this repository into the top level of your repository.
  4. Copy the .travis.yml file from this repository into the top level of your repository.
  5. Copy the ci.yml file from this repository to .github/workflows/ci.yml of your repository.
  6. Copy the LICENSE file from this repository to the top level of your repository. This adds the BSL-1.0 designation to your repository on github.
  7. [optional] Copy the README.template.md file from this repository to the top level README.md of your repository. If you already have a README.md then you can take what you need from the template version to improve it, if desired. Otherwise, you will need to customize README.md for your repository. One useful step is to fixup the repository name using the command sed -i 's/template/<myrepositoryname>/g' README.md, and then update the first line description.
  8. In Appveyor, add a project for your fork of the repository. No customization is needed.
  9. In Travis CI, add a project for your fork of the repository. Later you will customize it for Coverity Scan, but for now no settings changes are necessary.
  10. Commit these changes and push to your personal fork in the ci branch.
  11. Create a pull request in your fork of /ci to /develop. Do not target boostorg/develop.
  12. Observe that both Appveyor and Travis CI are running the build jobs. Fix up any issues found. Note this may uncover defects in your repository code.
  13. If you are the owner or an admin for your repository, add projects in Appveyor and Travis CI for the boostorg/ project (not your fork). If you are just a contributor in the repository, create an issue in Boost.Admin requesting Appveyor and Travis CI to be enabled for the repository.
  14. Commit the changes to develop. This will kick off a build on Appveyor and Travis.
  15. Update the badge matrix in README.md with the correct links for your Appveyor and Travis CI projects.
  16. Create a Coverity Scan account if you have not already done so.
  17. Create a new Coverity Scan github based project for your official boostorg repository.
  18. Update your Travis CI boostorg repository project settings and add the following environment variables using the Travis CI GUI:
    • COVERITY_SCAN_NOTIFICATION_EMAIL can be public and set to your email account (or it can be private).
    • COVERITY_SCAN_TOKEN should be kept private and set to the scan token you can find in the project settings in Coverity Scan.
  19. Update the README.md to put the correct Coverity Scan badge project number into the badge URLs.
  20. This will kick off a build on the develop branch that will include Coverity Scan results.

Repositories using Boost.CI

The CMT Stale Repo Tracker identifies many repositories using Boost.CI and the CMT Status Spreadsheet shows the current state of each. There may be additional repositories using Boost.CI that are not listed. Boost.CI does not track usage internally.

How It Works

The files .appveyor.yml, .azure-pipeline.yml and .travis.yml must exist in your repository and will contain your customizations for build types, languages, and platforms. The templates provided will get you started with the build jobs listed below.

These scripts will copy resources from the Boost.CI repository when needed in order to provide scripting necessary to run all these jobs successfully.

Build jobs that will severely impact performance (such as valgrind) will define BOOST_NO_STRESS_TEST so those can be skipped or hobbled.

Topic Branch Support

The configuration for Travis CI and Appveyor allow for automated branch builds on branch pushes matching these names:

  • master
  • develop
  • bugfix/*
  • feature/*
  • fix/*
  • pr/*

Defaults, Builds and Services

By default all of the builds target C++11 unless otherwise specified. To see what kind of coverage these builds provide, see some build results:

AppVeyor : https://ci.appveyor.com/project/jeking3/uuid-gaamf/builds/19987101
Travis CI: https://travis-ci.org/boostorg/uuid/builds/449557162

Without any customization the scripts can provide the following services (example, see the actual CI scripts for current configurations):

CI description toolset cxxflags/std address-model variant
Appveyor MSVC 2019 C++2a Strict msvc-14.2 2a, -permissive- 64 release
Appveyor MSVC 2017 C++2a Strict msvc-14.1 2a, -permissive- 64 release
Appveyor MSVC 2017 C++17 msvc-14.1 17 64 debug
Appveyor MSVC 2017 C++17 clang-win 11 64 release
Appveyor MSVC 2017 C++14 Default msvc-14.1 default (14) 32,64 release
Appveyor MSVC 2015 C++14 Default msvc-14.0 default (14) 32,64 debug
Appveyor MSVC 2013 msvc-12.0 default (most of 11) default release
Appveyor MSVC 2012 msvc-11.0 default (some of 11) default release
Appveyor MSVC 2010 msvc-10.0 default (some of 0x) default release
Appveyor cygwin gcc 03,11 32 debug
Appveyor cygwin64 gcc 11,17 64 release
Appveyor mingw gcc 03,11 32 debug
Appveyor mingw64 gcc 11,17 64 release
Azure P. gcc 4.8 gcc-4.8 03,11 default debug,release
Azure P. gcc 4.9 gcc-4.9 03,11 default debug,release
Azure P. gcc 5 gcc-5 11 default debug,release
Azure P. gcc 6 gcc-6 11,14 default debug,release
Azure P. gcc 7 gcc-7 11,14,17 default debug,release
Azure P. gcc 8 gcc-8 14,17,2a default debug,release
Azure P. clang-3.5 clang-3.5 03,11 default debug,release
Azure P. clang-3.6 clang-3.6 03,11 default debug,release
Azure P. clang-3.7 clang-3.7 03,11 default debug,release
Azure P. clang-3.8 clang-3.8 03,11,14 default debug,release
Azure P. clang-3.9 clang-3.8 03,11,14 default debug,release
Azure P. clang-4.0 clang-4.0 11,14,17 default debug,release
Azure P. clang-5.0 clang-5.0 11,14,17 default debug,release
Azure P. clang-6.0 clang-6.0 14,17,2a default debug,release
Azure P. clang-6.0-libc++ clang-6.0 03,11,14,17,2a, libc++ default debug,release
Azure P. clang-7 clang-7 14,17,2a default debug,release
Azure P. clang-8 clang-8 14,17,2a default debug,release
Azure P. MSVC 2019 C++2a Strict msvc-14.2 2a, -permissive- 64 debug,release
Azure P. MSVC 2017 C++2a Strict msvc-14.1 2a, -permissive- 64 debug,release
Azure P. MSVC 2017 C++17 msvc-14.1 17 32,64 debug,release
Azure P. MSVC 2017 C++14 Default msvc-14.1 default (14) 32,64 debug,release
Azure P. MSVC 2015 C++14 Default msvc-14.0 default (14) 32,64 debug,release
Azure P. Xcode 10.1 clang 14,17,2a default debug,release
Azure P. Xcode 10.0 clang 14,17,2a default debug,release
Azure P. Xcode 9.4.1 clang 11,14,17 default debug,release
Azure P. Xcode 9.4 clang 11,14,17 default debug,release
Azure P. Xcode 9.3.1 clang 11,14 default debug,release
Azure P. Xcode 9.3 clang 11,14 default debug,release
Azure P. Xcode 9.2 clang 11,14 default debug,release
Azure P. Xcode 9.1 clang 03,11 default debug,release
Azure P. Xcode 9.0.1 clang 03,11 default debug,release
Azure P. Xcode 9.0 clang 03,11 default debug,release
Azure P. Xcode 8.3.3 clang 03,11 default debug,release
Travis CI gcc 4.8 gcc-4.8 03,11 default release
Travis CI gcc 4.9 gcc-4.9 03,11 default release
Travis CI gcc 5 gcc-5 03,11 default release
Travis CI gcc 6 gcc-6 11,14 default release
Travis CI gcc 7 gcc-7 14,17 default release
Travis CI gcc 8 gcc-8 17,2a default release
Travis CI gcc 9 gcc-9 17,2a default release
Travis CI clang-3.8 clang-3.8 03,11 default release
Travis CI clang-4.0 clang-4.0 11,14 default release
Travis CI clang-5.0 clang-5.0 11,14 default release
Travis CI clang-6.0 clang-6.0 14,17 default release
Travis CI clang-6.0-libc++ clang-6.0 03,11,14, libc++ default release
Travis CI clang-7 clang-7 17,2a default release
Travis CI clang-8 clang-8 17,2a default release
Travis CI osx (clang) clang 03,11,17 default release
Travis CI big-endian gcc default default debug
Travis CI codecov.io gcc-8 default default debug
Travis CI covscan clang default default debug
Travis CI asan gcc-8 03,11,14 default debug
Travis CI tsan gcc-8 03,11,14 default debug
Travis CI ubsan gcc-8 03,11,14 default debug
Travis CI valgrind clang-6.0 03,11,14 default debug

boost-ci's People

Contributors

jeking3 avatar mloskot avatar sdarwin avatar flamefire avatar kedarbhat avatar vinniefalco avatar svenevs avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.