-
Notifications
You must be signed in to change notification settings - Fork 0
141 lines (139 loc) · 4.17 KB
/
test-build.yaml
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
name: Test and build
on:
workflow_call:
push:
branches:
- develop
- main
pull_request:
branches:
- develop
- main
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
fetch-tags: true
- name: Mise Tools install
uses: jdx/mise-action@v2
with:
version: 2024.7.3
install: true
cache: true
experimental: true
- name: Test
run: |
mise use [email protected]
bun install
bun test:ci
bump-version:
needs: test
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
steps:
- uses: actions/checkout@v4
- name: Mise Tools install
uses: jdx/mise-action@v2
with:
version: 2024.7.3
install: true
cache: true
experimental: true
- run: mise use [email protected]
- run: bun install
- name: Bump version
id: bump
run: |
version=$(echo "${{ github.ref }}" | sed -e s%refs/tags/v%%)
echo "New tag found. Updating package.json to $version..."
jq --indent 4 --arg version "$version" '.version = $version' package.json > package.json.tmp
mv package.json.tmp package.json
bun biome format --write package.json
echo "version=$version" >> "$GITHUB_OUTPUT"
- name: Update package.json version
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: "[skip ci]: Bump version"
commit_options: '--no-verify --signoff'
file_pattern: 'package.json'
repository: .
branch: main
commit_user_name: GitHub Actions Bot # defaults to "github-actions[bot]"
status_options: '--untracked-files=no'
# add_options: '-u'
push_options: '--force'
skip_dirty_check: true
skip_fetch: false
skip_checkout: false
disable_globbing: true
create_branch: false
build:
needs: bump-version
if: always()
name: build-${{matrix.name}}
runs-on: ${{matrix.runs-on}}
permissions:
contents: write
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu
name: linux-x64
target: x86_64-unknown-linux-gnu
runs-on: ubuntu-latest
- os: ubuntu
name: linux-arm64
target: aarch64-unknown-linux-gnu
runs-on: ubuntu-latest
- os: macos
name: darwin-x64
target: x86_64-apple-darwin
runs-on: macos-latest
- os: macos
name: darwin-arm64
target: aarch64-apple-darwin
runs-on: macos-latest
- os: windows
name: win-x64
target: x86_64-ms-windows
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ contains(github.ref, '-beta') && 'develop' || (startsWith(github.ref, 'refs/tags/') && 'main' || github.ref) }}
- name: Mise Tools install
uses: jdx/mise-action@v2
if: ${{ matrix.os != 'windows' }}
with:
version: 2024.7.3
install: true
cache: true
experimental: true
- run: mise use [email protected]
if: ${{ matrix.os != 'windows' }}
- name: Choco Tools Install
run: |
choco install jq --version 1.7.1
choco install bun --version 1.1.20
if: ${{ matrix.os == 'windows' }}
- run: bun install --ignore-scripts
- name: Create binary and release files
run: |
jq -r '.version' package.json
mkdir -p ./dist/${{ matrix.name }}
bun build ./lib/main.ts --compile --outfile ./dist/${{ matrix.name }}/scfz
./dist/${{ matrix.name }}/scfz --version
cd ./dist
tar -czvf scfz-${{ matrix.name }}.tar.gz ./${{ matrix.name }}
cd ..
# TODO: Checksums
- uses: actions/upload-artifact@v4
with:
name: tarball-${{matrix.target}}
path: |
./dist/scfz-*.tar.gz
if-no-files-found: error