on main help sign in
ci: release and nightly jobs (#90)
91bf008Carlos Alexandro Becker
.github/workflows/nightly.ymlnew file+12
@@ -0,0 +1,12 @@
1+name: nightly
2+
3+on:
4+ schedule:
5+ - cron: "0 0 * * *" # every day at midnight
6+ workflow_dispatch: # allows manual triggering
7+
8+jobs:
9+ nightly:
10+ uses: charmbracelet/meta/.github/workflows/nightly.yml@main
11+ secrets:
12+ goreleaser_key: ${{ secrets.GORELEASER_KEY }}
.github/workflows/release.yml+14−32
@@ -1,40 +1,22 @@
1−name: release
1+# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json
2+
3+name: goreleaser
2
4
3on:
5on:
4− workflow_dispatch:
5 push:
6 push:
6 tags:
7 tags:
7− - "*"
8+ - v*.*.*
8−
9−concurrency: ${{ github.workflow }}-${{ github.ref }}
10
9
11−permissions:
10+concurrency:
12− contents: write
11+ group: goreleaser
13− packages: write
12+ cancel-in-progress: true
14
13
15jobs:
14jobs:
16 goreleaser:
15 goreleaser:
17− runs-on: ubuntu-latest
16+ uses: charmbracelet/meta/.github/workflows/goreleaser.yml@main
18− steps:
17+ secrets:
19− - uses: actions/checkout@v3
18+ gh_pat: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
20− with:
19+ goreleaser_key: ${{ secrets.GORELEASER_KEY }}
21− fetch-depth: 0
20+ fury_token: ${{ secrets.FURY_TOKEN }}
22−
21+ nfpm_gpg_key: ${{ secrets.NFPM_GPG_KEY }}
23− - run: git fetch --force --tags
22+ nfpm_passphrase: ${{ secrets.NFPM_PASSPHRASE }}
24−
25− - uses: actions/setup-go@v5
26− with:
27− go-version: ">=1.23.2"
28− cache: true
29− cache-dependency-path: go.sum
30−
31− - run: go mod download
32−
33− - uses: goreleaser/goreleaser-action@v6
34− with:
35− distribution: goreleaser
36− version: latest
37− args: release --clean
38− env:
39− GITHUB_TOKEN: ${{ secrets.HOMEBREW_GITHUB_TOKEN }}
40− AUR_KEY: ${{ secrets.AUR_KEY }}
.gitignore+3
@@ -44,3 +44,6 @@ Thumbs.db
44.crush/
44.crush/
45
45
46crush
46crush
47+
48+manpages/
49+completions/
.goreleaser.yml+72−18
@@ -4,6 +4,10 @@ version: 2
4
4
5project_name: crush
5project_name: crush
6
6
7+includes:
8+ - from_url:
9+ url: charmbracelet/meta/main/notarize.yaml
10+
7metadata:
11metadata:
8 mod_timestamp: "{{ .CommitTimestamp }}"
12 mod_timestamp: "{{ .CommitTimestamp }}"
9 license: "MIT"
13 license: "MIT"
@@ -12,6 +16,29 @@ metadata:
12 maintainers:
16 maintainers:
13 - "kujtimiihoxha <kujtim@charm.sh>"
17 - "kujtimiihoxha <kujtim@charm.sh>"
14
18
19+nightly:
20+ publish_release: true
21+ keep_single_release: true
22+ version_template: "{{ incminor .Version }}-nightly"
23+
24+snapshot:
25+ version_template: "0.0.0-{{ .Timestamp }}"
26+
27+before:
28+ hooks:
29+ - go mod tidy
30+ - rm -rf completions
31+ - mkdir completions
32+ - rm -rf manpages
33+ - mkdir manpages
34+ - sh -c 'go run . completion bash >./completions/crush.bash'
35+ - sh -c 'go run . completion zsh >./completions/crush.zsh'
36+ - sh -c 'go run . completion fish >./completions/crush.fish'
37+ - sh -c 'go run . man | gzip -c >./manpages/crush.1.gz'
38+
39+gomod:
40+ proxy: true
41+
15builds:
42builds:
16 - env:
43 - env:
17 - CGO_ENABLED=0
44 - CGO_ENABLED=0
@@ -24,19 +51,22 @@ builds:
24 - arm64
51 - arm64
25 ldflags:
52 ldflags:
26 - -s -w -X github.com/charmbracelet/crush/internal/version.Version={{.Version}}
53 - -s -w -X github.com/charmbracelet/crush/internal/version.Version={{.Version}}
27− main: ./main.go
28
54
29archives:
55archives:
30− - formats: [tar.gz]
31− name_template: >-
56+ - name_template: >-
32− crush-
57+ crush_
33− {{- if eq .Os "darwin" }}mac-
58+ {{- .Version }}_
34− {{- else if eq .Os "windows" }}windows-
59+ {{- title .Os }}_
35− {{- else if eq .Os "linux" }}linux-{{end}}
36 {{- if eq .Arch "amd64" }}x86_64
60 {{- if eq .Arch "amd64" }}x86_64
37− {{- else if eq .Arch "#86" }}i386
61+ {{- else if eq .Arch "386" }}i386
38 {{- else }}{{ .Arch }}{{ end }}
62 {{- else }}{{ .Arch }}{{ end }}
39− {{- if .Arm }}v{{ .Arm }}{{ end }}
63+ {{- with .Arm}}v{{ . }}{{ end }}
64+ wrap_in_directory: true
65+ files:
66+ - README*
67+ - LICENSE*
68+ - manpages/*
69+ - completions/*
40 format_overrides:
70 format_overrides:
41 - goos: windows
71 - goos: windows
42 formats: [zip]
72 formats: [zip]
@@ -44,18 +74,36 @@ archives:
44checksum:
74checksum:
45 name_template: "checksums.txt"
75 name_template: "checksums.txt"
46
76
47−snapshot:
48− version_template: "0.0.0-{{ .Timestamp }}"
49−
50aurs:
77aurs:
51 - private_key: "{{ .Env.AUR_KEY }}"
78 - private_key: "{{ .Env.AUR_KEY }}"
52− git_url: "ssh://aur@aur.archlinux.org/charmbracelet-bin.git"
79+ git_url: "ssh://aur@aur.archlinux.org/crush-bin.git"
53 provides:
80 provides:
54 - crush
81 - crush
55 conflicts:
82 conflicts:
56 - crush
83 - crush
57 package: |-
84 package: |-
85+ cd "${srcdir}/crush_${pkgver}_Linux_${CARCH}"
86+ # bin
58− install -Dm755 ./crush "${pkgdir}/usr/bin/crush"
87+ install -Dm755 "./crush" "${pkgdir}/usr/bin/crush"
88+ # license
89+ mkdir -p "${pkgdir}/usr/share/licenses/crush/"
90+ install -Dm644 ./LICENSE* "${pkgdir}/usr/share/licenses/crush/"
91+ # completions
92+ mkdir -p "${pkgdir}/usr/share/bash-completion/completions/"
93+ mkdir -p "${pkgdir}/usr/share/zsh/site-functions/"
94+ mkdir -p "${pkgdir}/usr/share/fish/vendor_completions.d/"
95+ install -Dm644 "./completions/crush.bash" "${pkgdir}/usr/share/bash-completion/completions/crush"
96+ install -Dm644 "./completions/crush.zsh" "${pkgdir}/usr/share/zsh/site-functions/_crush"
97+ install -Dm644 "./completions/crush.fish" "${pkgdir}/usr/share/fish/vendor_completions.d/crush.fish"
98+ # man pages
99+ install -Dm644 "./manpages/crush.1.gz" "${pkgdir}/usr/share/man/man1/crush.1.gz"
100+ # readme
101+ mkdir -pv "${pkgdir}/usr/share/doc/crush/"
102+ install -Dm644 README* "${pkgdir}/usr/share/doc/crush/"
103+
104+furies:
105+ - account: "{{ with .Env.FURY_TOKEN }}charmcli{{ else }}{{ end }}"
106+ secret_name: FURY_TOKEN
59
107
60homebrew_casks:
108homebrew_casks:
61 - repository:
109 - repository:
@@ -66,10 +114,16 @@ nfpms:
66 - formats:
114 - formats:
67 - deb
115 - deb
68 - rpm
116 - rpm
69− file_name_template: >-
117+ file_name_template: "{{ .ConventionalFileName }}"
70− {{ .ProjectName }}-
118+ contents:
71− {{- if eq .Os "darwin" }}mac
119+ - src: ./completions/crush.bash
72− {{- else }}{{ .Os }}{{ end }}-{{ .Arch }}
120+ dst: /etc/bash_completion.d/crush
121+ - src: ./completions/crush.fish
122+ dst: /usr/share/fish/vendor_completions.d/crush.fish
123+ - src: ./completions/crush.zsh
124+ dst: /usr/share/zsh/site-functions/_crush
125+ - src: ./manpages/crush.1.gz
126+ dst: /usr/share/man/man1/crush.1.gz
73
127
74changelog:
128changelog:
75 sort: asc
129 sort: asc