-
Notifications
You must be signed in to change notification settings - Fork 19
162 lines (133 loc) · 4.65 KB
/
release.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
name: Release
on:
workflow_dispatch:
inputs:
increment:
description: Type of version increment.
required: true
type: choice
options:
- beta
- patch
- minor
concurrency:
group: release
cancel-in-progress: false
jobs:
version:
runs-on: ubuntu-latest
outputs:
version: ${{ steps.version.outputs.version }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Git config
run: |
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
git config user.name github-actions
- uses: DeterminateSystems/nix-installer-action@main
- uses: DeterminateSystems/magic-nix-cache-action@main
- name: Bump version
run: nix develop -c cargo release ${{ inputs.increment }} -x --no-confirm --no-publish --no-push --no-tag
- id: version
run: |
version=$(grep '^version' Cargo.toml | sed 's/version = "//; s/"//')
echo "version=$version"
echo "version=$version" >> $GITHUB_OUTPUT
- name: Create version branch
run: |
git push origin --delete release/v${{ steps.version.outputs.version }} || echo "Branch doesn't exist"
git checkout -b release/"v${{ steps.version.outputs.version }}"
git push origin release/"v${{ steps.version.outputs.version }}"
build-nix:
needs: version
uses: ./.github/workflows/build-nix.yml
with:
channel: ${{ inputs.increment == 'beta' && 'beta' || 'stable' }}
ref: release/v${{ needs.version.outputs.version }}
build-windows:
needs: version
uses: ./.github/workflows/build-windows.yml
with:
channel: ${{ inputs.increment == 'beta' && 'beta' || 'stable' }}
ref: release/v${{ needs.version.outputs.version }}
deploy:
needs: version
secrets: inherit
uses: ./.github/workflows/deploy.yml
with:
channel: ${{ inputs.increment == 'beta' && 'beta' || 'stable' }}
ref: release/v${{ needs.version.outputs.version }}
release:
needs:
- build-nix
- build-windows
- deploy
- version
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
ref: release/v${{ needs.version.outputs.version }}
- name: Git config
run: |
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
git config user.name github-actions
git fetch --all
- uses: DeterminateSystems/nix-installer-action@main
- uses: DeterminateSystems/magic-nix-cache-action@main
- name: Cargo release
run: nix develop -c cargo release release -x --no-confirm --no-push
- name: Merge release into main
run: |
git switch -c main --track origin/main
git merge --no-ff --no-edit release/v${{ needs.version.outputs.version }}
git push
- if: ${{ inputs.increment == 'beta' }}
name: Merge release into beta
run: |
git switch -c beta --track origin/beta
git merge --no-ff --no-edit release/v${{ needs.version.outputs.version }}
git push
- if: ${{ inputs.increment != 'beta' }}
name: Merge release into stable
run: |
# Delete beta and stable branches if they exist
git push origin --delete beta || echo "Branch doesn't exist"
git push origin --delete stable || echo "Branch doesn't exist"
# Create stable branch from release
git checkout release/v${{ needs.version.outputs.version }}
git checkout -b stable
git push origin stable
- name: Delete release branch
run: git push origin --delete release/v${{ needs.version.outputs.version }}
- run: mkdir artifacts
- uses: actions/download-artifact@v4
with:
pattern: "build-*"
path: artifacts
- name: Add version to build file names
run: |
cd artifacts
echo Current directory contents:
ls -la
for dir in *; do
cd $dir
for file in *; do
ext="${file##*.}"
name="${file%.*}"
mv "$file" "../${name}.${{ needs.version.outputs.version }}.$ext"
done
cd ..
rm -rf $dir
done
echo New directory contents:
ls -la
- uses: ncipollo/release-action@v1
with:
artifacts: artifacts/*
generateReleaseNotes: true
prerelease: ${{ contains(needs.version.outputs.version, 'beta') }}
tag: v${{ needs.version.outputs.version }}