Skip to content
This repository has been archived by the owner on Aug 9, 2021. It is now read-only.

Commit

Permalink
Merge ac9b444 into 73c2544
Browse files Browse the repository at this point in the history
  • Loading branch information
AnalogJ committed Aug 28, 2018
2 parents 73c2544 + ac9b444 commit d1e2374
Show file tree
Hide file tree
Showing 101 changed files with 2,975 additions and 934 deletions.
83 changes: 47 additions & 36 deletions circle.yml → .circleci/config.yml
Expand Up @@ -31,98 +31,109 @@ jobs:
- run:
name: Build application Docker image
command: |
docker build -f ci/Dockerfile.base --tag analogj/capsulecd-build:base .
docker build -f ci/Dockerfile.chef --tag analogj/capsulecd-build:chef .
docker build -f ci/Dockerfile.node --tag analogj/capsulecd-build:node .
docker build -f ci/Dockerfile.python --tag analogj/capsulecd-build:python .
docker build -f ci/Dockerfile.ruby --tag analogj/capsulecd-build:ruby .
docker build -f ci/Dockerfile.golang --tag analogj/capsulecd-build:golang .
docker build -f ci/Dockerfile.base --tag analogj/capsulecd-ci:base .
docker build -f ci/Dockerfile.chef --tag analogj/capsulecd-ci:chef .
docker build -f ci/Dockerfile.node --tag analogj/capsulecd-ci:node .
docker build -f ci/Dockerfile.python --tag analogj/capsulecd-ci:python .
docker build -f ci/Dockerfile.ruby --tag analogj/capsulecd-ci:ruby .
docker build -f ci/Dockerfile.golang --tag analogj/capsulecd-ci:golang .
- run:
name: Run Base Docker containers with coverage
shell: bash
command: |
CAPSULECD_ENV=base
echo "#################################################### $CAPSULECD_ENV"
docker run -e "CI=true" \
--name $CAPSULECD_ENV \
analogj/capsulecd-build:$CAPSULECD_ENV \
./ci/coverage.sh $CAPSULECD_ENV
analogj/capsulecd-ci:$CAPSULECD_ENV \
./ci/test-coverage.sh $CAPSULECD_ENV
docker cp $CAPSULECD_ENV:/coverage/coverage-$CAPSULECD_ENV.txt /coverage
when: always
- run:
name: Run Chef Docker containers with coverage
shell: bash
command: |
CAPSULECD_ENV=chef
echo "#################################################### $CAPSULECD_ENV"
docker run -e "CI=true" \
--name $CAPSULECD_ENV \
analogj/capsulecd-build:$CAPSULECD_ENV \
./ci/coverage.sh $CAPSULECD_ENV
analogj/capsulecd-ci:$CAPSULECD_ENV \
./ci/test-coverage.sh $CAPSULECD_ENV
docker cp $CAPSULECD_ENV:/coverage/coverage-$CAPSULECD_ENV.txt /coverage
when: always
- run:
name: Run Node Docker containers with coverage
shell: bash
command: |
CAPSULECD_ENV=node
echo "#################################################### $CAPSULECD_ENV"
docker run -e "CI=true" \
--name $CAPSULECD_ENV \
analogj/capsulecd-build:$CAPSULECD_ENV \
./ci/coverage.sh $CAPSULECD_ENV
analogj/capsulecd-ci:$CAPSULECD_ENV \
./ci/test-coverage.sh $CAPSULECD_ENV
docker cp $CAPSULECD_ENV:/coverage/coverage-$CAPSULECD_ENV.txt /coverage
when: always
- run:
name: Run Python Docker containers with coverage
shell: bash
command: |
CAPSULECD_ENV=python
echo "#################################################### $CAPSULECD_ENV"
docker run -e "CI=true" \
--name $CAPSULECD_ENV \
analogj/capsulecd-build:$CAPSULECD_ENV \
./ci/coverage.sh $CAPSULECD_ENV
analogj/capsulecd-ci:$CAPSULECD_ENV \
./ci/test-coverage.sh $CAPSULECD_ENV
docker cp $CAPSULECD_ENV:/coverage/coverage-$CAPSULECD_ENV.txt /coverage
when: always
- run:
name: Run Ruby Docker containers with coverage
shell: bash
command: |
CAPSULECD_ENV=ruby
echo "#################################################### $CAPSULECD_ENV"
docker run -e "CI=true" \
--name $CAPSULECD_ENV \
analogj/capsulecd-build:$CAPSULECD_ENV \
./ci/coverage.sh $CAPSULECD_ENV
analogj/capsulecd-ci:$CAPSULECD_ENV \
./ci/test-coverage.sh $CAPSULECD_ENV
docker cp $CAPSULECD_ENV:/coverage/coverage-$CAPSULECD_ENV.txt /coverage
when: always
- run:
name: Run Golang Docker containers with coverage
shell: bash
command: |
CAPSULECD_ENV=golang
echo "#################################################### $CAPSULECD_ENV"
docker run -e "CI=true" \
--name $CAPSULECD_ENV \
analogj/capsulecd-build:$CAPSULECD_ENV \
./ci/coverage.sh $CAPSULECD_ENV
analogj/capsulecd-ci:$CAPSULECD_ENV \
./ci/test-coverage.sh $CAPSULECD_ENV
docker cp $CAPSULECD_ENV:/coverage/coverage-$CAPSULECD_ENV.txt /coverage
- run:
name: Merge coverage reports and submit
shell: bash
command: |
ls -alt /coverage
# upload to codecov.
bash <(curl -s https://codecov.io/bash) -f "*.txt" -s /coverage
when: always
- store_artifacts:
path: /coverage
destination: coverage

# - run:
# name: Merge generated coverage reports using webhook.
# name: Merge coverage reports and submit
# command: |
# ls -alt /coverage
#
# # upload to codecov.
# bash <(curl -s https://codecov.io/bash) -f "*.txt" -s /coverage
# when: always



#
# build capsulecd every week, to ensure that language/dependency breaking changes are caught early.
# https://crontab.guru/every-week
#workflows:
# version: 2
# nightly:
# triggers:
# - schedule:
# cron: "0 0 * * 0"
# filters:
# branches:
# only:
# - master
# jobs:
# - build
4 changes: 3 additions & 1 deletion .gitignore
Expand Up @@ -75,4 +75,6 @@ _testmain.go
vendor
glide.lock
/capsulecd-darwin-amd64
/capsulecd-linux-amd64
/capsulecd-linux-amd64

test_binary
4 changes: 2 additions & 2 deletions Dockerfile.build
Expand Up @@ -25,8 +25,8 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
git \
curl \
&& rm -rf /var/lib/apt/lists/* \
&& go get -u gopkg.in/alecthomas/gometalinter.v1 \
&& gometalinter.v1 --install \
&& go get -u gopkg.in/alecthomas/gometalinter.v2 \
&& gometalinter.v2 --install \
&& go get github.com/Masterminds/glide

COPY ./ci/capsulecd.sh /scripts/capsulecd.sh
Expand Down
1 change: 1 addition & 0 deletions README.md
Expand Up @@ -292,3 +292,4 @@ CapsuleCD is licensed under the MIT License - see the
- http://craigwickesser.com/2015/02/golang-cmd-with-custom-environment/
- https://opencredo.com/why-i-dont-like-error-handling-in-go/
- https://godoc.org/github.com/pkg/errors
- https://blog.strapi.io/testing-npm-package-before-releasing-it-using-verdaccio-and-ngrok/
3 changes: 2 additions & 1 deletion capsule.yml
Expand Up @@ -7,7 +7,8 @@ engine_cmd_compile:
- cp /usr/local/linux/lib/pkgconfig/libgit2.pc vendor/gopkg.in/libgit2/git2go.v25/vendor/libgit2/build/libgit2.pc
- '. /scripts/toolchains/linux/linux-build-env.sh && go build -ldflags "-X main.goos=linux -X main.goarch=amd64" -o capsulecd-linux-amd64 -tags "static" $(go list ./cmd/...)'
engine_cmd_test: 'go test -v -tags "static" $(glide novendor)'
engine_cmd_lint: 'gometalinter.v1 --vendor --config=gometalinter.json ./...'
engine_cmd_lint: 'gometalinter.v2 --vendor --config=gometalinter.json ./...'
engine_disable_lint: true
scm_enable_branch_cleanup: true
scm_release_assets:
- local_path: capsulecd-linux-amd64
Expand Down
10 changes: 8 additions & 2 deletions ci/Dockerfile.base
@@ -1,3 +1,5 @@
ARG PACKAGE_TYPE=base

#################################################
#
# Base
Expand All @@ -6,9 +8,11 @@
# It does not actually build the capsulecd executable
# It runs unit tests for each supported engine type.
#
# Use the docker containers in dist as an example of what a proper runtime-environment for CapsuleCD looks like.
# Use the docker containers in https://github.com/AnalogJ/capsulecd-docker as an example of what a
# proper runtime-environment for CapsuleCD looks like.
#
#################################################

FROM analogj/libgit2-crossbuild:linux-amd64 AS base
MAINTAINER Jason Kulatunga <jason@thesparktree.com>
WORKDIR /go/src/capsulecd
Expand All @@ -28,4 +32,6 @@ RUN glide install \

ENV SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt

CMD ci/coverage.sh
RUN ci/test-build.sh ${PACKAGE_TYPE}

CMD ci/test-coverage.sh
58 changes: 40 additions & 18 deletions ci/Dockerfile.chef
@@ -1,19 +1,52 @@
ARG PACKAGE_TYPE=chef

#################################################
#
# Base
# This container should not be used as a runtime environment.
# It is based off a massive build image (crossbuild) which has lots of unnecessary build tools
# It does not actually build the capsulecd executable
# It runs unit tests for each supported engine type.
#
# Use the docker containers in https://github.com/AnalogJ/capsulecd-docker as an example of what a
# proper runtime-environment for CapsuleCD looks like.
#
#################################################

FROM analogj/libgit2-crossbuild:linux-amd64 AS base
MAINTAINER Jason Kulatunga <jason@thesparktree.com>
WORKDIR /go/src/capsulecd

RUN apt-get update && apt-get install -y --no-install-recommends \
apt-transport-https \
ca-certificates \
&& rm -rf /var/lib/apt/lists/* \
&& go get github.com/Masterminds/glide

COPY . .

## download glide deps & move libgit2 library into expected location.
RUN glide install \
&& mkdir -p /go/src/capsulecd/vendor/gopkg.in/libgit2/git2go.v25/vendor/libgit2/build \
&& cp -r /usr/local/lib/libgit2/lib/pkgconfig/. /go/src/capsulecd/vendor/gopkg.in/libgit2/git2go.v25/vendor/libgit2/build/

ENV SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt

RUN ci/test-build.sh ${PACKAGE_TYPE}

##################################################
##
## ChefDK
##
##################################################
FROM analogj/libgit2-crossbuild:linux-amd64 AS base
FROM chef/chefdk AS chef
MAINTAINER Jason Kulatunga <jason@thesparktree.com>

RUN apt-get update && apt-get install -y --no-install-recommends \
apt-transport-https \
ca-certificates \
git \
curl \
gcc \
g++ \
apt-transport-https \
ca-certificates \
&& rm -rf /var/lib/apt/lists/* \
&& gem install bundler-audit

Expand All @@ -25,21 +58,10 @@ RUN curl -fsSL "https://storage.googleapis.com/golang/go${GO_VERSION}.linux-amd6
ENV PATH="/go/bin:/usr/local/go/bin:/root/.chefdk/gem/ruby/2.4.0/bin:${PATH}" \
GOPATH="/go"

ENV PKG_CONFIG_PATH="/usr/lib/pkgconfig/:/usr/local/lib/pkgconfig/:/usr/local/lib/libgit2/lib/pkgconfig:/usr/local/lib/openssl/lib/pkgconfig:/usr/local/lib/libssh2"
RUN go get github.com/Masterminds/glide
COPY --from=base /usr/local/lib/libgit2/ /usr/local/lib/libgit2/
COPY --from=base /usr/local/lib/libssh2/ /usr/local/lib/libssh2/
COPY --from=base /usr/local/lib/openssl/ /usr/local/lib/openssl/
COPY --from=base /go/src/capsulecd /go/src/capsulecd

WORKDIR /go/src/capsulecd

COPY . .

## download glide deps & move libgit2 library into expected location.
RUN glide install \
&& mkdir -p /go/src/capsulecd/vendor/gopkg.in/libgit2/git2go.v25/vendor/libgit2/build \
&& cp -r /usr/local/lib/libgit2/lib/pkgconfig/. /go/src/capsulecd/vendor/gopkg.in/libgit2/git2go.v25/vendor/libgit2/build/

ENV SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt

CMD ci/coverage.sh
CMD ci/test-coverage.sh
61 changes: 42 additions & 19 deletions ci/Dockerfile.golang
@@ -1,9 +1,44 @@
ARG PACKAGE_TYPE=golang

#################################################
#
# Base
# This container should not be used as a runtime environment.
# It is based off a massive build image (crossbuild) which has lots of unnecessary build tools
# It does not actually build the capsulecd executable
# It runs unit tests for each supported engine type.
#
# Use the docker containers in https://github.com/AnalogJ/capsulecd-docker as an example of what a
# proper runtime-environment for CapsuleCD looks like.
#
#################################################

FROM analogj/libgit2-crossbuild:linux-amd64 AS base
MAINTAINER Jason Kulatunga <jason@thesparktree.com>
WORKDIR /go/src/capsulecd

RUN apt-get update && apt-get install -y --no-install-recommends \
apt-transport-https \
ca-certificates \
&& rm -rf /var/lib/apt/lists/* \
&& go get github.com/Masterminds/glide

COPY . .

## download glide deps & move libgit2 library into expected location.
RUN glide install \
&& mkdir -p /go/src/capsulecd/vendor/gopkg.in/libgit2/git2go.v25/vendor/libgit2/build \
&& cp -r /usr/local/lib/libgit2/lib/pkgconfig/. /go/src/capsulecd/vendor/gopkg.in/libgit2/git2go.v25/vendor/libgit2/build/

ENV SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt

RUN ci/test-build.sh ${PACKAGE_TYPE}

##################################################
##
## Golang
##
##################################################
FROM analogj/libgit2-crossbuild:linux-amd64 AS base
FROM golang:1.8 AS golang
MAINTAINER Jason Kulatunga <jason@thesparktree.com>

Expand All @@ -12,28 +47,16 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
git \
curl \
gcc \
g++ \
&& rm -rf /var/lib/apt/lists/* \
&& go get -u gopkg.in/alecthomas/gometalinter.v1 \
&& gometalinter.v1 --install \
&& go get github.com/Masterminds/glide

ENV PKG_CONFIG_PATH="/usr/lib/pkgconfig/:/usr/local/lib/pkgconfig/:/usr/local/lib/libgit2/lib/pkgconfig:/usr/local/lib/openssl/lib/pkgconfig:/usr/local/lib/libssh2"
&& go get -u gopkg.in/alecthomas/gometalinter.v2 \
&& gometalinter.v2 --install \
&& go get github.com/Masterminds/glide \
&& curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh

COPY --from=base /usr/local/lib/libgit2/ /usr/local/lib/libgit2/
COPY --from=base /usr/local/lib/libssh2/ /usr/local/lib/libssh2/
COPY --from=base /usr/local/lib/openssl/ /usr/local/lib/openssl/
COPY --from=base /go/src/capsulecd /go/src/capsulecd

WORKDIR /go/src/capsulecd

COPY . .

## download glide deps & move libgit2 library into expected location.
RUN glide install \
&& mkdir -p /go/src/capsulecd/vendor/gopkg.in/libgit2/git2go.v25/vendor/libgit2/build \
&& cp -r /usr/local/lib/libgit2/lib/pkgconfig/. /go/src/capsulecd/vendor/gopkg.in/libgit2/git2go.v25/vendor/libgit2/build/

ENV SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt

CMD ci/coverage.sh
CMD ci/test-coverage.sh

0 comments on commit d1e2374

Please sign in to comment.