Compare commits

...

11 Commits

22 changed files with 265 additions and 41 deletions

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
gitolite/.env gitolite/.env
ansible/.env ansible/.env
ansible/known_hosts ansible/known_hosts
*/out/image-id

View File

@ -1,7 +1,7 @@
REGISTRY=registry.monotremata.xyz REGISTRY=registry.monotremata.xyz
PLATFORMS=linux/amd64,linux/arm64 PLATFORMS=linux/amd64,linux/arm64
IMAGES=agate buildx-qemu mpd pleroma rainloop tor transmission webdav IMAGES=agate buildx-qemu mpd pleroma rainloop rsync xmpp-ci static-page-builder tor transmission webdav
.PHONY: all $(IMAGES) .PHONY: all $(IMAGES)
@ -24,6 +24,15 @@ pleroma:
rainloop: rainloop:
$(BUILDX) $(BUILDX)
rsync:
$(BUILDX)
xmpp-ci:
$(BUILDX)
static-page-builder:
$(BUILDX)
tor: tor:
$(BUILDX) $(BUILDX)

View File

@ -3,12 +3,14 @@ REGISTRY=registry.monotremata.xyz
IMG=$(REGISTRY)/$(IMG_NAME) IMG=$(REGISTRY)/$(IMG_NAME)
PLATFORMS=linux/amd64 PLATFORMS=linux/amd64
.PHONY: build push buildx .PHONY: push buildx clean
build: Dockerfile out/image-id: Dockerfile
mkdir -p $(@D)
docker build -t $(IMG) . docker build -t $(IMG) .
echo $(IMG) > $@
push: build push: out/image-id
docker image push $(IMG) docker image push $(IMG)
buildx: Dockerfile buildx: Dockerfile
@ -17,3 +19,6 @@ buildx: Dockerfile
--tag $(IMG) \ --tag $(IMG) \
--push \ --push \
. .
clean:
rm -rf out

View File

@ -3,7 +3,7 @@ REGISTRY=registry.monotremata.xyz
IMG=$(REGISTRY)/$(IMG_NAME) IMG=$(REGISTRY)/$(IMG_NAME)
PLATFORMS=linux/amd64,linux/arm64 PLATFORMS=linux/amd64,linux/arm64
.PHONY: build push buildx .PHONY: push buildx clean
ARCH=$(shell uname -m) ARCH=$(shell uname -m)
@ -15,10 +15,12 @@ else
TARGETARCH=amd64 TARGETARCH=amd64
endif endif
build: Dockerfile entrypoint.sh out/image-id: Dockerfile entrypoint.sh
mkdir -p $(@D)
docker build -t $(IMG) --build-arg TARGETARCH=$(TARGETARCH) . docker build -t $(IMG) --build-arg TARGETARCH=$(TARGETARCH) .
echo $(IMG) > $@
push: build push: out/image-id
docker image push $(IMG) docker image push $(IMG)
buildx: Dockerfile entrypoint.sh buildx: Dockerfile entrypoint.sh
@ -27,3 +29,6 @@ buildx: Dockerfile entrypoint.sh
--tag $(IMG) \ --tag $(IMG) \
--push \ --push \
. .
clean:
rm -rf out

8
gitleaks/Dockerfile Normal file
View File

@ -0,0 +1,8 @@
# Kind of sad that I need to make this trivial image. But the gitleaks docker
# image by default uses a user named `gitleaks` with uid 1000, and it doesn't
# work correctly unless the gitleaks is run with the user that owns the files
# in the repo. And in my CI (woodpecker) the files in the repo are owned by
# root and I can't configure the user running the container in its yaml config.
# So yeah...
FROM zricethezav/gitleaks
USER root

24
gitleaks/Makefile Normal file
View File

@ -0,0 +1,24 @@
IMG_NAME=gitleaks
REGISTRY=registry.monotremata.xyz
IMG=$(REGISTRY)/$(IMG_NAME)
PLATFORMS=linux/amd64,linux/arm64
.PHONY: push buildx clean
out/image-id: Dockerfile
mkdir -p $(@D)
docker build -t $(IMG) .
echo $(IMG) > $@
push: out/image-id
docker image push $(IMG)
buildx: Dockerfile
docker buildx build \
--platform $(PLATFORMS) \
--tag $(IMG) \
--push \
.
clean:
rm -rf out

View File

@ -3,12 +3,14 @@ REGISTRY=registry.monotremata.xyz
IMG=$(REGISTRY)/$(IMG_NAME) IMG=$(REGISTRY)/$(IMG_NAME)
PLATFORMS=linux/arm64 PLATFORMS=linux/arm64
.PHONY: build push buildx .PHONY: push buildx clean
build: Dockerfile out/image-id: Dockerfile
mkdir -p $(@D)
docker build -t $(IMG) . docker build -t $(IMG) .
echo $(IMG) > $@
push: build push: out/image-id
docker image push $(IMG) docker image push $(IMG)
buildx: Dockerfile buildx: Dockerfile
@ -17,3 +19,6 @@ buildx: Dockerfile
--tag $(IMG) \ --tag $(IMG) \
--push \ --push \
. .
clean:
rm -rf out

View File

@ -15,8 +15,9 @@ RUN apk add \
https://git.pleroma.social/pleroma/pleroma.git \ https://git.pleroma.social/pleroma/pleroma.git \
/pleroma /pleroma
WORKDIR /pleroma
RUN echo "import Mix.Config" > /pleroma/config/prod.secret.exs && \ RUN echo "import Mix.Config" > /pleroma/config/prod.secret.exs && \
cd /pleroma && \
mix local.hex --force && \ mix local.hex --force && \
mix local.rebar --force && \ mix local.rebar --force && \
mix deps.get --only prod && \ mix deps.get --only prod && \

View File

@ -3,12 +3,14 @@ REGISTRY=registry.monotremata.xyz
IMG=$(REGISTRY)/$(IMG_NAME) IMG=$(REGISTRY)/$(IMG_NAME)
PLATFORMS=linux/amd64 PLATFORMS=linux/amd64
.PHONY: build push buildx .PHONY: push buildx clean
build: Dockerfile entrypoint.sh out/image-id: Dockerfile entrypoint.sh
mkdir -p $(@D)
docker build -t $(IMG) . docker build -t $(IMG) .
echo $(IMG) > $@
push: build push: out/image-id
docker image push $(IMG) docker image push $(IMG)
buildx: Dockerfile entrypoint.sh buildx: Dockerfile entrypoint.sh
@ -17,3 +19,6 @@ buildx: Dockerfile entrypoint.sh
--tag $(IMG) \ --tag $(IMG) \
--push \ --push \
. .
clean:
rm -rf out

View File

@ -13,9 +13,12 @@ RUN addgroup \
--shell /sbin/nologin \ --shell /sbin/nologin \
rainloop rainloop
RUN mkdir -p /var/www/rainloop && \
cd /var/www/rainloop && \ RUN mkdir -p /var/www/rainloop
curl -sL https://repository.rainloop.net/installer.php | php && \
WORKDIR /var/www/rainloop
RUN curl -sL https://repository.rainloop.net/installer.php | php && \
mkdir -p /run/nginx /var/run && \ mkdir -p /run/nginx /var/run && \
touch /var/run/nginx.pid && \ touch /var/run/nginx.pid && \
chown -R rainloop:rainloop /var/www/rainloop chown -R rainloop:rainloop /var/www/rainloop
@ -28,6 +31,4 @@ COPY nginx.conf /etc/nginx/nginx.conf
COPY entrypoint.sh /entrypoint.sh COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh RUN chmod +x /entrypoint.sh
WORKDIR /var/www/rainloop
ENTRYPOINT ["/entrypoint.sh"] ENTRYPOINT ["/entrypoint.sh"]

View File

@ -3,12 +3,14 @@ REGISTRY=registry.monotremata.xyz
IMG=$(REGISTRY)/$(IMG_NAME) IMG=$(REGISTRY)/$(IMG_NAME)
PLATFORMS=linux/arm64 PLATFORMS=linux/arm64
.PHONY: build push buildx .PHONY: push buildx clean
build: Dockerfile entrypoint.sh nginx.conf out/image-id: Dockerfile entrypoint.sh nginx.conf
mkdir -p $(@D)
docker build -t $(IMG) . docker build -t $(IMG) .
echo $(IMG) > $@
push: build push: out/image-id
docker image push $(IMG) docker image push $(IMG)
buildx: Dockerfile entrypoint.sh nginx.conf buildx: Dockerfile entrypoint.sh nginx.conf
@ -17,3 +19,6 @@ buildx: Dockerfile entrypoint.sh nginx.conf
--tag $(IMG) \ --tag $(IMG) \
--push \ --push \
. .
clean:
rm -rf out

View File

@ -3,12 +3,14 @@ REGISTRY=registry.monotremata.xyz
IMG=$(REGISTRY)/$(IMG_NAME) IMG=$(REGISTRY)/$(IMG_NAME)
PLATFORMS=linux/amd64,linux/arm64 PLATFORMS=linux/amd64,linux/arm64
.PHONY: build push buildx .PHONY: push buildx clean
build: Dockerfile entrypoint.sh out/image-id: Dockerfile entrypoint.sh
mkdir -p $(@D)
docker build -t $(IMG) . docker build -t $(IMG) .
echo $(IMG) > $@
push: build push: out/image-id
docker image push $(IMG) docker image push $(IMG)
buildx: Dockerfile entrypoint.sh buildx: Dockerfile entrypoint.sh
@ -17,3 +19,6 @@ buildx: Dockerfile entrypoint.sh
--tag $(IMG) \ --tag $(IMG) \
--push \ --push \
. .
clean:
rm -rf out

View File

@ -20,9 +20,10 @@ fi
KNOWN_HOSTS="${KNOWN_HOSTS:=${PLUGIN_KNOWN_HOSTS}}" KNOWN_HOSTS="${KNOWN_HOSTS:=${PLUGIN_KNOWN_HOSTS}}"
SOURCE="${SOURCE:-${PLUGIN_SOURCE}}" SOURCES="${SOURCES:-${PLUGIN_SOURCES}}"
if [ -z "$SOURCE" ]; then SOURCES=$(echo "$SOURCES" | tr ',' ' ')
echo "'source' must be specified" if [ -z "$SOURCES" ]; then
echo "specify at least one source"
exit 1 exit 1
fi fi
@ -48,4 +49,7 @@ known_hosts_file="${HOME}/.ssh/known_hosts"
# run rsync # run rsync
# shellcheck disable=SC2086 # shellcheck disable=SC2086
exec rsync $ARGS "${SOURCE}" "${USER}"@"${HOST}":"${TARGET}" for SOURCE in $SOURCES; do
echo "copying '$SOURCE' to '$TARGET'"
rsync $ARGS "${SOURCE}" "${USER}"@"${HOST}":"${TARGET}"
done

View File

@ -3,12 +3,14 @@ REGISTRY=registry.monotremata.xyz
IMG=$(REGISTRY)/$(IMG_NAME) IMG=$(REGISTRY)/$(IMG_NAME)
PLATFORMS=linux/amd64,linux/arm64 PLATFORMS=linux/amd64,linux/arm64
.PHONY: build push buildx .PHONY: push buildx clean
build: Dockerfile out/image-id: Dockerfile
mkdir -p $(@D)
docker build -t $(IMG) . docker build -t $(IMG) .
echo $(IMG) > $@
push: build push: out/image-id
docker image push $(IMG) docker image push $(IMG)
buildx: Dockerfile buildx: Dockerfile
@ -17,3 +19,6 @@ buildx: Dockerfile
--tag $(IMG) \ --tag $(IMG) \
--push \ --push \
. .
clean:
rm -rf out

5
terraform/Dockerfile Normal file
View File

@ -0,0 +1,5 @@
FROM alpine:3.16
RUN apk add --no-cache terraform
ENTRYPOINT ["terraform"]

24
terraform/Makefile Normal file
View File

@ -0,0 +1,24 @@
IMG_NAME=terraform
REGISTRY=registry.monotremata.xyz
IMG=$(REGISTRY)/$(IMG_NAME)
PLATFORMS=linux/amd64,linux/arm64
.PHONY: push buildx clean
out/image-id: Dockerfile
mkdir -p $(@D)
docker build -t $(IMG) .
echo $(IMG) > $@
push: out/image-id
docker image push $(IMG)
buildx: Dockerfile
docker buildx build \
--platform $(PLATFORMS) \
--tag $(IMG) \
--push \
.
clean:
rm -rf out

View File

@ -3,12 +3,14 @@ REGISTRY=registry.monotremata.xyz
IMG=$(REGISTRY)/$(IMG_NAME) IMG=$(REGISTRY)/$(IMG_NAME)
PLATFORMS=linux/amd64 PLATFORMS=linux/amd64
.PHONY: build push buildx .PHONY: push buildx clean
build: Dockerfile entrypoint.sh out/image-id: Dockerfile entrypoint.sh
mkdir -p $(@D)
docker build -t $(IMG) . docker build -t $(IMG) .
echo $(IMG) > $@
push: build push: out/image-id
docker image push $(IMG) docker image push $(IMG)
buildx: Dockerfile entrypoint.sh buildx: Dockerfile entrypoint.sh
@ -17,3 +19,6 @@ buildx: Dockerfile entrypoint.sh
--tag $(IMG) \ --tag $(IMG) \
--push \ --push \
. .
clean:
rm -rf out

View File

@ -3,12 +3,14 @@ REGISTRY=registry.monotremata.xyz
IMG=$(REGISTRY)/$(IMG_NAME) IMG=$(REGISTRY)/$(IMG_NAME)
PLATFORMS=linux/amd64,linux/arm64 PLATFORMS=linux/amd64,linux/arm64
.PHONY: build push buildx .PHONY: push buildx clean
build: Dockerfile out/image-id: Dockerfile
mkdir -p $(@D)
docker build -t $(IMG) . docker build -t $(IMG) .
echo $(IMG) > $@
push: build push: out/image-id
docker image push $(IMG) docker image push $(IMG)
buildx: Dockerfile buildx: Dockerfile
@ -17,3 +19,6 @@ buildx: Dockerfile
--tag $(IMG) \ --tag $(IMG) \
--push \ --push \
. .
clean:
rm -rf out

View File

@ -3,12 +3,14 @@ REGISTRY=registry.monotremata.xyz
IMG=$(REGISTRY)/$(IMG_NAME) IMG=$(REGISTRY)/$(IMG_NAME)
PLATFORMS=linux/amd64,linux/arm64 PLATFORMS=linux/amd64,linux/arm64
.PHONY: build push buildx .PHONY: push buildx clean
build: Dockerfile nginx.conf out/image-id: Dockerfile nginx.conf
mkdir -p $(@D)
docker build -t $(IMG) . docker build -t $(IMG) .
echo $(IMG) > $@
push: build push: out/image-id
docker image push $(IMG) docker image push $(IMG)
buildx: Dockerfile nginx.conf buildx: Dockerfile nginx.conf
@ -17,3 +19,6 @@ buildx: Dockerfile nginx.conf
--tag $(IMG) \ --tag $(IMG) \
--push \ --push \
. .
clean:
rm -rf out

18
xmpp-ci/Dockerfile Normal file
View File

@ -0,0 +1,18 @@
FROM alpine:3.16
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh && \
apk add --no-cache go-sendxmpp && \
addgroup \
--gid 10001 \
sendxmpp && \
adduser \
--uid 10000 \
--ingroup sendxmpp \
--disabled-password \
--shell /sbin/nologin \
sendxmpp
USER sendxmpp
ENTRYPOINT ["/entrypoint.sh"]

24
xmpp-ci/Makefile Normal file
View File

@ -0,0 +1,24 @@
IMG_NAME=xmpp-ci
REGISTRY=registry.monotremata.xyz
IMG=$(REGISTRY)/$(IMG_NAME)
PLATFORMS=linux/amd64,linux/arm64
.PHONY: push buildx clean
out/image-id: Dockerfile entrypoint.sh
mkdir -p $(@D)
docker build -t $(IMG) .
echo $(IMG) > $@
push: out/image-id
docker image push $(IMG)
buildx: Dockerfile entrypoint.sh
docker buildx build \
--platform $(PLATFORMS) \
--tag $(IMG) \
--push \
.
clean:
rm -rf out

55
xmpp-ci/entrypoint.sh Normal file
View File

@ -0,0 +1,55 @@
#!/bin/sh
USERNAME="${USERNAME:-${PLUGIN_USERNAME}}"
if [ -z "$USERNAME" ]; then
echo "'username' must specified"
exit 1
fi
PASSWORD="${PASSWORD:-${PLUGIN_PASSWORD}}"
if [ -z "$PASSWORD" ]; then
echo "'password' must specified"
exit 1
fi
RECIPIENT="${RECIPIENT:-${PLUGIN_RECIPIENT}}"
if [ -z "$RECIPIENT" ]; then
echo "'recipient' must specified"
exit 1
fi
em () {
echo "_${1}_"
}
monospace () {
echo '`'"${1}"'`'
}
strong () {
echo "*${1}*"
}
strike () {
echo "~${1}~"
}
build_line () {
echo "$1: $2"
}
message () {
echo status: "${CI_BUILD_STATUS}"
echo repo: "${CI_REPO_NAME}"
echo branch: "${CI_REPO_DEFAULT_BRANCH}"
echo ""
echo commit msg:
echo "${CI_COMMIT_MESSAGE}"
}
message
message | \
go-sendxmpp \
--username="${USERNAME}"\
--password="${PASSWORD}" \
"${RECIPIENT}"