-
-
Notifications
You must be signed in to change notification settings - Fork 561
184 lines (160 loc) · 6.9 KB
/
Copy pathmacos-release.yml
File metadata and controls
184 lines (160 loc) · 6.9 KB
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
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
name: macos-release
on:
workflow_dispatch:
inputs:
release:
type: choice
default: full
options:
- full
- pre
description: Whether to make a release, choose full release (uses platform/ios/VERSION, shared with iOS) or pre-release
pre_release_version:
type: string
default: ''
description: Version (only for pre-releases)
jobs:
macos-build-dynamic:
runs-on: macos-14
defaults:
run:
working-directory: platform/macos
shell: bash
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v4
with:
submodules: recursive
- name: Install dependencies
run: brew install webp libuv
- name: Build XCFramework (Dynamic)
run: |
bazel build --compilation_mode=opt --features=dead_strip,thin_lto --objc_enable_binary_stripping \
--apple_generate_dsym --output_groups=+dsyms --//:renderer=metal \
--//platform/macos:macos_loop=cfrunloop \
//platform/macos:MapLibre.dynamic --embed_label=maplibre_macos_"$(cat ../ios/VERSION)"
echo xcframework="$(bazel info execution_root)"/"$(bazel cquery --output=files --compilation_mode=opt --//:renderer=metal --//platform/macos:macos_loop=cfrunloop //platform/macos:MapLibre.dynamic)" >> "$GITHUB_ENV"
- name: Create .zip with debug symbols
working-directory: ./bazel-bin/platform/macos/MapLibre.dynamic_dsyms
run: |
zip MapLibre_macos_device.framework.dSYM.zip MapLibre_macos_device.framework.dSYM/Contents/Resources/DWARF/MapLibre_macos_device MapLibre_macos_device.framework.dSYM/Contents/Info.plist
echo debug_symbols_macos="$(realpath MapLibre_macos_device.framework.dSYM.zip)" >> "$GITHUB_ENV"
- name: Copy debug symbols to root
working-directory: .
run: cp ${{ env.debug_symbols_macos }} .
- name: Add license to XCFramework zip
run: |
cp ${{ env.xcframework }} MapLibre.dynamic.xcframework.zip
chmod +w MapLibre.dynamic.xcframework.zip
zip MapLibre.dynamic.xcframework.zip LICENSE.md
working-directory: .
- name: Upload artifact
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: xcframework
path: |
MapLibre.dynamic.xcframework.zip
MapLibre_macos_device.framework.dSYM.zip
macos-build-static:
runs-on: macos-14
defaults:
run:
working-directory: platform/macos
shell: bash
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v4
with:
submodules: recursive
- name: Install dependencies
run: brew install webp libuv
- name: Build XCFramework (Static)
run: |
bazel build --compilation_mode=opt --copt -g --copt="-Oz" --strip never \
--//:renderer=metal --//platform/macos:macos_loop=cfrunloop \
//platform/macos:MapLibre.static --embed_label=maplibre_macos_"$(cat ../ios/VERSION)"
echo xcframework_static="$(bazel info execution_root)"/"$(bazel cquery --output=files --compilation_mode=opt --//:renderer=metal --//platform/macos:macos_loop=cfrunloop //platform/macos:MapLibre.static)" >> "$GITHUB_ENV"
- name: Add license to XCFramework zip
run: |
cp ${{ env.xcframework_static }} MapLibre.static.xcframework.zip
chmod +w MapLibre.static.xcframework.zip
zip MapLibre.static.xcframework.zip LICENSE.md
working-directory: .
- name: Upload artifact
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: xcframework-static
path: |
MapLibre.static.xcframework.zip
macos-release:
permissions:
contents: write
issues: write
runs-on: ubuntu-latest
needs:
- macos-build-dynamic
- macos-build-static
defaults:
run:
working-directory: platform/macos
shell: bash
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v4
with:
submodules: recursive
- uses: actions/download-artifact@v8
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v4
with:
node-version-file: ".nvmrc"
# macOS releases share the iOS version (platform/ios/VERSION) so both
# platforms stay aligned. The changelog stays macOS-specific.
- name: Get version (release)
if: github.event.inputs.release == 'full'
run: |
echo version="$(head ../ios/VERSION)" >> "$GITHUB_ENV"
echo changelog_version_heading="## $(head ../ios/VERSION)" >> "$GITHUB_ENV"
- name: Get version (pre-release)
if: github.event.inputs.release == 'pre'
run: |
version="${{ github.event.inputs.pre_release_version }}"
if [[ -z "$version" ]]; then
version="$(head ../ios/VERSION)"-pre${{ github.sha }}
fi
if [[ "$version" != *"pre"* ]]; then
echo "::error::Pre-release version must include 'pre' (Current version: $version)"
exit 1
fi
echo version="$version" >> "$GITHUB_ENV"
echo changelog_version_heading="## main" >> "$GITHUB_ENV"
- name: Create tag if it does not exist
working-directory: .
run: .github/scripts/ensure-tag.sh macos-v${{ env.version }} ${{ github.sha }}
- name: Extract changelog for version
run: |
awk '/^##/ { p = 0 }; p == 1 { print }; $0 == "${{ env.changelog_version_heading }}" { p = 1 };' CHANGELOG.md > changelog_for_version.md
cat changelog_for_version.md
- name: Release (GitHub) - Create Draft
uses: softprops/action-gh-release@3d0d9888cb7fd7b750713d6e236d1fcb99157228 # v3.0.2
with:
name: macos-v${{ env.version }}
files: |
xcframework/MapLibre.dynamic.xcframework.zip
xcframework/MapLibre_macos_device.framework.dSYM.zip
xcframework-static/MapLibre.static.xcframework.zip
tag_name: macos-v${{ env.version }}
prerelease: ${{ github.event.inputs.release == 'pre' }}
body_path: platform/macos/changelog_for_version.md
fail_on_unmatched_files: true
draft: true
- name: Publish release (remove draft)
uses: softprops/action-gh-release@3d0d9888cb7fd7b750713d6e236d1fcb99157228 # v3.0.2
with:
tag_name: macos-v${{ env.version }}
name: macos-v${{ env.version }}
draft: false
- run: npm install
working-directory: .
- name: Write release notifications
if: github.repository_owner == 'maplibre'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: node .github/scripts/notify-release-on-prs.ts --tag macos-v${{ env.version }}
working-directory: .