forked from libhal-google/ci
-
Notifications
You must be signed in to change notification settings - Fork 2
153 lines (125 loc) · 5.36 KB
/
deploy_mac.yml
File metadata and controls
153 lines (125 loc) · 5.36 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
148
149
150
151
152
153
# Copyright 2024 - 2025 Khalil Estell and the libhal contributors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
name: 🍎 Deploy Mac (DEPRECATED use package_and_upload.yml)
on:
workflow_call:
inputs:
library:
type: string
default: ${{ github.event.repository.name }}
repo:
type: string
default: ${{ github.repository }}
conan_version:
type: string
default: "2.18.0"
version:
type: string
default: ""
# Directory where the conan package exists
dir:
type: string
default: "."
# Version of LLVM to install via homebrew
llvm:
type: string
default: "17"
jobs:
deploy_all_mac:
strategy:
fail-fast: false
matrix:
include:
- os: macos-14
profile_path: profiles/armv8/mac-14/
- os: macos-15
profile_path: profiles/armv8/mac-15/
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4.1.1
if: ${{ inputs.version != '' }}
with:
submodules: true
repository: ${{ inputs.repo }}
ref: ${{ inputs.version }}
- uses: actions/checkout@v4.1.1
if: ${{ inputs.version == '' }}
with:
submodules: true
repository: ${{ inputs.repo }}
- name: 📥 Install OS Specific Tools (macos-14)
if: ${{ matrix.os == 'macos-14' }}
run: |
brew install llvm@${{ inputs.llvm }}
ln -s $(brew --prefix llvm@${{ inputs.llvm }})/bin/clang-tidy /usr/local/bin/
brew install pipx
pipx ensurepath
- name: 📥 Install OS Specific Tools (macos-15)
if: ${{ matrix.os == 'macos-15' }}
run: |
brew install llvm@${{ inputs.llvm }}
ln -s $(brew --prefix llvm@${{ inputs.llvm }})/bin/clang-tidy /usr/local/bin/
brew install pipx
pipx ensurepath
- name: 📥 Install Conan ${{ inputs.conan_version }}
run: pipx install conan==${{ inputs.conan_version }}
- name: 🔍 conan version
run: conan --version
- name: 🔍 cmake version
run: cmake --version
- name: 🔍 clang++ version
run: clang++-${{ inputs.llvm }} --version || clang++ --version
- name: 🔍 /usr/bin version
run: ls /usr/bin/clang*
- name: 🔍 clang-tidy version
run: clang-tidy-${{ inputs.llvm }} --version || clang-tidy --version
- name: 📡 Add `libhal` repo to conan remotes
run: conan remote add libhal
https://libhal.jfrog.io/artifactory/api/conan/trunk-conan
- name: 📡 Create and setup default profile
run: conan profile detect --force
- name: 👁️🗨️ Show conan profile (original)
run: conan profile show
- name: 📡 Install default system profile for ${{ matrix.os }}
run: conan config install -sf ${{ matrix.profile_path }} -tf profiles https://github.com/libhal/conan-config.git
- name: 📡 Install libhal platform profiles for mac
run: conan config install -sf conan/profiles/v1 -tf profiles https://github.com/libhal/libhal-mac.git
- name: 👁️🗨️ Show conan profile (new)
run: conan profile show
- name: 📡 Install libhal settings_user.yml
run: conan config install -sf profiles/baremetal/v2 https://github.com/libhal/conan-config.git
- name: Set Version Environment Variable
run: |
if [ -z "${{ inputs.version }}" ]; then
echo "VERSION=latest" >> $GITHUB_ENV
else
echo "VERSION=${{ inputs.version }}" >> $GITHUB_ENV
fi
- name: 📦 Create `Debug` package for ${{ inputs.profile }}
run: conan create ${{ inputs.dir }} -pr mac-hal -s build_type=Debug --version=${{ env.VERSION }} -b missing
- name: 📦 Create `RelWithDebInfo` package for ${{ inputs.profile }}
run: conan create ${{ inputs.dir }} -pr mac-hal -s build_type=RelWithDebInfo --version=${{ env.VERSION }} -b missing
- name: 📦 Create `MinSizeRel` package for ${{ inputs.profile }}
run: conan create ${{ inputs.dir }} -pr mac-hal -s build_type=MinSizeRel --version=${{ env.VERSION }} -b missing
- name: 📦 Create `Release` package for ${{ inputs.profile }}
run: conan create ${{ inputs.dir }} -pr mac-hal -s build_type=Release --version=${{ env.VERSION }} -b missing
- name: 📡 Sign into JFrog Artifactory
if: ${{ inputs.version != '' }}
env:
PASSWORD: ${{ secrets.JFROG_LIBHAL_TRUNK_ID_TOKEN }}
JFROG_USER: ${{ secrets.JFROG_LIBHAL_TRUNK_ID_TOKEN_USER }}
run: conan remote login -p $PASSWORD libhal $JFROG_USER
- name: 🆙 Upload package version ${{ inputs.version }} to `libhal` repo
if: ${{ inputs.version != '' }}
run: conan upload "${{ inputs.library }}/${{ inputs.version }}" --confirm -r=libhal