-
-
Notifications
You must be signed in to change notification settings - Fork 2.3k
147 lines (135 loc) · 4.32 KB
/
cppcmake.yml
File metadata and controls
147 lines (135 loc) · 4.32 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
name: CI
on:
push:
branches: [master]
pull_request:
schedule:
- cron: "0 0 * * *" # Every day at midnight UTC
workflow_dispatch:
inputs:
NIGHTLY:
description: "Run as a nightly build"
default: false
required: true
type: boolean
run-name: >-
${{
(github.event_name == 'schedule' || inputs.NIGHTLY == true)
&& 'Build and Deploy Nightly Builds'
|| github.event.pull_request.title
|| github.event.head_commit.message
|| format('{0} on {1}', github.workflow, github.ref_name)
}}
jobs:
check-skippable:
name: Check Skippable
runs-on: ubuntu-24.04
permissions:
contents: read
outputs:
skip: ${{ steps.set-skippable.outputs.skippable || 'false' }}
steps:
- uses: actions/checkout@v6
- name: Check and set skippable
id: set-skippable
continue-on-error: true
run: |
if [ "${{ github.event_name }}" = "schedule" ]; then
git fetch origin tag nightly
LAST_COMMIT_HASH=$(git rev-list -n 1 nightly)
if [ "$(git rev-parse HEAD)" = "$LAST_COMMIT_HASH" ]; then
echo "::notice::No new commits since last nightly build, skipping this build."
echo "skippable=true" >> $GITHUB_OUTPUT
fi
else
echo "skippable=false" >> $GITHUB_OUTPUT
fi
build-macos:
needs: check-skippable
if: needs.check-skippable.outputs.skip != 'true'
permissions:
actions: read
contents: write
uses: ./.github/workflows/cppcmake-macos.yml
secrets: inherit
with:
NIGHTLY: ${{ github.event_name == 'schedule' || inputs.NIGHTLY == true }}
CONSOLIDATE_DEPENDENCY_SUMMARY: true
build-ubuntu:
needs: check-skippable
if: needs.check-skippable.outputs.skip != 'true'
permissions:
actions: read
contents: write
uses: ./.github/workflows/cppcmake-ubuntu.yml
with:
NIGHTLY: ${{ github.event_name == 'schedule' || inputs.NIGHTLY == true }}
CONSOLIDATE_DEPENDENCY_SUMMARY: true
build-windows:
needs: check-skippable
if: needs.check-skippable.outputs.skip != 'true'
permissions:
actions: read
contents: write
uses: ./.github/workflows/cppcmake-windows.yml
secrets: inherit
with:
NIGHTLY: ${{ github.event_name == 'schedule' || inputs.NIGHTLY == true }}
CONSOLIDATE_DEPENDENCY_SUMMARY: true
build-windows_on_arm:
needs: check-skippable
if: needs.check-skippable.outputs.skip != 'true'
permissions:
actions: read
contents: write
uses: ./.github/workflows/cppcmake-windows_on_arm.yml
secrets: inherit
with:
NIGHTLY: ${{ github.event_name == 'schedule' || inputs.NIGHTLY == true }}
CONSOLIDATE_DEPENDENCY_SUMMARY: true
summarize-dependencies:
needs:
[
check-skippable,
build-macos,
build-ubuntu,
build-windows,
build-windows_on_arm,
]
if: always() && needs.check-skippable.outputs.skip != 'true' && !cancelled()
name: Summarize Dependencies
runs-on: ubuntu-24.04
permissions:
actions: read
contents: read
steps:
- name: Download dependency summaries
uses: actions/download-artifact@v8
continue-on-error: true
with:
pattern: dependency-summary-*
path: dependency-summary
merge-multiple: true
- name: Summary
run: |
{
echo "## Dependencies used"
echo ""
echo "| Workflow | Target | OpenSSL | Qt | SQLCipher | SQLite |"
echo "| :---: | :---: | :---: | :---: | :---: | :---: |"
} >> "$GITHUB_STEP_SUMMARY"
if [ -d dependency-summary ] && find dependency-summary -type f -name '*.md' | grep -q .; then
find dependency-summary -type f -name '*.md' -print | sort | while IFS= read -r file; do
cat "$file" >> "$GITHUB_STEP_SUMMARY"
done
else
echo "| Not available | No dependency summaries were uploaded. | - | - | - | - |" >> "$GITHUB_STEP_SUMMARY"
fi
release:
if: github.event_name != 'pull_request'
needs: [build-macos, build-ubuntu, build-windows, build-windows_on_arm]
name: Release
permissions:
actions: read
contents: write
uses: ./.github/workflows/release.yml