config.yml 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. version: 2.1
  2. workflows:
  3. version: 2
  4. build:
  5. jobs:
  6. - checkout_code
  7. - lint:
  8. requires:
  9. - checkout_code
  10. go_version: "1.13"
  11. vips_version: "8.8"
  12. - build:
  13. name: go1.13_vips8.8
  14. requires:
  15. - checkout_code
  16. go_version: "1.13"
  17. vips_version: "8.8"
  18. - build:
  19. name: go1.13_vips8.7
  20. requires:
  21. - checkout_code
  22. go_version: "1.13"
  23. vips_version: "8.7"
  24. - build:
  25. name: go1.13_vips8.6
  26. requires:
  27. - checkout_code
  28. go_version: "1.13"
  29. vips_version: "8.6"
  30. - build:
  31. name: go1.12_vips8.8
  32. requires:
  33. - checkout_code
  34. go_version: "1.12"
  35. vips_version: "8.8"
  36. - build:
  37. name: go1.12_vips8.7
  38. requires:
  39. - checkout_code
  40. go_version: "1.12"
  41. vips_version: "8.7"
  42. - build:
  43. name: go1.12_vips8.6
  44. requires:
  45. - checkout_code
  46. go_version: "1.12"
  47. vips_version: "8.6"
  48. - build:
  49. name: go1.11_vips8.8
  50. requires:
  51. - checkout_code
  52. go_version: "1.11.13"
  53. vips_version: "8.8"
  54. - build:
  55. name: go1.11_vips8.7
  56. requires:
  57. - checkout_code
  58. go_version: "1.11.13"
  59. vips_version: "8.7"
  60. - build:
  61. name: go1.11_vips8.6
  62. requires:
  63. - checkout_code
  64. go_version: "1.11.13"
  65. vips_version: "8.6"
  66. executors:
  67. imgproxy:
  68. docker:
  69. - image: "darthsim/imgproxy-circleci:latest"
  70. working_directory: /go/src/imgproxy
  71. environment:
  72. BASH_ENV: "/root/.bashrc"
  73. commands:
  74. setup_vips:
  75. parameters:
  76. vips_version:
  77. type: string
  78. steps:
  79. - run:
  80. name: Setup Vips
  81. command: |
  82. echo 'LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/root/vips/<< parameters.vips_version >>/lib"' >> $BASH_ENV
  83. echo 'PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/root/vips/<< parameters.vips_version >>/lib/pkgconfig"' >> $BASH_ENV
  84. install_go:
  85. parameters:
  86. go_version:
  87. type: string
  88. steps:
  89. - run:
  90. name: Install Go
  91. command: |
  92. gvm install go<< parameters.go_version >> -B
  93. gvm use go<< parameters.go_version >> --default
  94. echo 'export GO111MODULE=on' >> $BASH_ENV
  95. echo 'export GOPATH=/go' >> $BASH_ENV
  96. echo 'export PATH="$PATH:$(go env GOPATH)/bin"' >> $BASH_ENV
  97. echo 'export CGO_LDFLAGS_ALLOW="-s|-w"' >> $BASH_ENV
  98. jobs:
  99. checkout_code:
  100. docker:
  101. - image: circleci/slim-base:latest
  102. working_directory: /go/src/imgproxy
  103. steps:
  104. - checkout:
  105. path: /go/src/imgproxy
  106. - persist_to_workspace:
  107. root: .
  108. paths: [.]
  109. lint:
  110. executor: imgproxy
  111. parameters:
  112. vips_version:
  113. type: string
  114. go_version:
  115. type: string
  116. steps:
  117. - attach_workspace:
  118. at: .
  119. - setup_vips:
  120. vips_version: << parameters.vips_version >>
  121. - install_go:
  122. go_version: << parameters.go_version >>
  123. - run:
  124. name: Install golangci-lint
  125. command: curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | BINARY=golangci-lint sh -s -- -b $(go env GOPATH)/bin v1.18.0
  126. - run:
  127. name: Lint imgproxy
  128. command: golangci-lint run .
  129. build:
  130. executor: imgproxy
  131. parameters:
  132. vips_version:
  133. type: string
  134. go_version:
  135. type: string
  136. steps:
  137. - attach_workspace:
  138. at: .
  139. - setup_vips:
  140. vips_version: << parameters.vips_version >>
  141. - install_go:
  142. go_version: << parameters.go_version >>
  143. - restore_cache:
  144. keys:
  145. - go-modules-{{ checksum "go.sum" }}
  146. - run:
  147. name: Build imgproxy
  148. command: go test -v
  149. - save_cache:
  150. key: go-modules-{{ checksum "go.sum" }}
  151. paths:
  152. - "/go/pkg/mod"