Compare commits
2
Commits
21bea9646d
...
v2.0.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c95d0c43c2 | ||
|
|
09e24ade14 |
@@ -67,12 +67,14 @@ jobs:
|
|||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
# The runner is an arm64 server, so the amd64 image is emulated. On its 6.8 kernel, recent
|
# The runner is an arm64 server, so the amd64 image's final stage is emulated. QEMU 8.x
|
||||||
# QEMU builds segfault compiling PHP extensions (docker/buildx#3170); QEMU 8 is pinned.
|
# crashes running x86_64 programs on an arm64 host (QEMU issue 2168, "QEMU internal
|
||||||
|
# SIGSEGV {code=MAPERR, addr=0x20}") and 10.2 segfaults on this runner too; 9.2.2 was
|
||||||
|
# checked on the runner's host: node, composer and install-php-extensions all run.
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v3
|
uses: docker/setup-qemu-action@v3
|
||||||
with:
|
with:
|
||||||
image: tonistiigi/binfmt:qemu-v8.1.5
|
image: tonistiigi/binfmt:qemu-v9.2.2
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v3
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|||||||
+6
-3
@@ -1,7 +1,9 @@
|
|||||||
# ============================================
|
# ============================================
|
||||||
# Stage 1: Install PHP dependencies
|
# Stage 1: Install PHP dependencies
|
||||||
# ============================================
|
# ============================================
|
||||||
FROM composer:2 AS vendor
|
# Built on the build machine's own platform: vendor/ is plain PHP, the same for every target, so a
|
||||||
|
# multi-arch build runs it once and never under emulation.
|
||||||
|
FROM --platform=$BUILDPLATFORM composer:2 AS vendor
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
@@ -21,8 +23,9 @@ RUN composer dump-autoload --optimize --no-dev
|
|||||||
# ============================================
|
# ============================================
|
||||||
# Stage 2: Build frontend assets
|
# Stage 2: Build frontend assets
|
||||||
# ============================================
|
# ============================================
|
||||||
# After Composer: the stylesheet and script import Livewire Material from vendor/.
|
# After Composer: the stylesheet and script import Livewire Material from vendor/. On the build
|
||||||
FROM node:24-alpine AS assets
|
# machine's platform too: the output is CSS and JavaScript, whatever the target.
|
||||||
|
FROM --platform=$BUILDPLATFORM node:24-alpine AS assets
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
|
|||||||
@@ -107,7 +107,8 @@ test('the pages are titled, described and in English', function () {
|
|||||||
->toContain('<html lang="en"')
|
->toContain('<html lang="en"')
|
||||||
->toMatch('/<title>[^<]+<\/title>/')
|
->toMatch('/<title>[^<]+<\/title>/')
|
||||||
->toMatch('/<meta name="description" content="[^"]+"/')
|
->toMatch('/<meta name="description" content="[^"]+"/')
|
||||||
->toContain('data-domain="sealshare.nonameweb.ch"');
|
->toContain('<script async src="https://plausible.io/js/pa-zWB4R2-rrBeLfwms3uIBT.js"></script>')
|
||||||
|
->toContain('plausible.init()');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
+6
-1
@@ -12,7 +12,12 @@
|
|||||||
<meta property="og:title" content="SealShare — your own secure upload platform">
|
<meta property="og:title" content="SealShare — your own secure upload platform">
|
||||||
<meta property="og:description" content="SealShare is self-hosted file sharing: your company's own upload platform to exchange files with customers, encrypted at rest, on your own server and domain. Open source, one Docker image.">
|
<meta property="og:description" content="SealShare is self-hosted file sharing: your company's own upload platform to exchange files with customers, encrypted at rest, on your own server and domain. Open source, one Docker image.">
|
||||||
<meta property="og:image" content="https://sealshare.nonameweb.ch/img/screenshots/desktop/light/01-upload-1600.webp">
|
<meta property="og:image" content="https://sealshare.nonameweb.ch/img/screenshots/desktop/light/01-upload-1600.webp">
|
||||||
<script defer data-domain="sealshare.nonameweb.ch" src="https://plausible.io/js/script.js"></script>
|
<!-- Privacy-friendly analytics by Plausible -->
|
||||||
|
<script async src="https://plausible.io/js/pa-zWB4R2-rrBeLfwms3uIBT.js"></script>
|
||||||
|
<script>
|
||||||
|
window.plausible=window.plausible||function(){(plausible.q=plausible.q||[]).push(arguments)},plausible.init=plausible.init||function(i){plausible.o=i||{}};
|
||||||
|
plausible.init()
|
||||||
|
</script>
|
||||||
<link rel="icon" href="img/favicon.svg" type="image/svg+xml">
|
<link rel="icon" href="img/favicon.svg" type="image/svg+xml">
|
||||||
<link rel="apple-touch-icon" href="img/icon.png">
|
<link rel="apple-touch-icon" href="img/icon.png">
|
||||||
<link rel="preload" href="fonts/GoogleSansFlex-Latin.woff2" as="font" type="font/woff2" crossorigin>
|
<link rel="preload" href="fonts/GoogleSansFlex-Latin.woff2" as="font" type="font/woff2" crossorigin>
|
||||||
|
|||||||
@@ -7,7 +7,12 @@
|
|||||||
<meta name="description" content="How the SealShare website handles visitor data: server logs at the host and Plausible analytics, nothing else.">
|
<meta name="description" content="How the SealShare website handles visitor data: server logs at the host and Plausible analytics, nothing else.">
|
||||||
<meta name="theme-color" content="#faf4ff" media="(prefers-color-scheme: light)">
|
<meta name="theme-color" content="#faf4ff" media="(prefers-color-scheme: light)">
|
||||||
<meta name="theme-color" content="#10062d" media="(prefers-color-scheme: dark)">
|
<meta name="theme-color" content="#10062d" media="(prefers-color-scheme: dark)">
|
||||||
<script defer data-domain="sealshare.nonameweb.ch" src="https://plausible.io/js/script.js"></script>
|
<!-- Privacy-friendly analytics by Plausible -->
|
||||||
|
<script async src="https://plausible.io/js/pa-zWB4R2-rrBeLfwms3uIBT.js"></script>
|
||||||
|
<script>
|
||||||
|
window.plausible=window.plausible||function(){(plausible.q=plausible.q||[]).push(arguments)},plausible.init=plausible.init||function(i){plausible.o=i||{}};
|
||||||
|
plausible.init()
|
||||||
|
</script>
|
||||||
<link rel="icon" href="img/favicon.svg" type="image/svg+xml">
|
<link rel="icon" href="img/favicon.svg" type="image/svg+xml">
|
||||||
<link rel="apple-touch-icon" href="img/icon.png">
|
<link rel="apple-touch-icon" href="img/icon.png">
|
||||||
<link rel="preload" href="fonts/GoogleSansFlex-Latin.woff2" as="font" type="font/woff2" crossorigin>
|
<link rel="preload" href="fonts/GoogleSansFlex-Latin.woff2" as="font" type="font/woff2" crossorigin>
|
||||||
|
|||||||
Reference in New Issue
Block a user