-
-
Notifications
You must be signed in to change notification settings - Fork 2
153 lines (147 loc) · 4.53 KB
/
release.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
149
150
151
152
153
name: release
on:
push:
tags:
- "*.*.*"
env:
app-name: clj-xmas
repo: com.github.liquidz
pkg: merry
jobs:
build:
runs-on: ${{ matrix.runs-on }}
strategy:
matrix:
include:
- runs-on: ubuntu-latest
os: linux
cmd: gu
opts: "--static"
- runs-on: macOS-latest
os: darwin
cmd: gu
opts: ""
- runs-on: windows-latest
os: windows
cmd: gu.cmd
steps:
- uses: actions/checkout@v2
- name: Install cl.exe
if: ${{ matrix.os == 'windows' }}
uses: ilammy/msvc-dev-cmd@v1
- uses: DeLaGuardo/[email protected]
with:
cli: latest
- uses: DeLaGuardo/[email protected]
with:
graalvm: "21.3.0"
java: "java11"
arch: "amd64"
- name: Install deps on win
if: ${{ matrix.os == 'windows' }}
shell: powershell
run: |
${{ matrix.cmd }} install native-image
clojure -T:build uberjar
- name: Install deps on linux or mac
if: ${{ matrix.os != 'windows' }}
shell: bash
run: |
${{ matrix.cmd }} install native-image
clojure -T:build uberjar
- name: Build native image on win
if: ${{ matrix.os == 'windows' }}
run: |
native-image -jar target/clj-xmas.jar -H:Name=clj-xmas -H:+ReportExceptionStackTraces --initialize-at-build-time --report-unsupported-elements-at-runtime -H:Log=registerResource: --verbose --no-fallback --static "-J-Xmx3g"
- name: Build native image on mac or linux
if: ${{ matrix.os != 'windows' }}
run: |
which native-image
make GRAAL_HOME="$(
which native-image|sed 's_/bin/native-image__'
)" GRAAL_EXTRA_OPTION="$(
[ ${{ matrix.os }} = darwin ] || echo '--static'
)" native-image -o graalvm -o uberjar
- name: Create artifact
shell: bash
run: |
ls -la
[ -f "clj-xmas_windows" ] && mv clj-xmas_windows clj-xmas
assets="${{ env.app-name }}_${{ matrix.os }}"
mkdir -p "dist/$assets"
cp -r ${{ env.app-name }} README.adoc LICENSE "dist/$assets/"
(
cd dist
if [[ "${{ matrix.os }}" == windows ]]; then
7z a "$assets.zip" "$assets"
else
tar czf "$assets.tar.gz" "$assets"
fi
ls -lah *.*
)
- uses: actions/upload-artifact@v2
with:
name: artifact-${{ matrix.os }}
path: |
dist/*.tar.gz
dist/*.zip
create-release:
runs-on: ubuntu-latest
needs:
- build
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Create Release
id: create-release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: ${{ github.ref }}
draft: false
prerelease: false
- name: Write upload_url to file
run: |
echo '${{ steps.create-release.outputs.upload_url }}' > upload_url.txt
- uses: actions/upload-artifact@v2
with:
name: create-release
path: upload_url.txt
upload-release:
runs-on: ubuntu-latest
needs: create-release
strategy:
matrix:
include:
- os: linux
asset_name_suffix: linux.tar.gz
asset_content_type: application/gzip
- os: darwin
asset_name_suffix: darwin.tar.gz
asset_content_type: application/gzip
- os: windows
asset_name_suffix: windows.zip
asset_content_type: application/zip
steps:
- uses: actions/download-artifact@v2
with:
name: artifact-${{ matrix.os }}
- uses: actions/download-artifact@v2
with:
name: create-release
- id: vars
run: |
echo "::set-output name=upload_url::$(cat upload_url.txt)"
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.vars.outputs.upload_url }}
asset_path: ${{ env.app-name }}_${{ matrix.asset_name_suffix }}
asset_name: ${{ env.app-name }}_${{ matrix.asset_name_suffix }}
asset_content_type: ${{ matrix.asset_content_type }}