Skip to content

Commit 43f7965

Browse files
committed
Clean up Cirrus CI defs and description.
1 parent 0b51ff7 commit 43f7965

4 files changed

Lines changed: 92 additions & 63 deletions

File tree

.ci_playground/choco-vs2017.config

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,10 @@
22
<packages>
33
<package id="visualstudio2017buildtools" packageParameters="--add Microsoft.VisualStudio.Workload.VCTools" />
44
</packages>
5+
<!--
6+
Use, modification, and distribution are
7+
subject to the Boost Software License, Version 1.0. (See accompanying
8+
file LICENSE.txt)
9+
10+
Copyright Rene Rivera 2020.
11+
-->

.ci_playground/choco-vs2019.config

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,10 @@
22
<packages>
33
<package id="visualstudio2019buildtools" packageParameters="--add Microsoft.VisualStudio.Workload.VCTools" />
44
</packages>
5+
<!--
6+
Use, modification, and distribution are
7+
subject to the Boost Software License, Version 1.0. (See accompanying
8+
file LICENSE.txt)
9+
10+
Copyright Rene Rivera 2020.
11+
-->

.cirrus.yml

Lines changed: 73 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -6,35 +6,37 @@
66

77
# Configuration for https://cirrus-ci.org/.
88

9-
# linux_task:
10-
# # All the GCC's and Clang's available for Ubuntu Bionic.
11-
# matrix:
12-
# - { name: 'Linux, GCC 10', env: { CXX: g++-10, PACKAGES: g++-10 }, container: { image: 'ubuntu:18.04' } }
13-
# - { name: 'Linux, GCC 9', env: { CXX: g++-9, PACKAGES: g++-9 }, container: { image: 'ubuntu:18.04' } }
14-
# - { name: 'Linux, GCC 8', env: { CXX: g++-8, PACKAGES: g++-8 }, container: { image: 'ubuntu:18.04' } }
15-
# - { name: 'Linux, GCC 7', env: { CXX: g++-7, PACKAGES: g++-7 }, container: { image: 'ubuntu:18.04' } }
16-
# - { name: 'Linux, GCC 6', env: { CXX: g++-6, PACKAGES: g++-6 }, container: { image: 'ubuntu:18.04' } }
17-
# - { name: 'Linux, GCC 5', env: { CXX: g++-5, PACKAGES: g++-5 }, container: { image: 'ubuntu:18.04' } }
18-
# - { name: 'Linux, Clang 10', env: { CXX: clang++-10, PACKAGES: clang-10, LLVM_OS: bionic, LLVM_VER: 10 }, container: { image: 'ubuntu:18.04' } }
19-
# - { name: 'Linux, Clang 9', env: { CXX: clang++-9, PACKAGES: clang-9, LLVM_OS: bionic, LLVM_VER: 9 }, container: { image: 'ubuntu:18.04' } }
20-
# - { name: 'Linux, Clang 8', env: { CXX: clang++-8, PACKAGES: clang-8, LLVM_OS: bionic, LLVM_VER: 8 }, container: { image: 'ubuntu:18.04' } }
21-
# - { name: 'Linux, Clang 7', env: { CXX: clang++-7, PACKAGES: clang-7, LLVM_OS: bionic, LLVM_VER: 7 }, container: { image: 'ubuntu:18.04' } }
22-
# - { name: 'Linux, Clang 6', env: { CXX: clang++-6.0, PACKAGES: clang-6.0, LLVM_OS: bionic, LLVM_VER: 6.0 }, container: { image: 'ubuntu:18.04' } }
23-
# - { name: 'Linux, Clang 5', env: { CXX: clang++-5.0, PACKAGES: clang-5.0, LLVM_OS: bionic, LLVM_VER: 5.0 }, container: { image: 'ubuntu:18.04' } }
24-
# # Need some extra container setup.
25-
# setup_script: [
26-
# "apt-get -o Acquire::Retries=3 update && apt-get -o Acquire::Retries=3 install -y sudo software-properties-common wget apt-transport-https && rm -rf /var/lib/apt/lists/*"
27-
# ]
28-
# # The install runs a helper script to do the install and any setup.
29-
# install_script: [
30-
# "uname -a",
31-
# "./.ci_playground/linux-cxx-install.sh"
32-
# ]
33-
# compile_script: [
34-
# "${CXX} --version",
35-
# "${CXX} ${CXXFLAGS} -v src/main.cpp"
36-
# ]
9+
linux_task:
10+
# All the GCC's and Clang's available for Ubuntu Bionic.
11+
matrix:
12+
- { name: 'Linux, GCC 10', env: { CXX: g++-10, PACKAGES: g++-10 }, container: { image: 'ubuntu:18.04' } }
13+
- { name: 'Linux, GCC 9', env: { CXX: g++-9, PACKAGES: g++-9 }, container: { image: 'ubuntu:18.04' } }
14+
- { name: 'Linux, GCC 8', env: { CXX: g++-8, PACKAGES: g++-8 }, container: { image: 'ubuntu:18.04' } }
15+
- { name: 'Linux, GCC 7', env: { CXX: g++-7, PACKAGES: g++-7 }, container: { image: 'ubuntu:18.04' } }
16+
- { name: 'Linux, GCC 6', env: { CXX: g++-6, PACKAGES: g++-6 }, container: { image: 'ubuntu:18.04' } }
17+
- { name: 'Linux, GCC 5', env: { CXX: g++-5, PACKAGES: g++-5 }, container: { image: 'ubuntu:18.04' } }
18+
- { name: 'Linux, Clang 10', env: { CXX: clang++-10, PACKAGES: clang-10, LLVM_OS: bionic, LLVM_VER: 10 }, container: { image: 'ubuntu:18.04' } }
19+
- { name: 'Linux, Clang 9', env: { CXX: clang++-9, PACKAGES: clang-9, LLVM_OS: bionic, LLVM_VER: 9 }, container: { image: 'ubuntu:18.04' } }
20+
- { name: 'Linux, Clang 8', env: { CXX: clang++-8, PACKAGES: clang-8, LLVM_OS: bionic, LLVM_VER: 8 }, container: { image: 'ubuntu:18.04' } }
21+
- { name: 'Linux, Clang 7', env: { CXX: clang++-7, PACKAGES: clang-7, LLVM_OS: bionic, LLVM_VER: 7 }, container: { image: 'ubuntu:18.04' } }
22+
- { name: 'Linux, Clang 6', env: { CXX: clang++-6.0, PACKAGES: clang-6.0, LLVM_OS: bionic, LLVM_VER: 6.0 }, container: { image: 'ubuntu:18.04' } }
23+
- { name: 'Linux, Clang 5', env: { CXX: clang++-5.0, PACKAGES: clang-5.0, LLVM_OS: bionic, LLVM_VER: 5.0 }, container: { image: 'ubuntu:18.04' } }
24+
# Need some extra container setup.
25+
setup_script: [
26+
"apt-get -o Acquire::Retries=3 update && apt-get -o Acquire::Retries=3 install -y sudo software-properties-common wget apt-transport-https && rm -rf /var/lib/apt/lists/*"
27+
]
28+
# The install runs a helper script to do the install and any setup.
29+
install_script: [
30+
"uname -a",
31+
"./.ci_playground/linux-cxx-install.sh"
32+
]
33+
compile_script: [
34+
"${CXX} --version",
35+
"${CXX} ${CXXFLAGS} -v src/main.cpp"
36+
]
3737

38+
# This currently fails because the Cirrus feature for encrypted variables seems
39+
# broken when used with env vars. Hence it's entirely disabled.
3840
# xcode_task:
3941
# matrix:
4042
# - { name: 'macOS, Xcode 11.4.1', env: { CXX: clang++, XCODE_VERSION: 11.4.1 }, osx_instance: { image: 'catalina-xcode-11.4.1' } }
@@ -60,43 +62,51 @@
6062
# "${CXX} ${CXXFLAGS} -v --sysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk src/main.cpp"
6163
# ]
6264

63-
# freebsd_task:
64-
# # All the GCC's and Clang's currently supported by FreeBSD ports.
65-
# matrix:
66-
# - { name: 'FreeBSD, GCC 11', env: { CXX: 'g++11', PACKAGE: 'gcc11-devel' }, freebsd_instance: { image_family: 'freebsd-13-0-snap' } }
67-
# - { name: 'FreeBSD, GCC 10', env: { CXX: 'g++10', PACKAGE: 'gcc10-devel' }, freebsd_instance: { image_family: 'freebsd-13-0-snap' } }
68-
# - { name: 'FreeBSD, GCC 9', env: { CXX: 'g++9', PACKAGE: 'gcc9-devel' }, freebsd_instance: { image_family: 'freebsd-13-0-snap' } }
69-
# - { name: 'FreeBSD, GCC 8', env: { CXX: 'g++8', PACKAGE: 'gcc8-devel' }, freebsd_instance: { image_family: 'freebsd-13-0-snap' } }
70-
# - { name: 'FreeBSD, GCC 7', env: { CXX: 'g++7', PACKAGE: 'gcc7' }, freebsd_instance: { image_family: 'freebsd-13-0-snap' } }
71-
# - { name: 'FreeBSD, Clang 10', env: { CXX: 'clang++10', PACKAGE: 'llvm10' }, freebsd_instance: { image_family: 'freebsd-13-0-snap' } }
72-
# - { name: 'FreeBSD, Clang 9', env: { CXX: 'clang++90', PACKAGE: 'llvm90' }, freebsd_instance: { image_family: 'freebsd-13-0-snap' } }
73-
# - { name: 'FreeBSD, Clang 8', env: { CXX: 'clang++80', PACKAGE: 'llvm80' }, freebsd_instance: { image_family: 'freebsd-13-0-snap' } }
74-
# - { name: 'FreeBSD, Clang 7', env: { CXX: 'clang++70', PACKAGE: 'llvm70' }, freebsd_instance: { image_family: 'freebsd-13-0-snap' } }
75-
# - { name: 'FreeBSD, Clang 6', env: { CXX: 'clang++60', PACKAGE: 'llvm60' }, freebsd_instance: { image_family: 'freebsd-13-0-snap' } }
76-
# # To install with ports we need to initialize the package manager. To avoid
77-
# # confirmation prompts we need to set an env var.
78-
# install_script: [
79-
# "uname -a",
80-
# "env ASSUME_ALWAYS_YES=YES pkg bootstrap",
81-
# "env ASSUME_ALWAYS_YES=YES pkg install ${PACKAGE}"
82-
# ]
83-
# # Compiling is simply calling the compiler.
84-
# compile_script: [
85-
# "${CXX} --version",
86-
# "${CXX} ${CXXFLAGS} -v src/main.cpp"
87-
# ]
88-
89-
msvc_task:
65+
freebsd_task:
66+
# All the GCC's and Clang's currently supported by FreeBSD ports.
9067
matrix:
91-
# - { name: 'Windows, VS 2019', env: { CXX: cl.exe, CXXFLAGS: /Femain, VSWHERE_VERSION: '[16.0,17.0)', PLATFORM: x64, CHOCO_CONFIG: vs2019 } }
92-
- { name: 'Windows, VS 2017', env: { CXX: cl.exe, CXXFLAGS: /Femain, VSWHERE_VERSION: '[15.0,16.0)', PLATFORM: x64, CHOCO_CONFIG: vs2017 } }
93-
windows_container:
94-
image: cirrusci/windowsservercore:2019
68+
- { name: 'FreeBSD, GCC 11', env: { CXX: 'g++11', PACKAGE: 'gcc11-devel' }, freebsd_instance: { image_family: 'freebsd-13-0-snap' } }
69+
- { name: 'FreeBSD, GCC 10', env: { CXX: 'g++10', PACKAGE: 'gcc10-devel' }, freebsd_instance: { image_family: 'freebsd-13-0-snap' } }
70+
- { name: 'FreeBSD, GCC 9', env: { CXX: 'g++9', PACKAGE: 'gcc9-devel' }, freebsd_instance: { image_family: 'freebsd-13-0-snap' } }
71+
- { name: 'FreeBSD, GCC 8', env: { CXX: 'g++8', PACKAGE: 'gcc8-devel' }, freebsd_instance: { image_family: 'freebsd-13-0-snap' } }
72+
- { name: 'FreeBSD, GCC 7', env: { CXX: 'g++7', PACKAGE: 'gcc7' }, freebsd_instance: { image_family: 'freebsd-13-0-snap' } }
73+
- { name: 'FreeBSD, Clang 10', env: { CXX: 'clang++10', PACKAGE: 'llvm10' }, freebsd_instance: { image_family: 'freebsd-13-0-snap' } }
74+
- { name: 'FreeBSD, Clang 9', env: { CXX: 'clang++90', PACKAGE: 'llvm90' }, freebsd_instance: { image_family: 'freebsd-13-0-snap' } }
75+
- { name: 'FreeBSD, Clang 8', env: { CXX: 'clang++80', PACKAGE: 'llvm80' }, freebsd_instance: { image_family: 'freebsd-13-0-snap' } }
76+
- { name: 'FreeBSD, Clang 7', env: { CXX: 'clang++70', PACKAGE: 'llvm70' }, freebsd_instance: { image_family: 'freebsd-13-0-snap' } }
77+
- { name: 'FreeBSD, Clang 6', env: { CXX: 'clang++60', PACKAGE: 'llvm60' }, freebsd_instance: { image_family: 'freebsd-13-0-snap' } }
78+
# To install with ports we need to initialize the package manager. To avoid
79+
# confirmation prompts we need to set an env var.
9580
install_script: [
96-
"choco install .ci_playground/choco-%CHOCO_CONFIG%.config -y --ignore-detected-reboot --no-progress",
97-
"choco install vswhere -y --no-progress"
81+
"uname -a",
82+
"env ASSUME_ALWAYS_YES=YES pkg bootstrap",
83+
"env ASSUME_ALWAYS_YES=YES pkg install ${PACKAGE}"
9884
]
85+
# Compiling is simply calling the compiler.
9986
compile_script: [
100-
".ci_playground/windows-msvc-setup.cmd",
101-
"\"%CXX%\" %CXXFLAGS% src/main.cpp"
87+
"${CXX} --version",
88+
"${CXX} ${CXXFLAGS} -v src/main.cpp"
10289
]
90+
91+
# Unfortunately choco installs a package that requires a reboot. Which is
92+
# something that can't work in the containers Cirrus uses. Hence this is
93+
# disabled entirely. But left here for reference and information.
94+
# msvc_task:
95+
# # Cirrus doesn't have preinstalled VS version. We specify info to install
96+
# # VS with Chocolatey.
97+
# matrix:
98+
# - { name: 'Windows, VS 2019', env: { CXX: cl.exe, CXXFLAGS: /Femain, VSWHERE_VERSION: '[16.0,17.0)', PLATFORM: x64, CHOCO_CONFIG: vs2019 } }
99+
# - { name: 'Windows, VS 2017', env: { CXX: cl.exe, CXXFLAGS: /Femain, VSWHERE_VERSION: '[15.0,16.0)', PLATFORM: x64, CHOCO_CONFIG: vs2017 } }
100+
# windows_container:
101+
# image: cirrusci/windowsservercore:2019
102+
# # Install VS and vswhere. For VS we use a predefined configuration that
103+
# # define the packages and arguments needed.
104+
# install_script: [
105+
# "choco install .ci_playground/choco-%CHOCO_CONFIG%.config -y --ignore-detected-reboot --no-progress",
106+
# "choco install vswhere -y --no-progress"
107+
# ]
108+
# # To compile we need to set up the compile environment.
109+
# compile_script: [
110+
# ".ci_playground/windows-msvc-setup.cmd",
111+
# "\"%CXX%\" %CXXFLAGS% src/main.cpp"
112+
# ]

README.adoc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,11 @@ file is the only setup needed for CircleCI.
115115

116116
=== https://cirrus-ci.org/[Cirrus CI] image:https://api.cirrus-ci.com/github/bfgroup/ci_playground.svg?branch=master["Build Status", link="https://cirrus-ci.com/github/bfgroup/ci_playground"]
117117

118+
Of the current cloud CI offerings Cirrus CI is different in that it offers
119+
FreeBSD public VMs. Cirrus CI provides "community clusters" that also include
120+
Linux, macOS, and Windows. Unfortunately getting macOS Xcode and Visual Studio
121+
installed is currently not possible.
122+
118123
Configuration::
119124
link:.cirrus.yml[`<root>/.cirrus.yml`]
120125

0 commit comments

Comments
 (0)