Skip to content

Commit 45e1084

Browse files
committed
Add linux/arm64 extended to release setup
Fixes gohugoio#8257
1 parent c983484 commit 45e1084

13 files changed

+438
-1183
lines changed

.circleci/config.yml

+95-32
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,114 @@
1+
parameters:
2+
3+
# v2: 11m.
14
defaults: &defaults
5+
resource_class: large
26
docker:
3-
- image: bepsays/ci-goreleaser:1.21900.20000
4-
environment:
5-
CGO_ENABLED: "0"
6-
7+
- image: bepsays/ci-hugoreleaser:1.21900.20000
8+
environment: &buildenv
9+
GOMODCACHE: /root/project/gomodcache
710
version: 2
811
jobs:
9-
build:
10-
<<: *defaults
12+
prepare_release:
13+
<<: *defaults
14+
environment: &buildenv
15+
GOMODCACHE: /root/project/gomodcache
1116
steps:
12-
- checkout:
17+
- &remote-docker
18+
setup_remote_docker:
19+
version: 20.10.14
20+
- checkout:
1321
path: hugo
22+
- &git-config
23+
run:
24+
command: |
25+
git config --global user.email "[email protected]"
26+
git config --global user.name "hugoreleaser"
1427
- run:
15-
command: |
16-
git clone [email protected]:gohugoio/hugoDocs.git
17-
cd hugo
18-
go mod download
19-
sleep 5
20-
go mod verify
21-
- persist_to_workspace:
22-
root: .
23-
paths: .
24-
release:
25-
<<: *defaults
28+
command: |
29+
cd hugo
30+
go mod download
31+
go run -tags release main.go release --step 1
32+
- save_cache:
33+
key: git-sha-{{ .Revision }}
34+
paths:
35+
- hugo
36+
- gomodcache
37+
build_container1:
38+
<<: [*defaults]
39+
environment:
40+
<<: [*buildenv]
2641
steps:
27-
- attach_workspace:
28-
at: /root/project
42+
- &restore-cache
43+
restore_cache:
44+
key: git-sha-{{ .Revision }}
2945
- run:
30-
command: |
31-
cd hugo
32-
git config --global user.email "[email protected]"
33-
git config --global user.name "hugoreleaser"
34-
go run -tags release main.go release -r ${CIRCLE_BRANCH}
35-
46+
no_output_timeout: 20m
47+
command: |
48+
mkdir -p /tmp/files/dist1
49+
cd hugo
50+
hugoreleaser build -paths "builds/container1/**" -workers 3 -dist /tmp/files/dist1 -chunks $CIRCLE_NODE_TOTAL -chunk-index $CIRCLE_NODE_INDEX
51+
- &persist-workspace
52+
persist_to_workspace:
53+
root: /tmp/files
54+
paths:
55+
- dist1
56+
- dist2
57+
parallelism: 7
58+
build_container2:
59+
<<: [*defaults]
60+
environment:
61+
<<: [*buildenv]
62+
docker:
63+
- image: bepsays/ci-hugoreleaser-linux-arm64:1.21900.20000
64+
steps:
65+
- *restore-cache
66+
- &attach-workspace
67+
attach_workspace:
68+
at: /tmp/workspace
69+
- run:
70+
command: |
71+
mkdir -p /tmp/files/dist2
72+
cd hugo
73+
hugoreleaser build -paths "builds/container2/**" -workers 1 -dist /tmp/files/dist2
74+
- *persist-workspace
75+
archive_and_release:
76+
<<: [*defaults]
77+
environment:
78+
<<: [*buildenv]
79+
steps:
80+
- *restore-cache
81+
- *attach-workspace
82+
- *git-config
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
3693
workflows:
3794
version: 2
3895
release:
3996
jobs:
40-
- build:
97+
- prepare_release:
4198
filters:
4299
branches:
43100
only: /release-.*/
44-
- hold:
45-
type: approval
101+
- build_container1:
102+
requires:
103+
- prepare_release
104+
- build_container2:
46105
requires:
47-
- build
48-
- release:
106+
- prepare_release
107+
- archive_and_release:
49108
context: org-global
50109
requires:
51-
- hold
110+
- build_container1
111+
- build_container2
112+
113+
114+

commands/release.go

+11-12
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717
package commands
1818

1919
import (
20-
"errors"
21-
2220
"github.com/gohugoio/hugo/config"
2321
"github.com/gohugoio/hugo/releaser"
2422
"github.com/spf13/cobra"
@@ -29,10 +27,9 @@ var _ cmder = (*releaseCommandeer)(nil)
2927
type releaseCommandeer struct {
3028
cmd *cobra.Command
3129

32-
version string
33-
34-
skipPublish bool
35-
try bool
30+
step int
31+
skipPush bool
32+
try bool
3633
}
3734

3835
func createReleaser() cmder {
@@ -50,9 +47,9 @@ func createReleaser() cmder {
5047
return r.release()
5148
}
5249

53-
r.cmd.PersistentFlags().StringVarP(&r.version, "rel", "r", "", "new release version, i.e. 0.25.1")
54-
r.cmd.PersistentFlags().BoolVarP(&r.skipPublish, "skip-publish", "", false, "skip all publishing pipes of the release")
55-
r.cmd.PersistentFlags().BoolVarP(&r.try, "try", "", false, "simulate a release, i.e. no changes")
50+
r.cmd.PersistentFlags().BoolVarP(&r.skipPush, "skip-push", "", false, "skip pushing to remote")
51+
r.cmd.PersistentFlags().BoolVarP(&r.try, "try", "", false, "no changes")
52+
r.cmd.PersistentFlags().IntVarP(&r.step, "step", "", 0, "step to run (1: set new version 2: prepare next dev version)")
5653

5754
return r
5855
}
@@ -65,8 +62,10 @@ func (c *releaseCommandeer) flagsToConfig(cfg config.Provider) {
6562
}
6663

6764
func (r *releaseCommandeer) release() error {
68-
if r.version == "" {
69-
return errors.New("must set the --rel flag to the relevant version number")
65+
rel, err := releaser.New(r.skipPush, r.try, r.step)
66+
if err != nil {
67+
return err
7068
}
71-
return releaser.New(r.version, r.skipPublish, r.try).Run()
69+
70+
return rel.Run()
7271
}

0 commit comments

Comments
 (0)