forked from OpenSmalltalk/opensmalltalk-vm
-
Notifications
You must be signed in to change notification settings - Fork 0
122 lines (111 loc) · 4.19 KB
/
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
name: Build for macOS
on:
push: # All branches, but appropriate paths only.
paths:
# This workflow spec and its support scripts
- '.github/workflows/macos.yml'
- 'scripts/ci/*build.sh'
- 'deploy/**'
# Relevant sources for this platform
- 'building/macos*/**' # Makefile-based build scripts
- '*src/**' # Generated VMMaker sources (incl. plugins)
- 'platforms/Cross/**'
- 'platforms/iOS/**' # Note that 'platforms/Mac OS' is deprecated
# Skip changes in documentation artifacts
- '!**.md'
- '!**HowToBuild'
pull_request:
branches:
- Cog
paths-ignore:
- '**.md'
- '**HowToBuild'
workflow_dispatch:
inputs:
tag:
description: "Build new release candidate for tag"
required: true
default: YYYYMMDDHHMM
jobs:
build:
strategy:
fail-fast: true
matrix:
arch:
- macos64x64
# - macos32x86 # Might be deprecated in general
flavor:
- squeak.cog.spur
# - squeak.sista.spur # -Werror bc. decl. missing
- squeak.stack.spur
- pharo.cog.spur
# - pharo.sista.spur # -Werror bc. decl. missing
- pharo.stack.spur
mode:
- fast
- debug
- assert
runs-on: macos-latest
name: ${{ matrix.flavor }} for ${{ matrix.arch }}${{ matrix.mode == 'debug' && ' (DEBUG)' || matrix.mode == 'assert' && ' (ASSERT)' || '' }}
env:
ARCH: ${{ matrix.arch }}
FLAVOR: ${{ matrix.flavor }}
MODE: ${{ matrix.mode }}
steps:
- name: Checkout files
if: github.event_name != 'workflow_dispatch'
uses: actions/checkout@v2
- name: Checkout files for new release candidate
if: github.event_name == 'workflow_dispatch'
uses: actions/checkout@v2
with:
ref: refs/tags/${{ github.event.inputs.tag }}
- name: Restore build cache
uses: actions/cache@v2
with:
path: .thirdparty-cache
key: thirdparty-cache-macos
- name: Build VM
run: ./scripts/ci/actions_build.sh
- name: Sign VM
continue-on-error: true # Save unsigned build artifacts
run: ./deploy/sign-vm.sh
env:
SQUEAK_SIGN_PASSWORD: ${{ secrets.SQUEAK_SIGN_PASSWORD }}
SQUEAK_CERT_PASSWORD: ${{ secrets.SQUEAK_CERT_PASSWORD }}
SQUEAK_SIGN_IDENTITY: ${{ secrets.SQUEAK_SIGN_IDENTITY }}
PHARO_SIGN_PASSWORD: ${{ secrets.PHARO_SIGN_PASSWORD }}
PHARO_CERT_PASSWORD: ${{ secrets.PHARO_CERT_PASSWORD }}
PHARO_SIGN_IDENTITY: ${{ secrets.PHARO_SIGN_IDENTITY }}
NEWSPEAK_SIGN_PASSWORD: ${{ secrets.NEWSPEAK_SIGN_PASSWORD }}
NEWSPEAK_CERT_PASSWORD: ${{ secrets.NEWSPEAK_CERT_PASSWORD }}
NEWSPEAK_SIGN_IDENTITY: ${{ secrets.NEWSPEAK_SIGN_IDENTITY }}
- name: Pack VM
run: ./deploy/pack-vm.sh
- name: Store artifact w/ revision
uses: actions/upload-artifact@v2
with:
name: ${{ env.ASSET_NAME }}_${{ env.ASSET_REVISION }}
path: products/${{ env.ASSET_NAME }}.${{ env.ASSET_EXTENSION }}
- name: Update artifact in latest-build
uses: ncipollo/[email protected]
if: github.event_name == 'push' && endsWith( github.ref , 'Cog' )
with:
prerelease: true
allowUpdates: true
replacesArtifacts: true
artifacts: products/${{ env.ASSET_NAME }}.${{ env.ASSET_EXTENSION }}
token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ matrix.mode == 'debug' && 'latest-debug-build' || matrix.mode == 'assert' && 'latest-assert-build' || 'latest-build' }}
body: ${{ github.event.head_commit.message }}
- name: Deploy artifact as new release candidate
uses: ncipollo/[email protected]
if: github.event_name == 'workflow_dispatch'
with:
prerelease: true # release candidate
allowUpdates: true
replacesArtifacts: true
artifacts: products/${{ env.ASSET_NAME }}.${{ env.ASSET_EXTENSION }}
token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.event.inputs.tag }}
body: ${{ github.event.head_commit.message }}