-
Notifications
You must be signed in to change notification settings - Fork 3.6k
130 lines (111 loc) · 4.34 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
name: MacOS Release
on:
push:
branches:
- 'master'
- 'Stable*'
tags:
- 'v*'
paths-ignore:
- 'docs/**'
- '.github/workflows/**'
pull_request:
branches:
- '*'
paths-ignore:
- 'docs/**'
- '.github/workflows/**'
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-12
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@v3
with:
version: ${{ env.QT_VERSION }}
aqtversion: ==3.1.*
host: mac
target: desktop
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
- 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: Build
working-directory: ${{ runner.temp }}/shadow_build_dir
run: |
export JOBS=$((`sysctl -n hw.ncpu`+1))
qmake -r ${SOURCE_DIR}/qgroundcontrol.pro CONFIG+=installer CONFIG+=${BUILD_TYPE}
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