-
Notifications
You must be signed in to change notification settings - Fork 3.7k
152 lines (132 loc) · 5.29 KB
/
macos_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
name: MacOS Release
on:
push:
branches:
- 'master'
- 'Stable*'
tags:
- 'v*'
paths-ignore:
- 'docs/**'
pull_request:
branches:
- '*'
paths-ignore:
- 'docs/**'
defaults:
run:
shell: bash
env:
SOURCE_DIR: ${{ github.workspace }}
QT_VERSION: 5.15.2
ARTIFACT: QGroundControl.dmg
BUILD_TYPE: ${{ fromJSON('["DailyBuild", "StableBuild"]')[ github.ref_type == 'tag' || contains(github.ref, 'Stable_' ) ] }}
jobs:
build:
runs-on: macos-13
steps:
- name: Checkout repo
uses: actions/checkout@v3
with:
submodules: recursive
- name: Get all tags for correct version determination
working-directory: ${{ github.workspace }}
run: |
git fetch --all --tags -f --depth 1
- name: Install Qt
uses: jurplel/install-qt-action@v4
with:
version: ${{ env.QT_VERSION }}
aqtversion: ==3.1.*
host: mac
target: desktop
arch: clang_64
dir: ${{ runner.temp }}
modules: qtcharts
setup-python: true
- name: Install Gstreamer
run: |
wget https://gstreamer.freedesktop.org/data/pkg/osx/1.18.6/gstreamer-1.0-devel-1.18.6-x86_64.pkg
wget https://gstreamer.freedesktop.org/data/pkg/osx/1.18.6/gstreamer-1.0-1.18.6-x86_64.pkg
for package in *.pkg ;
do sudo installer -verbose -pkg "$package" -target /
done
# Create symlink from where macdeployqt expects it to where it actually is
sudo mkdir -p /Library/lib
sudo ln -sf /Library/Frameworks/GStreamer.framework /Library/lib/GStreamer.framework
- name: Install ccache
run: brew install ccache
- name: Prepare ccache timestamp
id: ccache_cache_timestamp
run: echo "name=timestamp::$(date --utc +'%Y-%m-%d-%H\;%M\;%S')" >> $GITHUB_OUTPUT
- name: ccache cache files
uses: actions/cache@v3
with:
path: ~/.ccache
key: ${{ runner.os }}-ccache-${{steps.ccache_cache_timestamp.outputs.timestamp}}
restore-keys: ${{ runner.os }}-ccache-
- name: Setup ccache
run: |
mkdir -p ~/.ccache
echo "base_dir = ${GITHUB_WORKSPACE}" > ~/.ccache/ccache.conf
echo "compression = true" >> ~/.ccache/ccache.conf
echo "compression_level = 5" >> ~/.ccache/ccache.conf
ccache -s
ccache -z
- name: Create build directory
run: mkdir ${{ runner.temp }}/shadow_build_dir
- name: Setup Xcode
run: |
sudo xcode-select --reset
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
clang --version # To verify compiler is available
- name: Build
working-directory: ${{ runner.temp }}/shadow_build_dir
run: |
export JOBS=$((`sysctl -n hw.ncpu`+1))
# Get SDK path
export SDKROOT=$(xcrun --show-sdk-path)
export MACOSX_DEPLOYMENT_TARGET=10.14
# Set compiler paths explicitly
export QMAKE_MAC_SDK=macosx
export QMAKE_APPLE_DEVICE_ARCHS=x86_64
export CPATH="$SDKROOT/usr/include"
export LIBRARY_PATH="$SDKROOT/usr/lib"
export QMAKE_DEFAULT_LIBDIRS="$SDKROOT/usr/lib"
export QMAKE_DEFAULT_INCDIRS="$SDKROOT/usr/include"
qmake -r ${SOURCE_DIR}/qgroundcontrol.pro \
CONFIG+=installer \
CONFIG+=${BUILD_TYPE} \
-spec macx-clang \
QMAKE_APPLE_DEVICE_ARCHS=x86_64
make -j$JOBS
- name: ccache post-run
run: ccache -s
- name: Save artifact
uses: actions/upload-artifact@master
with:
name: ${{ env.ARTIFACT }}
path: ${{ runner.temp }}/shadow_build_dir/package/${{ env.ARTIFACT }}
- name: Publish artifact to GitHub release
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ runner.temp }}/shadow_build_dir/package/${{ env.ARTIFACT }}
asset_name: ${{ env.ARTIFACT }}
tag: ${{ github.ref }}
overwrite: true
- name: Upload build to S3 Bucket
if: github.event_name == 'push'
working-directory: ${{ runner.temp }}/shadow_build_dir/package
run: |
aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }}
aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws s3 cp ${ARTIFACT} s3://qgroundcontrol/builds/${{ github.ref_name }}/${ARTIFACT} --region us-west-2 --acl public-read
- name: Upload tagged stable build to S3 latest Bucket
if: github.event_name == 'push' && github.ref_type == 'tag'
working-directory: ${{ runner.temp }}/shadow_build_dir/package
run: |
aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }}
aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws s3 cp ${ARTIFACT} s3://qgroundcontrol/latest/${ARTIFACT} --region us-west-2 --acl public-read