Skip to content

Commit 4191b26

Browse files
committed
feat: add support for biome v2
1 parent ca874f0 commit 4191b26

File tree

6 files changed

+67
-53
lines changed

6 files changed

+67
-53
lines changed

.github/workflows/build-images.yaml

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ on:
1313
- main
1414

1515
jobs:
16-
1716
generate-jobs:
1817
name: Generate jobs
1918
runs-on: ubuntu-latest
@@ -65,6 +64,7 @@ jobs:
6564
cache-to: type=gha,mode=max,scope=${{ matrix.versions.patch}}-arm64
6665
build-args: |
6766
BIOME_VERSION=${{ matrix.versions.patch }}
67+
BIOME_TAG_START=${{ matrix.versions.major == '2' && '@biomejs/biome@' || 'cli/v' }}
6868
6969
build-images-amd64:
7070
name: ${{ matrix.versions.patch }} (amd64)
@@ -98,7 +98,8 @@ jobs:
9898
cache-from: type=gha,scope=${{ matrix.versions.patch}}-amd64
9999
cache-to: type=gha,mode=max,scope=${{ matrix.versions.patch}}-amd64
100100
build-args: |
101-
BIOME_VERSION=${{ matrix.versions.patch }}
101+
BIOME_VERSION=${{ matrix.versions.patch }}
102+
BIOME_TAG_START=${{ matrix.versions.major == '2' && '@biomejs/biome@' || 'cli/v' }}
102103
103104
stitch-images:
104105
name: Stitch images (${{ matrix.versions.patch }})
@@ -146,9 +147,11 @@ jobs:
146147
docker manifest push ghcr.io/biomejs/biome:${{ matrix.versions.patch }}
147148
148149
- name: Create latest (${{ matrix.versions.patch }}) manifest
149-
if: ${{ matrix.versions.patch == fromJson(needs.generate-jobs.outputs.biome-versions)[0].patch }}
150+
if:
151+
${{ matrix.versions.patch ==
152+
fromJson(needs.generate-jobs.outputs.biome-versions)[0].patch }}
150153
run: |
151154
docker manifest create ghcr.io/biomejs/biome:latest \
152155
ghcr.io/biomejs/biome:${{ matrix.versions.patch }}-arm64 \
153156
ghcr.io/biomejs/biome:${{ matrix.versions.patch }}-amd64
154-
docker manifest push ghcr.io/biomejs/biome:latest
157+
docker manifest push ghcr.io/biomejs/biome:latest

Dockerfile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,18 @@ ARG ALPINE_VERSION=3.20
33
FROM rust:1.81.0-alpine${ALPINE_VERSION} AS builder
44

55
ARG BIOME_VERSION=1.9.2
6+
ARG BIOME_TAG_START="cli/v"
7+
68
ENV BIOME_VERSION=${BIOME_VERSION}
9+
ENV BIOME_TAG_START=${BIOME_TAG_START}
710

811
WORKDIR /usr/src/biome
912

1013
# Install build dependencies
1114
RUN apk add --no-cache musl-dev make
1215

1316
# Downloads the tarball for the version of Biome we want to build from GitHub Releases
14-
ADD https://github.com/biomejs/biome/archive/refs/tags/cli/v${BIOME_VERSION}.tar.gz /tmp/biome.tar.gz
17+
ADD https://github.com/biomejs/biome/archive/refs/tags/${BIOME_TAG_START}${BIOME_VERSION}.tar.gz /tmp/biome.tar.gz
1518

1619
# Extract the tarball into the working directory
1720
RUN tar -xzvf /tmp/biome.tar.gz -C /usr/src/biome/ --strip-components=1

bun.lockb

332 Bytes
Binary file not shown.

package.json

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
{
2-
"name": "biome-docker",
3-
"type": "module",
4-
"devDependencies": {
5-
"@types/bun": "latest",
6-
"@types/semver": "^7.5.8"
7-
},
8-
"peerDependencies": {
9-
"typescript": "^5.0.0"
10-
},
11-
"dependencies": {
12-
"@biomejs/biome": "^1.9.4",
13-
"@biomejs/version-utils": "^0.4.0",
14-
"semver": "^7.6.3"
15-
}
2+
"name": "biome-docker",
3+
"type": "module",
4+
"devDependencies": {
5+
"@types/bun": "latest",
6+
"@types/semver": "^7.5.8"
7+
},
8+
"peerDependencies": {
9+
"typescript": "^5.0.0"
10+
},
11+
"dependencies": {
12+
"@biomejs/biome": "^1.9.4",
13+
"@biomejs/version-utils": "^0.4.0",
14+
"semver": "^7.7.2"
15+
}
1616
}

scripts/generate-versions.ts

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@ import { type SemVer, coerce, gt, gte } from "semver";
33

44
const yankedVersions: string[] = [];
55

6-
const semverVersions = ((await getAllVersions(false)) ?? [])
7-
?.map((v) => coerce(v))
6+
const semverVersions = ((await getAllVersions(true)) ?? [])
7+
?.map((v) => coerce(v, { includePrerelease: true }))
88
.filter((v) => v !== null)
99
.filter((v) => gte(v, "1.7.0"))
10+
.filter(
11+
(v) => !v.prerelease.some((pre) => pre.toString().includes("nightly")),
12+
)
1013
.filter((v) => !yankedVersions.includes(v.format()));
1114

1215
const getGreatestMinorForMajor = (versions: SemVer[]): Map<string, string> => {
@@ -90,16 +93,21 @@ const greatestPatchForMajorMinor =
9093
/**
9194
* Generate a list of all verions of Biome for which we want to create
9295
* Docker images.
96+
*
97+
* For beta versions, we only create images for the patch versions.
9398
*/
94-
export const versions = semverVersions.map((version: SemVer) => ({
95-
major: `${version.major}`,
96-
minor: `${version.major}.${version.minor}`,
97-
patch: version.format(),
98-
createMajor:
99-
greatestMinorForMajor.get(`${version.major}`) === version.format(),
100-
createMinor:
101-
greatestPatchForMajorMinor.get(`${version.major}.${version.minor}`) ===
102-
version.format(),
103-
}));
99+
export const versions = semverVersions.map((version: SemVer) => {
100+
return {
101+
major: `${version.major}`,
102+
minor: `${version.major}.${version.minor}`,
103+
patch: version.format(),
104+
createMajor:
105+
greatestMinorForMajor.get(`${version.major}`) === version.format() &&
106+
!version.prerelease.includes("beta"),
107+
createMinor:
108+
greatestPatchForMajorMinor.get(`${version.major}.${version.minor}`) ===
109+
version.format() && !version.prerelease.includes("beta"),
110+
};
111+
});
104112

105113
console.log(JSON.stringify(versions));

tsconfig.json

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
11
{
2-
"compilerOptions": {
3-
// Enable latest features
4-
"lib": ["ESNext", "DOM"],
5-
"target": "ESNext",
6-
"module": "ESNext",
7-
"moduleDetection": "force",
8-
"jsx": "react-jsx",
9-
"allowJs": true,
2+
"compilerOptions": {
3+
// Enable latest features
4+
"lib": ["ESNext", "DOM"],
5+
"target": "ESNext",
6+
"module": "ESNext",
7+
"moduleDetection": "force",
8+
"jsx": "react-jsx",
9+
"allowJs": true,
1010

11-
// Bundler mode
12-
"moduleResolution": "bundler",
13-
"allowImportingTsExtensions": true,
14-
"verbatimModuleSyntax": true,
15-
"noEmit": true,
11+
// Bundler mode
12+
"moduleResolution": "bundler",
13+
"allowImportingTsExtensions": true,
14+
"verbatimModuleSyntax": true,
15+
"noEmit": true,
1616

17-
// Best practices
18-
"strict": true,
19-
"skipLibCheck": true,
20-
"noFallthroughCasesInSwitch": true,
17+
// Best practices
18+
"strict": true,
19+
"skipLibCheck": true,
20+
"noFallthroughCasesInSwitch": true,
2121

22-
// Some stricter flags (disabled by default)
23-
"noUnusedLocals": false,
24-
"noUnusedParameters": false,
25-
"noPropertyAccessFromIndexSignature": false
26-
}
22+
// Some stricter flags (disabled by default)
23+
"noUnusedLocals": false,
24+
"noUnusedParameters": false,
25+
"noPropertyAccessFromIndexSignature": false
26+
}
2727
}

0 commit comments

Comments
 (0)