
Snapd stopped working in Docker containers in commit
c6011693a8
Therefore, we cannot use the current build action,
which relies on Docker to implement cross-compilation.
Switching to the upstream build action avoids the problem at the cost
of losing the arm64 builds on amd64 hardware.
Those need to be reintroduced by some other mechanism,
e.g. via Launchpad, in the future.
Fixes #1229
191 lines
5.9 KiB
YAML
191 lines
5.9 KiB
YAML
name: CD
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
release:
|
|
types:
|
|
- created
|
|
|
|
jobs:
|
|
cancel_previous_runs:
|
|
runs-on: ubuntu-latest
|
|
name: Cancel Previous Runs
|
|
steps:
|
|
- uses: styfle/cancel-workflow-action@0.8.0
|
|
with:
|
|
access_token: ${{ github.token }}
|
|
|
|
test_ubuntu:
|
|
needs: [cancel_previous_runs]
|
|
runs-on: ubuntu-18.04
|
|
name: Test Ubuntu
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Install Dependencies
|
|
run: .github/scripts/install-ubuntu.sh
|
|
- name: Build & Test
|
|
run: .github/scripts/build-ubuntu.sh
|
|
|
|
test_windows:
|
|
needs: [cancel_previous_runs]
|
|
runs-on: windows-2019
|
|
name: Test Windows
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Install Dependencies
|
|
run: .github/scripts/install-windows.sh
|
|
shell: bash
|
|
- name: Build & Test
|
|
run: .github/scripts/build-windows.sh
|
|
shell: bash
|
|
|
|
test_macos:
|
|
needs: [cancel_previous_runs]
|
|
runs-on: macos-10.15
|
|
name: Test macOS
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Install Dependencies
|
|
run: .github/scripts/install-macos.sh ci
|
|
- name: Build & Test
|
|
run: .github/scripts/build-macos.sh debug arm64 && .github/scripts/build-macos.sh debug x86_64
|
|
|
|
build_release_windows:
|
|
needs: [test_ubuntu, test_windows, test_macos]
|
|
name: Build Release Windows
|
|
runs-on: windows-2019
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Install Dependencies
|
|
run: .github/scripts/install-windows.sh
|
|
shell: bash
|
|
- name: Build & Test
|
|
run: .github/scripts/build-windows.sh release
|
|
shell: bash
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: windows
|
|
path: build/bin/RelWithDebInfo/solvespace.exe
|
|
|
|
build_release_windows_openmp:
|
|
needs: [test_ubuntu, test_windows, test_macos]
|
|
name: Build Release Windows (OpenMP)
|
|
runs-on: windows-2019
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Install Dependencies
|
|
run: .github/scripts/install-windows.sh
|
|
shell: bash
|
|
- name: Build & Test
|
|
run: .github/scripts/build-windows.sh release openmp
|
|
shell: bash
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: windows-openmp
|
|
path: build/bin/RelWithDebInfo/solvespace-openmp.exe
|
|
|
|
build_release_macos:
|
|
needs: [test_ubuntu, test_windows, test_macos]
|
|
name: Build Release macOS
|
|
runs-on: macos-10.15
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Install Dependencies
|
|
run: .github/scripts/install-macos.sh ci
|
|
- name: Build & Test
|
|
run: .github/scripts/build-macos.sh release arm64 && .github/scripts/build-macos.sh release x86_64
|
|
- name: Sign Build
|
|
run: .github/scripts/sign-macos.sh
|
|
env:
|
|
MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
|
|
MACOS_CERTIFICATE_P12: ${{ secrets.MACOS_CERTIFICATE_P12 }}
|
|
MACOS_APPSTORE_APP_PASSWORD: ${{ secrets.MACOS_APPSTORE_APP_PASSWORD }}
|
|
MACOS_APPSTORE_USERNAME: ${{ secrets.MACOS_APPSTORE_USERNAME }}
|
|
MACOS_DEVELOPER_ID: ${{ secrets.MACOS_DEVELOPER_ID }}
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: macos
|
|
path: build/bin/SolveSpace.dmg
|
|
|
|
deploy_snap_amd64:
|
|
needs: [test_ubuntu, test_windows, test_macos]
|
|
name: Deploy AMD64 Snap
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Fetch Tags
|
|
run: git fetch --force --tags
|
|
- name: Set Up Source
|
|
run: rsync --filter=":- .gitignore" -r ./ pkg/snap/solvespace-snap-src
|
|
- name: Build Snap
|
|
uses: snapcore/action-build@v1
|
|
id: build
|
|
with:
|
|
path: pkg/snap
|
|
- name: Upload & Release to Edge
|
|
if: github.event_name == 'push'
|
|
uses: snapcore/action-publish@v1
|
|
with:
|
|
store_login: ${{ secrets.SNAPSTORE_LOGIN }}
|
|
snap: ${{ steps.build.outputs.snap }}
|
|
release: edge
|
|
- name: Upload & Release to Beta + Edge
|
|
if: github.event_name == 'release'
|
|
uses: snapcore/action-publish@v1
|
|
with:
|
|
store_login: ${{ secrets.SNAPSTORE_LOGIN }}
|
|
snap: ${{ steps.build.outputs.snap }}
|
|
release: edge,beta
|
|
|
|
upload_release_assets:
|
|
name: Upload Release Assets
|
|
needs: [build_release_windows, build_release_windows_openmp, build_release_macos]
|
|
if: "!cancelled() && github.event_name == 'release'"
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Download All Workflow Artifacts
|
|
uses: actions/download-artifact@v2
|
|
- name: Get Release Upload URL
|
|
id: get_upload_url
|
|
env:
|
|
event: ${{ toJson(github.event) }}
|
|
run: |
|
|
upload_url=$(echo "$event" | jq -r ".release.upload_url")
|
|
echo "::set-output name=upload_url::$upload_url"
|
|
echo "Upload URL: $upload_url"
|
|
- name: Upload solvespace.exe
|
|
uses: actions/upload-release-asset@v1
|
|
continue-on-error: true
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ steps.get_upload_url.outputs.upload_url }}
|
|
asset_path: windows/solvespace.exe
|
|
asset_name: solvespace.exe
|
|
asset_content_type: binary/octet-stream
|
|
- name: Upload solvespace-openmp.exe
|
|
uses: actions/upload-release-asset@v1
|
|
continue-on-error: true
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ steps.get_upload_url.outputs.upload_url }}
|
|
asset_path: windows-openmp/solvespace-openmp.exe
|
|
asset_name: solvespace-openmp.exe
|
|
asset_content_type: binary/octet-stream
|
|
- name: Upload SolveSpace.dmg
|
|
uses: actions/upload-release-asset@v1
|
|
continue-on-error: true
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ steps.get_upload_url.outputs.upload_url }}
|
|
asset_path: macos/SolveSpace.dmg
|
|
asset_name: SolveSpace.dmg
|
|
asset_content_type: binary/octet-stream
|