From 6b5a22da469b6b8c06438ce5c8b31a712347a189 Mon Sep 17 00:00:00 2001 From: Alex Goodman Date: Mon, 15 Jun 2020 13:39:09 -0400 Subject: [PATCH] add basic pipeline --- .circleci/config.yml | 109 ++++++++++++++++++++++++++++++++++++++++ .golangci.yaml | 4 +- imgbom/distro/distro.go | 2 +- 3 files changed, 113 insertions(+), 2 deletions(-) create mode 100644 .circleci/config.yml diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 000000000..0536a9f42 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,109 @@ +version: 2.1 + +jobs: + run-static-analysis: + parameters: + version: + type: string + docker: + - image: circleci/golang:<< parameters.version >> + environment: + GO111MODULE: "on" + # 1CPU / 2GB RAM + resource_class: small + steps: + + - checkout + + - restore_cache: + keys: + - go-<< parameters.version >>-{{ checksum "go.sum" }}-{{ checksum "Makefile" }} + + - run: make bootstrap + + - save_cache: + key: go-<< parameters.version >>-{{ checksum "go.sum" }}-{{ checksum "Makefile" }} + paths: + - "/go/pkg/mod" + - ".tmp" + + - run: + name: run static analysis + command: make lint + + run-tests: + parameters: + version: + type: string + docker: + - image: circleci/golang:<< parameters.version >> + environment: + GO111MODULE: "on" + # 1CPU / 2GB RAM + resource_class: small + steps: + + - checkout + + - restore_cache: + keys: + - go-<< parameters.version >>-{{ checksum "go.sum" }}-{{ checksum "Makefile" }} + + - run: make bootstrap + + - save_cache: + key: go-<< parameters.version >>-{{ checksum "go.sum" }}-{{ checksum "Makefile" }} + paths: + - "/go/pkg/mod" + - ".tmp" + + - setup_remote_docker: + version: 18.06.0-ce + + - run: + name: enable docker client + command: | + # all of this to enable "circleci local execute ..." cli commands for /var/run/docker.sock + mkdir -p ${HOME}/.local/bin + cat \<< EOF > ${HOME}/.local/bin/docker + #!/bin/bash + set -xue + sudo -E ${HOME}/.local/bin/docker.bin \$@ + EOF + sudo mv /usr/bin/docker ${HOME}/.local/bin/docker.bin + chmod 755 ${HOME}/.local/bin/docker + + - run: + name: run unit tests + command: make unit + + - run: + name: build hash key for tar cache + command: find integration/test-fixtures/image-* -type f -exec md5sum {} + | awk '{print $1}' | sort | md5sum | tee integration/test-fixtures/tar-cache.key + + - restore_cache: + keys: + - integration-test-tar-cache-{{ checksum "integration/test-fixtures/tar-cache.key" }} + - run: + name: run integration tests + command: | + docker version + make integration + + - save_cache: + key: integration-test-tar-cache-{{ checksum "integration/test-fixtures/tar-cache.key" }} + paths: + - "integration/test-fixtures/tar-cache" + +workflows: + "Static Analysis & All Tests": + jobs: + - run-static-analysis: + name: "Static Analysis" + version: "1.14" + - run-tests: + name: "Unit & Integration Tests (go-1.13)" + version: "1.13" + - run-tests: + name: "Unit & Integration Tests (go-latest)" + version: "latest" \ No newline at end of file diff --git a/.golangci.yaml b/.golangci.yaml index 99603863a..f42162be8 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -1,4 +1,6 @@ -linter-settings: +linters-settings: + funlen: + lines: 70 linters: # inverted configuration with `enable-all` and `disable` is not scalable during updates of golangci-lint disable-all: true diff --git a/imgbom/distro/distro.go b/imgbom/distro/distro.go index c6a0e2a93..6ad0b2cae 100644 --- a/imgbom/distro/distro.go +++ b/imgbom/distro/distro.go @@ -38,5 +38,5 @@ func (d Distro) String() string { // Name provides a string repr of the distro func (d Distro) Name() string { - return fmt.Sprintf("%s", d.Type) + return d.Type.String() }