-
Notifications
You must be signed in to change notification settings - Fork 67
132 lines (130 loc) · 4.42 KB
/
release-build.yaml
File metadata and controls
132 lines (130 loc) · 4.42 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
name: Release Build
on:
push:
tags:
- "*.*.*"
jobs:
release:
permissions:
contents: write
runs-on: ubuntu-22.04
env:
LANG: C
steps:
- uses: actions/checkout@v6
- name: Set up JDK 21
uses: actions/setup-java@v5
with:
java-version: 21
distribution: 'zulu'
- name: Set up Node.js 24
uses: actions/setup-node@v6
with:
node-version: '24'
- name: Set up environment variables
run: |
echo "VERSION=$(cat sjsonnet/version)" >> $GITHUB_ENV
echo "SCALA_VERSION=3.3.7" >> $GITHUB_ENV
- name: JAR Build
run: ./mill "sjsonnet.jvm[$SCALA_VERSION].__.assembly"
- name: JS Build
run: ./mill "sjsonnet.js[$SCALA_VERSION].fullLinkJS"
- name: WASM Build
run: ./mill "sjsonnet.wasm[$SCALA_VERSION].fullLinkJS"
- name: Playground Build
run: ./mill playground.bundle
- name: Rename Artifacts
run: |
mkdir release
cp ./out/sjsonnet/js/$SCALA_VERSION/fullLinkJS.dest/main.js ./release/sjsonnet-$VERSION.js
cp ./out/sjsonnet/js/$SCALA_VERSION/fullLinkJS.dest/main.js.map ./release/sjsonnet-$VERSION.js.map
pushd ./out/sjsonnet/wasm/$SCALA_VERSION/fullLinkJS.dest
zip -r sjsonnet-wasm-$VERSION.zip *
popd
cp ./out/sjsonnet/wasm/$SCALA_VERSION/fullLinkJS.dest/sjsonnet-wasm-$VERSION.zip ./release/sjsonnet-wasm-$VERSION.zip
cp ./out/sjsonnet/jvm/$SCALA_VERSION/assembly.dest/out.jar ./release/sjsonnet-$VERSION.jar
cp ./out/sjsonnet/jvm/$SCALA_VERSION/client/assembly.dest/out.jar ./release/sjsonnet-client-$VERSION.jar
cp ./out/sjsonnet/jvm/$SCALA_VERSION/server/assembly.dest/out.jar ./release/sjsonnet-server-$VERSION.jar
cp ./out/playground/bundle.dest/index.html ./release/sjsonnet-playground-$VERSION.html
- uses: actions/upload-artifact@v7
name: Upload Artifacts
with:
name: sjsonnet-${{ env.VERSION }}-jvmjswasm
path: release/*
retention-days: 1
if-no-files-found: error
release-native:
permissions:
contents: write
strategy:
matrix:
platform:
- name: linux-x86_64
os: ubuntu-22.04
- name: linux-arm64
os: ubuntu-22.04-arm
- name: darwin-x86_64
os: macos-15-intel
- name: darwin-arm64
os: macos-15
runs-on: ${{ matrix.platform.os }}
env:
LANG: C
steps:
- uses: actions/checkout@v6
- name: Set up JDK 21
uses: actions/setup-java@v5
with:
java-version: 21
distribution: 'zulu'
- name: Set up environment variables
run: |
echo "VERSION=$(cat sjsonnet/version)" >> $GITHUB_ENV
echo "SCALA_VERSION=3.3.7" >> $GITHUB_ENV
- name: Native Binary Build
run: ./mill "sjsonnet.native[$SCALA_VERSION].nativeLink"
- name: GraalVM Binary Build
run: ./mill "sjsonnet.graal.nativeImage"
- name: Rename Artifacts
run: |
mkdir release
cp ./out/sjsonnet/native/$SCALA_VERSION/nativeLink.dest/out ./release/sjsonnet-$VERSION-${{ matrix.platform.name }}
cp ./out/sjsonnet/graal/nativeImage.dest/native-executable ./release/sjsonnet-graalvm-$VERSION-${{ matrix.platform.name }}
- uses: actions/upload-artifact@v7
name: Upload Native Binary
with:
name: sjsonnet-${{ env.VERSION }}-${{ matrix.platform.name }}
path: release/*
retention-days: 1
if-no-files-found: error
create-release-package:
permissions:
contents: write
needs:
- release
- release-native
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v6
- name: Set up environment variables
run: |
echo "VERSION=$(cat sjsonnet/version)" >> $GITHUB_ENV
mkdir -p release
- uses: actions/download-artifact@v8
name: Download Artifacts
with:
path: release
merge-multiple: true
- name: Compute SHA256 Sum
run: |
pushd release
ls -la
sha256sum sjsonnet-* > sums.sha256
popd
- uses: actions/upload-artifact@v7
name: Upload Package
with:
name: sjsonnet-${{ env.VERSION }}-release
path: release/*
retention-days: 7
if-no-files-found: error