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.

114 lines
2.9 KiB

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