config.yml 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  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.12"
  11. vips_version: "8.8"
  12. - build:
  13. name: go1.12_vips8.8
  14. requires:
  15. - checkout_code
  16. go_version: "1.12"
  17. vips_version: "8.8"
  18. - build:
  19. name: go1.12_vips8.7
  20. requires:
  21. - checkout_code
  22. go_version: "1.12"
  23. vips_version: "8.7"
  24. - build:
  25. name: go1.12_vips8.6
  26. requires:
  27. - checkout_code
  28. go_version: "1.12"
  29. vips_version: "8.6"
  30. - build:
  31. name: go1.11_vips8.8
  32. requires:
  33. - checkout_code
  34. go_version: "1.11"
  35. vips_version: "8.8"
  36. - build:
  37. name: go1.11_vips8.7
  38. requires:
  39. - checkout_code
  40. go_version: "1.11"
  41. vips_version: "8.7"
  42. - build:
  43. name: go1.11_vips8.6
  44. requires:
  45. - checkout_code
  46. go_version: "1.11"
  47. vips_version: "8.6"
  48. - build:
  49. name: go1.10_vips8.8
  50. requires:
  51. - checkout_code
  52. go_version: "1.10"
  53. vips_version: "8.8"
  54. - build:
  55. name: go1.10_vips8.7
  56. requires:
  57. - checkout_code
  58. go_version: "1.10"
  59. vips_version: "8.7"
  60. - build:
  61. name: go1.10_vips8.6
  62. requires:
  63. - checkout_code
  64. go_version: "1.10"
  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 GOPATH=/go' >> $BASH_ENV
  95. echo 'export PATH="$PATH:$(go env GOPATH)/bin"' >> $BASH_ENV
  96. echo 'export CGO_LDFLAGS_ALLOW="-s|-w"' >> $BASH_ENV
  97. jobs:
  98. checkout_code:
  99. docker:
  100. - image: circleci/slim-base:latest
  101. working_directory: /go/src/imgproxy
  102. steps:
  103. - checkout:
  104. path: /go/src/imgproxy
  105. - persist_to_workspace:
  106. root: .
  107. paths: [.]
  108. lint:
  109. executor: imgproxy
  110. parameters:
  111. vips_version:
  112. type: string
  113. go_version:
  114. type: string
  115. steps:
  116. - attach_workspace:
  117. at: .
  118. - setup_vips:
  119. vips_version: << parameters.vips_version >>
  120. - install_go:
  121. go_version: << parameters.go_version >>
  122. - run:
  123. name: Install golangci-lint
  124. 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
  125. - run:
  126. name: Lint imgproxy
  127. command: golangci-lint run .
  128. build:
  129. executor: imgproxy
  130. parameters:
  131. vips_version:
  132. type: string
  133. go_version:
  134. type: string
  135. steps:
  136. - attach_workspace:
  137. at: .
  138. - setup_vips:
  139. vips_version: << parameters.vips_version >>
  140. - install_go:
  141. go_version: << parameters.go_version >>
  142. - run:
  143. name: Build imgproxy
  144. command: go test -v