config.yml 3.7 KB

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