-
Notifications
You must be signed in to change notification settings - Fork 11
132 lines (128 loc) · 4.89 KB
/
CI_macOS.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
name: macOS
on:
push:
branches-ignore:
- 'l10n_**' # Push events to translation service branches (that begin with "l10n_")
# Sequence of patterns matched against refs/tags
tags:
- '*'
pull_request:
# Match all pull requests
jobs:
macos-build:
permissions:
contents: write # Needed to upload to releases
env:
MACOSX_DEPLOYMENT_TARGET: 10.12
VSCMD_SKIP_SENDTELEMETRY: 1
name: 'Xcode :LATEST'
runs-on: macos-latest
if: "!contains(github.event.head_commit.message, '[ci skip]')"
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Install Pre-reqs
run: |
brew install gnu-getopt
- name: Install Qt
uses: jurplel/install-qt-action@v3.3.0
with:
version: 5.15.2
- name: Verify Qt install + version
run: |
echo "Qt version:"
qmake -version
- name: Create directories
run: |
OUTPUT_DIR="${HOME}/output"
echo "OUTPUT_DIR=${OUTPUT_DIR}"
echo "OUTPUT_DIR=${OUTPUT_DIR}" >> $GITHUB_ENV
mkdir -p "${OUTPUT_DIR}"
- name: Configure
run: |
# Run configure_macOS.sh
./configure_macOS.sh
- name: Build WMIT
run: |
# Build Xcode project, and package "WMIT.zip"
xcodebuild \
-project build/wmit.xcodeproj \
-target "package" \
-configuration "Release" \
-destination "platform=macOS" \
-PBXBuildsContinueAfterErrors=NO
result=${?}
if [ $result -ne 0 ]; then
echo "ERROR: xcodebuild failed"
exit ${result}
fi
# Verify "WMIT.zip" was created
BUILT_WMIT_ZIP="build/WMIT.zip"
if [ ! -f "${BUILT_WMIT_ZIP}" ]; then
echo "ERROR: Something went wrong, and \"${BUILT_WMIT_ZIP}\" does not exist"
exit 1
fi
# Rename the output
WMIT_OUTPUT_ZIP="${OUTPUT_DIR}/wmit_macOS.zip"
mv "./build/WMIT.zip" "${WMIT_OUTPUT_ZIP}"
echo "WMIT_OUTPUT_ZIP=${WMIT_OUTPUT_ZIP}"
echo "WMIT_OUTPUT_ZIP=${WMIT_OUTPUT_ZIP}" >> $GITHUB_ENV
- name: Output Debug Info
shell: sh {0}
run: |
# Extract & verify the .zip contents
TMP_PKG_EXTRACT_DIR="build/tmp/_wzextract"
rm -rf "${TMP_PKG_EXTRACT_DIR}"
if [ ! -d "${TMP_PKG_EXTRACT_DIR}" ]; then
mkdir -p "${TMP_PKG_EXTRACT_DIR}"
fi
unzip -qq "${WMIT_OUTPUT_ZIP}" -d "${TMP_PKG_EXTRACT_DIR}"
cd "${TMP_PKG_EXTRACT_DIR}"
if [ ! -d "WMIT.app" ]; then
echo "ERROR: \"WMIT.app\" was not extracted from \"${WMIT_OUTPUT_ZIP}\""
exit 1
fi
# For debugging purposes, output some information about the generated "WMIT.app" (inside the .zip)
echo "Generated \"WMIT.app\""
generated_infoplist_location="WMIT.app/Contents/Info.plist"
generated_versionnumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "${generated_infoplist_location}")
echo " -> Version Number (CFBundleShortVersionString): ${generated_versionnumber}"
generated_buildnumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${generated_infoplist_location}")
echo " -> Build Number (CFBundleVersion): ${generated_buildnumber}"
generated_minimumsystemversion=$(/usr/libexec/PlistBuddy -c "Print LSMinimumSystemVersion" "${generated_infoplist_location}")
echo " -> Minimum macOS (LSMinimumSystemVersion): ${generated_minimumsystemversion}"
codesign_verify_result=$(codesign --verify --deep --strict --verbose=2 "WMIT.app" 2>&1)
echo " -> codesign --verify --deep --strict --verbose=2 \"WMIT.app\""
if [ -n "${codesign_verify_result}" ]; then
while read -r line; do
echo " $line"
done <<< "$codesign_verify_result"
else
echo " (No output?)"
fi
cd - > /dev/null
# Output .zip info
echo "Generated WMIT .zip: \"${WMIT_OUTPUT_ZIP}\""
ZIP_HASH="$(shasum -a 512 "${WMIT_OUTPUT_ZIP}")"
ZIP_SIZE="$(stat -f '%z' "${WMIT_OUTPUT_ZIP}")"
echo " -> SHA512: ${ZIP_HASH}"
echo " -> Size (bytes): ${ZIP_SIZE}"
exit 0
- name: 'Upload Artifact'
uses: actions/upload-artifact@v3
with:
name: wmit_macOS
path: '${{ env.WMIT_OUTPUT_ZIP }}'
#####################################################
# Upload Release assets (if a release tag)
#####################################################
- name: Upload Release Assets
if: success() && (startsWith(github.ref, 'refs/tags/') && (github.repository == 'Warzone2100/WMIT'))
run: |
$SOURCE_TAG = "$($env:WZ_GITHUB_REF -replace "refs/tags/")"
gh release upload "${SOURCE_TAG}" "${WMIT_OUTPUT_ZIP}"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_REPO: ${{ github.repository }}
WZ_GITHUB_REF: ${{ github.ref }}