Add CI for Docker
Lint / lint (push) Successful in 56s
Test build / test-build (pull_request) Successful in 6m18s

This commit is contained in:
Julien Valverdé
2026-07-26 01:30:34 +02:00
parent bcc3fe859f
commit 86e0bfb733
3 changed files with 75 additions and 5 deletions
+34 -2
View File
@@ -11,16 +11,26 @@ jobs:
steps: steps:
- name: Setup Bun - name: Setup Bun
uses: oven-sh/setup-bun@v2 uses: oven-sh/setup-bun@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Container Registry
uses: docker/login-action@v3
with:
registry: docker.valverde.cloud
username: ${{ secrets.DOCKER_REGISTRY_USERNAME }}
password: ${{ secrets.DOCKER_REGISTRY_PASSWORD }}
- name: Clone repo - name: Clone repo
uses: actions/checkout@v6 uses: actions/checkout@v6
- name: Install dependencies - name: Install dependencies
run: bun install --frozen-lockfile run: bun install --frozen-lockfile
- name: Lint TypeScript - name: Lint TypeScript
run: bun lint:tsc run: bun lint:tsc
- name: Lint Biome - name: Lint Biome
run: bun lint:biome run: bun lint:biome
- name: Build - name: Test
run: bun run build run: bun run test
- name: Publish effect-fc - name: Publish effect-fc
uses: JS-DevTools/npm-publish@v4 uses: JS-DevTools/npm-publish@v4
with: with:
@@ -28,3 +38,25 @@ jobs:
access: public access: public
token: ${{ secrets.NPM_TOKEN }} token: ${{ secrets.NPM_TOKEN }}
registry: https://registry.npmjs.org registry: https://registry.npmjs.org
- name: Generate Docker metadata
id: meta
uses: docker/metadata-action@v5
with:
images: |
docker.valverde.cloud/${{ gitea.repository }}
tags: |
type=ref,event=branch
type=ref,event=tag
type=ref,event=pr
type=sha
flavor: |
latest=true
- name: Build Docker image
uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
+29 -3
View File
@@ -12,16 +12,42 @@ jobs:
- name: Setup Node - name: Setup Node
uses: actions/setup-node@v6 uses: actions/setup-node@v6
with: with:
node-version: "24" node-version: "22"
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Clone repo - name: Clone repo
uses: actions/checkout@v6 uses: actions/checkout@v6
- name: Install dependencies - name: Install dependencies
run: bun install --frozen-lockfile run: bun install --frozen-lockfile
- name: Lint TypeScript - name: Lint TypeScript
run: bun lint:tsc run: bun lint:tsc
- name: Lint Biome - name: Lint Biome
run: bun lint:biome run: bun lint:biome
- name: Build - name: Test
run: bun run build run: bun run test
- name: Pack - name: Pack
run: bun pack run: bun pack
- name: Generate Docker metadata
id: meta
uses: docker/metadata-action@v5
with:
images: |
docker.valverde.cloud/${{ gitea.repository }}
tags: |
type=ref,event=branch
type=ref,event=tag
type=ref,event=pr
type=sha
flavor: |
latest=true
- name: Build Docker image
uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile
push: false
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
+12
View File
@@ -0,0 +1,12 @@
FROM oven/bun:1.3.12-debian@sha256:1b709c9dd883fc1af38c210f7ea5222c552a8d470ea73efbd4b8fcfee798a64b AS bun
FROM node:22.21.1-trixie-slim@sha256:98e1429d1a0b99378b4de43fa385f0746fd6276faf4feeb6104d91f6bad290f9
COPY --from=bun /usr/local/bin/bun /usr/local/bin/bunx /usr/local/bin/
COPY . /app
WORKDIR /app
RUN bun install --frozen-lockfile && \
bun run build && \
bun clean:cache && \
bun clean:modules && \
bun install --production --frozen-lockfile