You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

115 lines
3.0 KiB

  1. parameters:
  2. # v2: 11m.
  3. defaults: &defaults
  4. resource_class: large
  5. docker:
  6. - image: bepsays/ci-hugoreleaser:1.22400.20000
  7. environment: &buildenv
  8. GOMODCACHE: /root/project/gomodcache
  9. version: 2
  10. jobs:
  11. prepare_release:
  12. <<: *defaults
  13. environment: &buildenv
  14. GOMODCACHE: /root/project/gomodcache
  15. steps:
  16. - setup_remote_docker
  17. - checkout:
  18. path: hugo
  19. - &git-config
  20. run:
  21. command: |
  22. git config --global user.email "bjorn.erik.pedersen+hugoreleaser@gmail.com"
  23. git config --global user.name "hugoreleaser"
  24. - run:
  25. command: |
  26. cd hugo
  27. go mod download
  28. go run -tags release main.go release --step 1
  29. - save_cache:
  30. key: git-sha-{{ .Revision }}
  31. paths:
  32. - hugo
  33. - gomodcache
  34. build_container1:
  35. <<: [*defaults]
  36. environment:
  37. <<: [*buildenv]
  38. steps:
  39. - &restore-cache
  40. restore_cache:
  41. key: git-sha-{{ .Revision }}
  42. - run:
  43. no_output_timeout: 20m
  44. command: |
  45. mkdir -p /tmp/files/dist1
  46. cd hugo
  47. hugoreleaser build -paths "builds/container1/**" -workers 3 -dist /tmp/files/dist1 -chunks $CIRCLE_NODE_TOTAL -chunk-index $CIRCLE_NODE_INDEX
  48. - &persist-workspace
  49. persist_to_workspace:
  50. root: /tmp/files
  51. paths:
  52. - dist1
  53. - dist2
  54. parallelism: 7
  55. build_container2:
  56. <<: [*defaults]
  57. environment:
  58. <<: [*buildenv]
  59. docker:
  60. - image: bepsays/ci-hugoreleaser-linux-arm64:1.22400.20000
  61. steps:
  62. - *restore-cache
  63. - &attach-workspace
  64. attach_workspace:
  65. at: /tmp/workspace
  66. - run:
  67. command: |
  68. mkdir -p /tmp/files/dist2
  69. cd hugo
  70. hugoreleaser build -paths "builds/container2/**" -workers 1 -dist /tmp/files/dist2
  71. - *persist-workspace
  72. archive_and_release:
  73. <<: [*defaults]
  74. environment:
  75. <<: [*buildenv]
  76. steps:
  77. - *restore-cache
  78. - *attach-workspace
  79. - *git-config
  80. - run:
  81. name: Add github.com to known hosts
  82. command: ssh-keyscan github.com >> ~/.ssh/known_hosts
  83. - run:
  84. command: |
  85. cp -a /tmp/workspace/dist1/. ./hugo/dist
  86. cp -a /tmp/workspace/dist2/. ./hugo/dist
  87. - run:
  88. command: |
  89. cd hugo
  90. hugoreleaser archive
  91. hugoreleaser release
  92. go run -tags release main.go release --step 2
  93. workflows:
  94. version: 2
  95. release:
  96. jobs:
  97. - prepare_release:
  98. filters:
  99. branches:
  100. only: /release-.*/
  101. - build_container1:
  102. requires:
  103. - prepare_release
  104. - build_container2:
  105. requires:
  106. - prepare_release
  107. - archive_and_release:
  108. context: org-global
  109. requires:
  110. - build_container1
  111. - build_container2