Solvespace
193 строки · 6.0 Кб
1name: CD
2
3on:
4push:
5branches:
6- master
7release:
8types:
9- created
10
11jobs:
12cancel_previous_runs:
13runs-on: ubuntu-latest
14name: Cancel Previous Runs
15permissions:
16actions: write
17steps:
18- uses: styfle/cancel-workflow-action@0.9.1
19with:
20access_token: ${{ github.token }}
21
22test_ubuntu:
23needs: [cancel_previous_runs]
24runs-on: ubuntu-latest
25name: Test Ubuntu
26steps:
27- uses: actions/checkout@v2
28- name: Install Dependencies
29run: .github/scripts/install-ubuntu.sh
30- name: Build & Test
31run: .github/scripts/build-ubuntu.sh
32
33test_windows:
34needs: [cancel_previous_runs]
35runs-on: windows-2019
36name: Test Windows
37steps:
38- uses: actions/checkout@v2
39- name: Install Dependencies
40run: .github/scripts/install-windows.sh
41shell: bash
42- name: Build & Test
43run: .github/scripts/build-windows.sh
44shell: bash
45
46test_macos:
47needs: [cancel_previous_runs]
48runs-on: macos-latest
49name: Test macOS
50steps:
51- uses: actions/checkout@v2
52- name: Install Dependencies
53run: .github/scripts/install-macos.sh ci
54- name: Build & Test
55run: .github/scripts/build-macos.sh debug arm64 && .github/scripts/build-macos.sh debug x86_64
56
57build_release_windows:
58needs: [test_ubuntu, test_windows, test_macos]
59name: Build Release Windows
60runs-on: windows-2019
61steps:
62- uses: actions/checkout@v2
63- name: Install Dependencies
64run: .github/scripts/install-windows.sh
65shell: bash
66- name: Build & Test
67run: .github/scripts/build-windows.sh release
68shell: bash
69- name: Upload artifact
70uses: actions/upload-artifact@v2
71with:
72name: windows
73path: build/bin/RelWithDebInfo/solvespace.exe
74
75build_release_windows_openmp:
76needs: [test_ubuntu, test_windows, test_macos]
77name: Build Release Windows (OpenMP)
78runs-on: windows-2019
79steps:
80- uses: actions/checkout@v2
81- name: Install Dependencies
82run: .github/scripts/install-windows.sh
83shell: bash
84- name: Build & Test
85run: .github/scripts/build-windows.sh release openmp
86shell: bash
87- name: Upload artifact
88uses: actions/upload-artifact@v2
89with:
90name: windows-openmp
91path: build/bin/RelWithDebInfo/solvespace-openmp.exe
92
93build_release_macos:
94needs: [test_ubuntu, test_windows, test_macos]
95name: Build Release macOS
96runs-on: macos-latest
97steps:
98- uses: actions/checkout@v2
99- name: Install Dependencies
100run: .github/scripts/install-macos.sh ci
101- name: Build & Test
102run: .github/scripts/build-macos.sh release arm64 && .github/scripts/build-macos.sh release x86_64
103- name: Sign Build
104run: .github/scripts/sign-macos.sh
105env:
106MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
107MACOS_CERTIFICATE_P12: ${{ secrets.MACOS_CERTIFICATE_P12 }}
108MACOS_APPSTORE_APP_PASSWORD: ${{ secrets.MACOS_APPSTORE_APP_PASSWORD }}
109MACOS_APPSTORE_USERNAME: ${{ secrets.MACOS_APPSTORE_USERNAME }}
110MACOS_DEVELOPER_ID: ${{ secrets.MACOS_DEVELOPER_ID }}
111- name: Upload artifact
112uses: actions/upload-artifact@v2
113with:
114name: macos
115path: build/bin/SolveSpace.dmg
116
117# deploy_snap_amd64:
118# needs: [test_ubuntu, test_windows, test_macos]
119# name: Deploy AMD64 Snap
120# runs-on: ubuntu-latest
121# steps:
122# - uses: actions/checkout@v2
123# - name: Fetch Tags
124# run: git fetch --force --tags
125# - name: Set Up Source
126# run: rsync --filter=":- .gitignore" -r ./ pkg/snap/solvespace-snap-src
127# - name: Build Snap
128# uses: snapcore/action-build@v1
129# id: build
130# with:
131# path: pkg/snap
132# - name: Upload & Release to Edge
133# if: github.event_name == 'push'
134# uses: snapcore/action-publish@v1
135# env:
136# SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPSTORE_LOGIN }}
137# with:
138# snap: ${{ steps.build.outputs.snap }}
139# release: edge
140# - name: Upload & Release to Beta + Edge
141# if: github.event_name == 'release'
142# uses: snapcore/action-publish@v1
143# with:
144# store_login: ${{ secrets.SNAPSTORE_LOGIN }}
145# snap: ${{ steps.build.outputs.snap }}
146# release: edge,beta
147
148upload_release_assets:
149name: Upload Release Assets
150needs: [build_release_windows, build_release_windows_openmp, build_release_macos]
151if: "!cancelled() && github.event_name == 'release'"
152runs-on: ubuntu-latest
153steps:
154- name: Download All Workflow Artifacts
155uses: actions/download-artifact@v2
156- name: Get Release Upload URL
157id: get_upload_url
158env:
159event: ${{ toJson(github.event) }}
160run: |
161upload_url=$(echo "$event" | jq -r ".release.upload_url")
162echo "::set-output name=upload_url::$upload_url"
163echo "Upload URL: $upload_url"
164- name: Upload solvespace.exe
165uses: actions/upload-release-asset@v1
166continue-on-error: true
167env:
168GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
169with:
170upload_url: ${{ steps.get_upload_url.outputs.upload_url }}
171asset_path: windows/solvespace.exe
172asset_name: solvespace.exe
173asset_content_type: binary/octet-stream
174- name: Upload solvespace-openmp.exe
175uses: actions/upload-release-asset@v1
176continue-on-error: true
177env:
178GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
179with:
180upload_url: ${{ steps.get_upload_url.outputs.upload_url }}
181asset_path: windows-openmp/solvespace-openmp.exe
182asset_name: solvespace-openmp.exe
183asset_content_type: binary/octet-stream
184- name: Upload SolveSpace.dmg
185uses: actions/upload-release-asset@v1
186continue-on-error: true
187env:
188GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
189with:
190upload_url: ${{ steps.get_upload_url.outputs.upload_url }}
191asset_path: macos/SolveSpace.dmg
192asset_name: SolveSpace.dmg
193asset_content_type: binary/octet-stream
194