-
Notifications
You must be signed in to change notification settings - Fork 189
148 lines (135 loc) · 4.02 KB
/
binaries.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
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
on:
push:
tags:
- "v*" # "v1.2.3"
branches:
- master
paths-ignore: ["nimble-guide/**", "**/*.md"]
pull_request:
paths-ignore: ["nimble-guide/**", "**/*.md"]
workflow_dispatch:
jobs:
build:
strategy:
fail-fast: false
matrix:
target:
- os: linux
triple: x86_64-linux-musl
name: linux_x64
- os: linux
triple: i686-linux-musl
name: linux_x32
- os: linux
triple: aarch64-linux-musl
name: linux_aarch64
- os: linux
triple: armv7l-linux-musleabihf
name: linux_armv7l
- os: macosx
triple: x86_64-apple-darwin14
name: macosx_x64
- os: windows
triple: x86_64-w64-mingw32
name: windows_x64
- os: windows
triple: i686-w64-mingw32
name: windows_x32
include:
- target:
os: linux
builder: ubuntu-20.04
- target:
os: macosx
builder: macos-14
- target:
os: windows
builder: windows-2019
defaults:
run:
shell: bash
name: "${{ matrix.target.triple }}"
runs-on: ${{ matrix.builder }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: recursive
- uses: jiro4989/setup-nim-action@v2
with:
nim-version: "stable"
yes: true
- name: Install dependencies
run: nimble install -y
- name: Install zip
if: matrix.target.os == 'windows'
run: choco install zip
- name: build nimble
run: |
if [[ "${{ matrix.target.triple }}" == "x86_64-apple-darwin14" ]]; then
nim c -d:release \
-d:zippyNoSimd \
--passL:"-target x86_64-apple-macos10.15" \
--passC:"-target x86_64-apple-macos10.15" \
src/nimble.nim;
else
nim -d:release c src/nimble.nim;
fi
- name: Compress binaries
run: |
cd src
if [[ "${{ matrix.target.os }}" == "windows" ]]; then
# Create both formats for Windows
tar -c -z -v -f ../nimble-${{ matrix.target.name }}.tar.gz nimble.exe
zip ../nimble-${{ matrix.target.name }}.zip nimble.exe
else
tar -c -z -v -f ../nimble-${{ matrix.target.name }}.tar.gz nimble
fi
- name: Upload tar.gz artifact
uses: actions/upload-artifact@v4
with:
name: nimble-${{ matrix.target.name }}.tar.gz
path: nimble-${{ matrix.target.name }}.tar.gz
- name: Upload zip artifact (Windows only)
if: matrix.target.os == 'windows'
uses: actions/upload-artifact@v4
with:
name: nimble-${{ matrix.target.name }}.zip
path: nimble-${{ matrix.target.name }}.zip
create-github-release:
if: github.event_name != 'pull_request'
name: Create GitHub Release
needs: [build]
runs-on: ubuntu-latest
permissions:
contents: write
actions: write
steps:
- name: Download artefacts
uses: actions/download-artifact@v4
# Create/update the "latest" release
- uses: ncipollo/release-action@v1
with:
name: Latest Nimble Binaries
artifacts: "*/*"
allowUpdates: true
makeLatest: true
prerelease: true
tag: latest
# Create a versioned release if this is a tag push
- if: startsWith(github.ref, 'refs/tags/v')
uses: ncipollo/release-action@v1
with:
name: Nimble ${{ github.ref_name }}
artifacts: "*/*"
allowUpdates: true
makeLatest: true
prerelease: false
tag: ${{ github.ref_name }}
- name: Delete artefacts
uses: geekyeggo/delete-artifact@v5
with:
token: ${{ secrets.GITHUB_TOKEN }}
failOnError: false
name: "nimble-*"