version: 2.1 workflows: version: 2 build: jobs: - checkout_code - lint: requires: - checkout_code go_version: "1.12" vips_version: "8.7" - build: name: go1.12_vips8.7 requires: - checkout_code go_version: "1.12" vips_version: "8.7" - build: name: go1.12_vips8.6 requires: - checkout_code go_version: "1.12" vips_version: "8.6" - build: name: go1.12_vips8.5 requires: - checkout_code go_version: "1.12" vips_version: "8.5" - build: name: go1.11_vips8.7 requires: - checkout_code go_version: "1.11" vips_version: "8.7" - build: name: go1.11_vips8.6 requires: - checkout_code go_version: "1.11" vips_version: "8.6" - build: name: go1.11_vips8.5 requires: - checkout_code go_version: "1.11" vips_version: "8.5" - build: name: go1.10_vips8.7 requires: - checkout_code go_version: "1.10" vips_version: "8.7" - build: name: go1.10_vips8.6 requires: - checkout_code go_version: "1.10" vips_version: "8.6" - build: name: go1.10_vips8.5 requires: - checkout_code go_version: "1.10" vips_version: "8.5" executors: imgproxy: docker: - image: "darthsim/imgproxy-circleci:latest" working_directory: /go/src/imgproxy parameters: vips_version: type: string environment: BASH_ENV: "/root/.bashrc" LD_LIBRARY_PATH: "$LD_LIBRARY_PATH:/root/vips/<< parameters.vips_version >>/lib" PKG_CONFIG_PATH: "$PKG_CONFIG_PATH:/root/vips/<< parameters.vips_version >>/lib/pkgconfig" commands: install_go: parameters: go_version: type: string steps: - run: | gvm install go<< parameters.go_version >> -B gvm use go<< parameters.go_version >> --default echo 'export GOPATH=/go' >> $BASH_ENV echo 'export PATH="$PATH:$(go env GOPATH)/bin"' >> $BASH_ENV echo 'export CGO_LDFLAGS_ALLOW="-s|-w"' >> $BASH_ENV jobs: checkout_code: docker: - image: circleci/slim-base:latest working_directory: /go/src/imgproxy steps: - checkout: path: /go/src/imgproxy - persist_to_workspace: root: . paths: [.] lint: executor: imgproxy parameters: go_version: type: string steps: - attach_workspace: at: . - install_go: go_version: << parameters.go_version >> - run: name: Install golangci-lint command: curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | BINARY=golangci-lint sh -s -- -b $(go env GOPATH)/bin v1.16.0 - run: name: Lint imgproxy command: golangci-lint run . build: executor: imgproxy parameters: go_version: type: string steps: - attach_workspace: at: . - install_go: go_version: << parameters.go_version >> - run: name: Build imgproxy command: go test -v