parameters:

# v2: 11m.
defaults: &defaults
  resource_class: large
  docker:
      - image: bepsays/ci-hugoreleaser:1.22000.20100
environment: &buildenv
      GOMODCACHE: /root/project/gomodcache
version: 2
jobs:
  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 "bjorn.erik.pedersen+hugoreleaser@gmail.com"
            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: bepsays/ci-hugoreleaser-linux-arm64:1.22000.20100
    steps:
      - *restore-cache
      - &attach-workspace
        attach_workspace:
          at: /tmp/workspace
      - run:
          command: |
                  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:
          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:
  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
     
  
       
