version: 2.1 workflows: version: 2 build: jobs: - checkout_code - lint: requires: - checkout_code go_version: "1.12" vips_version: "8.8" - build: name: go1.12_vips8.8 requires: - checkout_code go_version: "1.12" vips_version: "8.8" - 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.11_vips8.8 requires: - checkout_code go_version: "1.11" vips_version: "8.8" - 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.10_vips8.8 requires: - checkout_code go_version: "1.10" vips_version: "8.8" - 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" executors: imgproxy: docker: - image: "darthsim/imgproxy-circleci:latest" working_directory: /go/src/imgproxy environment: BASH_ENV: "/root/.bashrc" commands: setup_vips: parameters: vips_version: type: string steps: - run: name: Setup Vips command: | echo 'LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/root/vips/<< parameters.vips_version >>/lib"' >> $BASH_ENV echo 'PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/root/vips/<< parameters.vips_version >>/lib/pkgconfig"' >> $BASH_ENV install_go: parameters: go_version: type: string steps: - run: name: Install Go command: | 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: vips_version: type: string go_version: type: string steps: - attach_workspace: at: . - setup_vips: vips_version: << parameters.vips_version >> - 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: vips_version: type: string go_version: type: string steps: - attach_workspace: at: . - setup_vips: vips_version: << parameters.vips_version >> - install_go: go_version: << parameters.go_version >> - run: name: Build imgproxy command: go test -v