mirror of
https://github.com/TecharoHQ/anubis.git
synced 2026-04-08 17:48:44 +00:00
Compare commits
6 Commits
fix/nilpoi
...
Xe/docker-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9499903715 | ||
|
|
492d9b374e | ||
|
|
c81c21478a | ||
|
|
b0757a8b0e | ||
|
|
ca36cb091e | ||
|
|
b2b7183a8f |
25
.dockerignore
Normal file
25
.dockerignore
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
.env
|
||||||
|
*.deb
|
||||||
|
*.rpm
|
||||||
|
|
||||||
|
# Additional package locks
|
||||||
|
pnpm-lock.yaml
|
||||||
|
yarn.lock
|
||||||
|
|
||||||
|
# Go binaries and test artifacts
|
||||||
|
main
|
||||||
|
*.test
|
||||||
|
|
||||||
|
node_modules
|
||||||
|
|
||||||
|
# MacOS
|
||||||
|
.DS_store
|
||||||
|
|
||||||
|
# Intellij
|
||||||
|
.idea
|
||||||
|
|
||||||
|
# how does this get here
|
||||||
|
doc/VERSION
|
||||||
|
|
||||||
|
web/static/js/*
|
||||||
|
!web/static/js/.gitignore
|
||||||
3
.github/actions/spelling/expect.txt
vendored
3
.github/actions/spelling/expect.txt
vendored
@@ -6,6 +6,7 @@ amazonbot
|
|||||||
anthro
|
anthro
|
||||||
anubis
|
anubis
|
||||||
anubistest
|
anubistest
|
||||||
|
apk
|
||||||
Applebot
|
Applebot
|
||||||
archlinux
|
archlinux
|
||||||
asnc
|
asnc
|
||||||
@@ -113,6 +114,7 @@ fsys
|
|||||||
fullchain
|
fullchain
|
||||||
gaissmai
|
gaissmai
|
||||||
Galvus
|
Galvus
|
||||||
|
gcflags
|
||||||
geoip
|
geoip
|
||||||
geoipchecker
|
geoipchecker
|
||||||
gha
|
gha
|
||||||
@@ -268,6 +270,7 @@ runtimedirectory
|
|||||||
Ryzen
|
Ryzen
|
||||||
sas
|
sas
|
||||||
sasl
|
sasl
|
||||||
|
sbom
|
||||||
screenshots
|
screenshots
|
||||||
searchbot
|
searchbot
|
||||||
searx
|
searx
|
||||||
|
|||||||
57
.github/workflows/docker-pr.yml
vendored
57
.github/workflows/docker-pr.yml
vendored
@@ -2,7 +2,7 @@ name: Docker image builds (pull requests)
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [ "main" ]
|
branches: ["main"]
|
||||||
|
|
||||||
env:
|
env:
|
||||||
DOCKER_METADATA_SET_OUTPUT_ENV: "true"
|
DOCKER_METADATA_SET_OUTPUT_ENV: "true"
|
||||||
@@ -11,7 +11,7 @@ permissions:
|
|||||||
contents: read
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
buildx-bake:
|
||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-24.04
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
@@ -21,48 +21,17 @@ jobs:
|
|||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
- name: Set up Homebrew
|
- name: Set up Docker Buildx
|
||||||
uses: Homebrew/actions/setup-homebrew@main
|
uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0
|
||||||
|
|
||||||
- name: Setup Homebrew cellar cache
|
|
||||||
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
/home/linuxbrew/.linuxbrew/Cellar
|
|
||||||
/home/linuxbrew/.linuxbrew/bin
|
|
||||||
/home/linuxbrew/.linuxbrew/etc
|
|
||||||
/home/linuxbrew/.linuxbrew/include
|
|
||||||
/home/linuxbrew/.linuxbrew/lib
|
|
||||||
/home/linuxbrew/.linuxbrew/opt
|
|
||||||
/home/linuxbrew/.linuxbrew/sbin
|
|
||||||
/home/linuxbrew/.linuxbrew/share
|
|
||||||
/home/linuxbrew/.linuxbrew/var
|
|
||||||
key: ${{ runner.os }}-go-homebrew-cellar-${{ hashFiles('go.sum') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-go-homebrew-cellar-
|
|
||||||
|
|
||||||
- name: Install Brew dependencies
|
|
||||||
run: |
|
|
||||||
brew bundle
|
|
||||||
|
|
||||||
- name: Docker meta
|
|
||||||
id: meta
|
|
||||||
uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804 # v5.7.0
|
|
||||||
with:
|
|
||||||
images: ghcr.io/${{ github.repository }}
|
|
||||||
|
|
||||||
- name: Build and push
|
- name: Build and push
|
||||||
id: build
|
id: build
|
||||||
run: |
|
uses: docker/bake-action@76f9fa3a758507623da19f6092dc4089a7e61592 # v6.6.0
|
||||||
npm ci
|
with:
|
||||||
npm run container
|
source: .
|
||||||
env:
|
push: true
|
||||||
PULL_REQUEST_ID: ${{ github.event.number }}
|
sbom: true
|
||||||
DOCKER_REPO: ghcr.io/${{ github.repository }}
|
cache-from: type=gha
|
||||||
SLOG_LEVEL: debug
|
cache-to: type=gha,mode=max
|
||||||
|
set: |
|
||||||
- run: |
|
anubis.tags=ttl.sh/techaro/pr-${{ github.event.number }}/anubis:24h
|
||||||
echo "Test this with:"
|
|
||||||
echo "docker pull ${DOCKER_IMAGE}"
|
|
||||||
env:
|
|
||||||
DOCKER_IMAGE: ${{ steps.build.outputs.docker_image }}
|
|
||||||
|
|||||||
57
.github/workflows/docker.yml
vendored
57
.github/workflows/docker.yml
vendored
@@ -17,7 +17,7 @@ permissions:
|
|||||||
pull-requests: write
|
pull-requests: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
buildx-bake:
|
||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-24.04
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
@@ -27,33 +27,8 @@ jobs:
|
|||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
- name: Set lowercase image name
|
- name: Set up Docker Buildx
|
||||||
run: |
|
uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0
|
||||||
echo "IMAGE=ghcr.io/${GITHUB_REPOSITORY,,}" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Set up Homebrew
|
|
||||||
uses: Homebrew/actions/setup-homebrew@main
|
|
||||||
|
|
||||||
- name: Setup Homebrew cellar cache
|
|
||||||
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
/home/linuxbrew/.linuxbrew/Cellar
|
|
||||||
/home/linuxbrew/.linuxbrew/bin
|
|
||||||
/home/linuxbrew/.linuxbrew/etc
|
|
||||||
/home/linuxbrew/.linuxbrew/include
|
|
||||||
/home/linuxbrew/.linuxbrew/lib
|
|
||||||
/home/linuxbrew/.linuxbrew/opt
|
|
||||||
/home/linuxbrew/.linuxbrew/sbin
|
|
||||||
/home/linuxbrew/.linuxbrew/share
|
|
||||||
/home/linuxbrew/.linuxbrew/var
|
|
||||||
key: ${{ runner.os }}-go-homebrew-cellar-${{ hashFiles('go.sum') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-go-homebrew-cellar-
|
|
||||||
|
|
||||||
- name: Install Brew dependencies
|
|
||||||
run: |
|
|
||||||
brew bundle
|
|
||||||
|
|
||||||
- name: Log into registry
|
- name: Log into registry
|
||||||
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
|
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
|
||||||
@@ -62,24 +37,16 @@ jobs:
|
|||||||
username: ${{ github.repository_owner }}
|
username: ${{ github.repository_owner }}
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Docker meta
|
- name: Set version
|
||||||
id: meta
|
run: |
|
||||||
uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804 # v5.7.0
|
echo "VERSION=$(git describe --tags --always --dirty) >> $GITHUB_ENV
|
||||||
with:
|
|
||||||
images: ${{ env.IMAGE }}
|
|
||||||
|
|
||||||
- name: Build and push
|
- name: Build and push
|
||||||
id: build
|
id: build
|
||||||
run: |
|
uses: docker/bake-action@76f9fa3a758507623da19f6092dc4089a7e61592 # v6.6.0
|
||||||
npm ci
|
|
||||||
npm run container
|
|
||||||
env:
|
|
||||||
DOCKER_REPO: ${{ env.IMAGE }}
|
|
||||||
SLOG_LEVEL: debug
|
|
||||||
|
|
||||||
- name: Generate artifact attestation
|
|
||||||
uses: actions/attest-build-provenance@e8998f949152b193b063cb0ec769d69d929409be # v2.4.0
|
|
||||||
with:
|
with:
|
||||||
subject-name: ${{ env.IMAGE }}
|
source: .
|
||||||
subject-digest: ${{ steps.build.outputs.digest }}
|
push: true
|
||||||
push-to-registry: true
|
sbom: true
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
|
|||||||
33
docker-bake.hcl
Normal file
33
docker-bake.hcl
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
variable "ALPINE_VERSION" { default = "3.22" }
|
||||||
|
variable "GITHUB_SHA" { default = "devel" }
|
||||||
|
variable "VERSION" { default = "devel-docker" }
|
||||||
|
|
||||||
|
group "default" {
|
||||||
|
targets = [
|
||||||
|
"anubis",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
target "anubis" {
|
||||||
|
args = {
|
||||||
|
ALPINE_VERSION = "3.22"
|
||||||
|
VERSION = "${VERSION}"
|
||||||
|
}
|
||||||
|
context = "."
|
||||||
|
dockerfile = "./docker/anubis.Dockerfile"
|
||||||
|
platforms = [
|
||||||
|
"linux/386",
|
||||||
|
"linux/amd64",
|
||||||
|
"linux/arm64",
|
||||||
|
"linux/arm/v7",
|
||||||
|
"linux/ppc64le",
|
||||||
|
"linux/riscv64",
|
||||||
|
]
|
||||||
|
pull = true
|
||||||
|
sbom = true
|
||||||
|
provenance = true
|
||||||
|
tags = [
|
||||||
|
"ghcr.io/techarohq/anubis:${VERSION}",
|
||||||
|
"ghcr.io/techarohq/anubis:main"
|
||||||
|
]
|
||||||
|
}
|
||||||
54
docker/anubis.Dockerfile
Normal file
54
docker/anubis.Dockerfile
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
ARG ALPINE_VERSION=edge
|
||||||
|
FROM --platform=${BUILDPLATFORM} alpine:${ALPINE_VERSION} AS build
|
||||||
|
|
||||||
|
RUN apk -U add go nodejs git build-base git npm bash zstd brotli gzip
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY go.mod go.sum ./
|
||||||
|
RUN \
|
||||||
|
--mount=type=cache,target=/root/.cache \
|
||||||
|
--mount=type=cache,target=/root/go \
|
||||||
|
go mod download
|
||||||
|
|
||||||
|
COPY package.json package-lock.json ./
|
||||||
|
RUN \
|
||||||
|
--mount=type=cache,target=/app/node_modules \
|
||||||
|
npm ci
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
RUN \
|
||||||
|
--mount=type=cache,target=/root/.cache \
|
||||||
|
--mount=type=cache,target=/root/go \
|
||||||
|
--mount=type=cache,target=/app/node_modules \
|
||||||
|
npm run assets
|
||||||
|
|
||||||
|
ARG TARGETOS
|
||||||
|
ARG TARGETARCH
|
||||||
|
ARG VERSION=devel-docker
|
||||||
|
|
||||||
|
RUN \
|
||||||
|
--mount=type=cache,target=/root/.cache \
|
||||||
|
--mount=type=cache,target=/root/go \
|
||||||
|
--mount=type=cache,target=/app/node_modules \
|
||||||
|
GOOS=${TARGETOS} \
|
||||||
|
GOARCH=${TARGETARCH} \
|
||||||
|
CGO_ENABLED=0 \
|
||||||
|
GOARM=7 \
|
||||||
|
go build \
|
||||||
|
-gcflags "all=-N -l" \
|
||||||
|
-o /app/bin/anubis \
|
||||||
|
-ldflags "-s -w -extldflags -static -X github.com/TecharoHQ/anubis.Version=${VERSION}" \
|
||||||
|
./cmd/anubis
|
||||||
|
|
||||||
|
FROM alpine:${ALPINE_VERSION} AS run
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
RUN apk -U add ca-certificates mailcap
|
||||||
|
|
||||||
|
COPY --from=build /app/bin/anubis /app/bin/anubis
|
||||||
|
|
||||||
|
CMD ["/app/bin/anubis"]
|
||||||
|
HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 CMD [ "/app/bin/anubis", "--healthcheck" ]
|
||||||
|
|
||||||
|
LABEL org.opencontainers.image.source="https://github.com/TecharoHQ/anubis"
|
||||||
@@ -68,8 +68,14 @@ Thanks to [@taviso](https://github.com/taviso) for reporting this issue.
|
|||||||
|
|
||||||
### Breaking changes
|
### Breaking changes
|
||||||
|
|
||||||
|
We try to introduce breaking changes as much as possible, but these are the changes that may be relevant for you as an administrator:
|
||||||
|
|
||||||
- The "slow" frontend solver has been removed in order to reduce maintenance burden. Any existing uses of it will still work, but issue a warning upon startup asking administrators to upgrade to the "fast" frontend solver.
|
- The "slow" frontend solver has been removed in order to reduce maintenance burden. Any existing uses of it will still work, but issue a warning upon startup asking administrators to upgrade to the "fast" frontend solver.
|
||||||
|
|
||||||
|
#### Docker image build process has been changed
|
||||||
|
|
||||||
|
Previously Docker images were built with [ko](https://ko.build/), which put the Anubis binary at `/ko-app/anubis`. [#862](https://github.com/TecharoHQ/anubis/pull/862) changes this to build with [docker buildx bake](https://docs.docker.com/reference/cli/docker/buildx/bake/) instead. If this causes you problems, please [file an issue](https://github.com/TecharoHQ/anubis/issues/new).
|
||||||
|
|
||||||
### New Locales
|
### New Locales
|
||||||
|
|
||||||
- [Lithuanian](https://github.com/TecharoHQ/anubis/pull/972)
|
- [Lithuanian](https://github.com/TecharoHQ/anubis/pull/972)
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ services:
|
|||||||
- ./var/repos:/srv/git
|
- ./var/repos:/srv/git
|
||||||
|
|
||||||
anubis:
|
anubis:
|
||||||
image: ko.local/anubis
|
image: ghcr.io/techarohq/anubis:devel-docker
|
||||||
environment:
|
environment:
|
||||||
BIND: ":8005"
|
BIND: ":8005"
|
||||||
TARGET: http://cgit:80
|
TARGET: http://cgit:80
|
||||||
|
|||||||
@@ -9,9 +9,7 @@ set -u
|
|||||||
|
|
||||||
(
|
(
|
||||||
cd ../.. && \
|
cd ../.. && \
|
||||||
npm ci && \
|
docker buildx bake
|
||||||
npm run assets \
|
|
||||||
ko build --platform=all --base-import-paths --tags="latest" --image-user=1000 --image-annotation="" --image-label="" ./cmd/anubis -L
|
|
||||||
)
|
)
|
||||||
|
|
||||||
rm -rf ./var/repos ./var/clones
|
rm -rf ./var/repos ./var/clones
|
||||||
|
|||||||
@@ -9,11 +9,10 @@ set -u
|
|||||||
|
|
||||||
(
|
(
|
||||||
cd ../.. && \
|
cd ../.. && \
|
||||||
npm ci && \
|
docker buildx bake
|
||||||
npm run assets \
|
|
||||||
ko build --platform=all --base-import-paths --tags="latest" --image-user=1000 --image-annotation="" --image-label="" ./cmd/anubis -L
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
rm -rf ./var/repos ./var/foo
|
rm -rf ./var/repos ./var/foo
|
||||||
mkdir -p ./var/repos
|
mkdir -p ./var/repos
|
||||||
|
|
||||||
|
|||||||
@@ -9,11 +9,10 @@ set -u
|
|||||||
|
|
||||||
(
|
(
|
||||||
cd ../.. && \
|
cd ../.. && \
|
||||||
npm ci && \
|
docker buildx bake
|
||||||
npm run assets \
|
|
||||||
ko build --platform=all --base-import-paths --tags="latest" --image-user=1000 --image-annotation="" --image-label="" ./cmd/anubis -L
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
|
|
||||||
attempt=1
|
attempt=1
|
||||||
|
|||||||
@@ -17,16 +17,7 @@ function build_anubis_ko() {
|
|||||||
cd $REPO_ROOT && npm ci && npm run assets
|
cd $REPO_ROOT && npm ci && npm run assets
|
||||||
)
|
)
|
||||||
(
|
(
|
||||||
cd $REPO_ROOT &&
|
cd $REPO_ROOT && docker buildx bake
|
||||||
VERSION=devel ko build \
|
|
||||||
--platform=all \
|
|
||||||
--base-import-paths \
|
|
||||||
--tags="latest" \
|
|
||||||
--image-user=1000 \
|
|
||||||
--image-annotation="" \
|
|
||||||
--image-label="" \
|
|
||||||
./cmd/anubis \
|
|
||||||
--local
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user