aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-x.circleci/build-and-test.sh15
-rw-r--r--.circleci/config.yml93
-rw-r--r--.circleci/images/clang/Dockerfile17
-rw-r--r--.circleci/images/docker-deploy.sh17
-rw-r--r--.circleci/images/gcc/Dockerfile16
5 files changed, 126 insertions, 32 deletions
diff --git a/.circleci/build-and-test.sh b/.circleci/build-and-test.sh
new file mode 100755
index 00000000..068f0f91
--- /dev/null
+++ b/.circleci/build-and-test.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+#
+# common build & test steps for CircleCI jobs
+#
+
+uname -a
+cmake --version
+ninja --version
+
+mkdir build
+cd build
+cmake -G Ninja -DCMAKE_BUILD_TYPE=${BUILD_TYPE:-Debug} -DNNG_ENABLE_COVERAGE=${COVERAGE:-OFF} ..
+ninja
+env CTEST_OUTPUT_ON_FAILURE=1 ninja test
diff --git a/.circleci/config.yml b/.circleci/config.yml
index 5c9d5b55..a5adab5f 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -1,38 +1,67 @@
-# Debian packages we want (makes life better);
-#
-# - asciidoctor
-# - cmake
-# - libmbedtls-dev
-# - ninja-build
-# - clang
-# - clang-format
-# - gcc (-7?)
-# - g++ (-7?)
-#
-version: 2
+
+# TODO: create custom docker images for each of these environments
+# to avoid re-downloading & installing dependencies each time
+
+version: 2.0
jobs:
- build:
+ "clang - build, test":
docker:
- - image: debian:stretch
+ - image: ubuntu:16.04
+ environment:
+ CC: clang-4.0
+ CXX: clang++-4.0
+ CLANG_FORMAT: clang-format-4.0
+ CTEST_OUTPUT_ON_FAILURE: 1
steps:
- checkout
- - run:
- name: Install Dependencies
- command: apt-get update -qq && apt-get install -y build-essential asciidoctor cmake libmbedtls-dev ninja-build clang clang-format
- - run:
- name: Configure
- command: mkdir build && cd build && cmake -DNNG_TRANSPORT_TLS=ON -G Ninja ..
-
- - run:
- name: Build
- command: cd build && ninja
+ - run: apt-get update -qq
+ - run: apt-get install -y software-properties-common
+ # llvm apt details: https://apt.llvm.org
+ - run: apt-add-repository "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-4.0 main"
+ - run: apt-get update -qq
+ - run: >
+ apt-get install -y
+ build-essential
+ curl
+ asciidoctor
+ cmake
+ libmbedtls-dev
+ ninja-build
+ clang-4.0
+ clang-format-4.0
+ - run: ./etc/format-check.sh
+ - run: ./.circleci/build-and-test.sh
- - run:
- name: Run Tests
- command: cd build && ninja test
- environment:
- CTEST_OUTPUT_ON_FAILURE: 1
+ "gcc - build, test, coverage":
+ docker:
+ - image: ubuntu:16.04
+ environment:
+ CC: gcc-7
+ CXX: g++-7
+ COVERAGE: "ON"
+ GCOV: gcov-7
+ steps:
+ - checkout
+ - run: apt-get update -qq
+ - run: apt-get install -y software-properties-common
+ - run: add-apt-repository ppa:ubuntu-toolchain-r/test
+ - run: apt-get update -qq
+ - run: >
+ apt-get install -y
+ build-essential
+ curl
+ asciidoctor
+ cmake
+ libmbedtls-dev
+ ninja-build
+ gcc-7
+ g++-7
+ - run: ./.circleci/build-and-test.sh
+ - run: ./etc/codecov.sh
-# - run:
-# name: Check Format
-# command: ./etc/format-check.sh
+workflows:
+ version: 2
+ build_and_test:
+ jobs:
+ - "clang - build, test"
+ - "gcc - build, test, coverage"
diff --git a/.circleci/images/clang/Dockerfile b/.circleci/images/clang/Dockerfile
new file mode 100644
index 00000000..02444a11
--- /dev/null
+++ b/.circleci/images/clang/Dockerfile
@@ -0,0 +1,17 @@
+FROM ubuntu:16.04
+
+RUN apt-get update -qq && apt-get install -y software-properties-common
+RUN apt-add-repository "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-4.0 main"
+RUN apt-get update -qq && apt-get install -y \
+ asciidoctor \
+ build-essential \
+ clang-4.0 \
+ clang++-4.0 \
+ clang-format-4.0 \
+ cmake \
+ curl \
+ git \
+ gzip \
+ libmbedtls-dev \
+ ninja-build \
+ openssh-client
diff --git a/.circleci/images/docker-deploy.sh b/.circleci/images/docker-deploy.sh
new file mode 100644
index 00000000..5ebb1d84
--- /dev/null
+++ b/.circleci/images/docker-deploy.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+# increment tag each time either dockerfile changes
+TAG=0.0.1
+
+docker login -u $DOCKER_LOGIN -p $DOCKER_PASSWORD
+
+pushd clang
+docker build -t nng/ci/clang:$TAG .
+popd
+
+pushd gcc
+docker build -t nng/ci/gcc:$TAG .
+popd
+
+docker push nng/ci/clang:$TAG
+docker push nng/ci/gcc:$TAG
diff --git a/.circleci/images/gcc/Dockerfile b/.circleci/images/gcc/Dockerfile
new file mode 100644
index 00000000..783717ed
--- /dev/null
+++ b/.circleci/images/gcc/Dockerfile
@@ -0,0 +1,16 @@
+FROM ubuntu:16.04
+
+RUN apt-get update -qq && apt-get install -y software-properties-common
+RUN add-apt-repository ppa:ubuntu-toolchain-r/test
+RUN apt-get update -qq && apt-get install -y \
+ asciidoctor \
+ build-essential \
+ cmake \
+ curl \
+ g++-7 \
+ gcc-7 \
+ git \
+ gzip \
+ libmbedtls-dev \
+ ninja-build \
+ openssh-client