diff options
Diffstat (limited to '.circleci/config.yml')
-rw-r--r-- | .circleci/config.yml | 132 |
1 files changed, 111 insertions, 21 deletions
diff --git a/.circleci/config.yml b/.circleci/config.yml index 588d3d894..0ff955936 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,27 +1,117 @@ -version: 2.1 -setup: true -orbs: - continuation: circleci/continuation@1 +parameters: + +# v2: 11m. +defaults: &defaults + resource_class: large + docker: + - image: bepsays/ci-hugoreleaser:1.22300.20000 +environment: &buildenv + GOMODCACHE: /root/project/gomodcache +version: 2 jobs: - setup: + prepare_release: + <<: *defaults + environment: &buildenv + GOMODCACHE: /root/project/gomodcache + steps: + - &remote-docker + setup_remote_docker: + version: 20.10.14 + - checkout: + path: hugo + - &git-config + run: + command: | + git config --global user.email "[email protected]" + git config --global user.name "hugoreleaser" + - run: + command: | + cd hugo + go mod download + go run -tags release main.go release --step 1 + - save_cache: + key: git-sha-{{ .Revision }} + paths: + - hugo + - gomodcache + build_container1: + <<: [*defaults] + environment: + <<: [*buildenv] + steps: + - &restore-cache + restore_cache: + key: git-sha-{{ .Revision }} + - run: + no_output_timeout: 20m + command: | + mkdir -p /tmp/files/dist1 + cd hugo + hugoreleaser build -paths "builds/container1/**" -workers 3 -dist /tmp/files/dist1 -chunks $CIRCLE_NODE_TOTAL -chunk-index $CIRCLE_NODE_INDEX + - &persist-workspace + persist_to_workspace: + root: /tmp/files + paths: + - dist1 + - dist2 + parallelism: 7 + build_container2: + <<: [*defaults] + environment: + <<: [*buildenv] docker: - - image: cimg/go:1.21 + - image: bepsays/ci-hugoreleaser-linux-arm64:1.22300.20000 steps: - - checkout + - *restore-cache + - &attach-workspace + attach_workspace: + at: /tmp/workspace - run: command: | - export SKIP=$(git log -n 1 $CIRCLE_SHA1 --pretty=%B | grep -q "NOCIRCLECI" && echo "true" || echo "false") - echo "{\"skip\": $SKIP}" >> set-up-params.json - - continuation/continue: - parameters: set-up-params.json - configuration_path: .circleci/build.yml - + mkdir -p /tmp/files/dist2 + cd hugo + hugoreleaser build -paths "builds/container2/**" -workers 1 -dist /tmp/files/dist2 + - *persist-workspace + archive_and_release: + <<: [*defaults] + environment: + <<: [*buildenv] + steps: + - *restore-cache + - *attach-workspace + - *git-config + - run: + name: Add github.com to known hosts + command: ssh-keyscan github.com >> ~/.ssh/known_hosts + - run: + command: | + cp -a /tmp/workspace/dist1/. ./hugo/dist + cp -a /tmp/workspace/dist2/. ./hugo/dist + - run: + command: | + cd hugo + hugoreleaser archive + hugoreleaser release + go run -tags release main.go release --step 2 workflows: - configure: - when: - and: - - matches: - pattern: "^release.+" - value: << pipeline.git.branch >> - jobs: - - setup + version: 2 + release: + jobs: + - prepare_release: + filters: + branches: + only: /release-.*/ + - build_container1: + requires: + - prepare_release + - build_container2: + requires: + - prepare_release + - archive_and_release: + context: org-global + requires: + - build_container1 + - build_container2 + + + |