Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Q
quassel-docker
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Janne Mareike Koschinski
quassel-docker
Commits
fb0cf542
Verified
Commit
fb0cf542
authored
4 years ago
by
Janne Mareike Koschinski
Browse files
Options
Downloads
Patches
Plain Diff
Simplify build process and add automated builds
parent
42260cff
No related branches found
No related tags found
No related merge requests found
Pipeline
#671
failed
4 years ago
Stage: build
Changes
5
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
.gitlab-ci.yml
+18
-0
18 additions, 0 deletions
.gitlab-ci.yml
Dockerfile.trunk
+2
-16
2 additions, 16 deletions
Dockerfile.trunk
Dockerfile.v0.13
+178
-0
178 additions, 0 deletions
Dockerfile.v0.13
Makefile
+0
-70
0 additions, 70 deletions
Makefile
build.sh
+48
-6
48 additions, 6 deletions
build.sh
with
246 additions
and
92 deletions
.gitlab-ci.yml
0 → 100644
+
18
−
0
View file @
fb0cf542
build-v0.13
:
stage
:
build
image
:
name
:
gcr.io/kaniko-project/executor:debug
entrypoint
:
[
"
"
]
script
:
-
mkdir -p /kaniko/.docker
-
echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
-
/kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile.v0.13 --destination $CI_REGISTRY_IMAGE:v0.13.1 --destination $CI_REGISTRY_IMAGE:latest
build-master
:
stage
:
build
image
:
name
:
gcr.io/kaniko-project/executor:debug
entrypoint
:
[
"
"
]
script
:
-
mkdir -p /kaniko/.docker
-
echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
-
/kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile.trunk --destination $CI_REGISTRY_IMAGE:trunk --destination $CI_REGISTRY_IMAGE:latest
This diff is collapsed.
Click to expand it.
Dockerfile
→
Dockerfile
.trunk
+
2
−
16
View file @
fb0cf542
# development image
ARG
BASE=alpine:
latest
ARG BASE=alpine:
3.13
FROM $BASE AS builder
# install development dependencies
...
...
@@ -21,16 +21,10 @@ RUN apk add --no-cache \
qt5-qtbase-sqlite
ARG QUASSEL_VERSION="0.13.1"
ARG
QUASSEL_BRANCH="0.13"
ARG
QUASSEL_REPO="https://github.com/quassel/quassel"
RUN if
[
"
$QUASSEL_BRANCH
"
=
"0.13"
]
;
then
\
apk add
--no-cache
qt5-qtscript-dev
;
\
fi
# setup repo
RUN mkdir /quassel && \
git clone
-b
"
$QUASSEL_BRANCH
"
--single-branch
"
$QUASSEL_REPO
"
/quassel/src
&&
\
git clone -b
master --single-branch https://github.com/quassel/quassel
/quassel/src && \
cd /quassel/src && \
if [ ! -z "$QUASSEL_VERSION" ]; then \
git checkout $QUASSEL_VERSION; \
...
...
@@ -73,14 +67,6 @@ RUN apk add --no-cache \
qt5-qtbase-postgresql \
qt5-qtbase-sqlite
ARG
QUASSEL_VERSION="0.13.1"
ARG
QUASSEL_BRANCH="0.13"
ARG
QUASSEL_REPO="https://github.com/quassel/quassel"
RUN if
[
"
$QUASSEL_BRANCH
"
=
"0.13"
]
;
then
\
apk add
--no-cache
qt5-qtscript
;
\
fi
# copy binaries
COPY --from=builder /quassel/install/bin /usr/bin/
COPY --from=builder /quassel/install/lib* /usr/lib/
...
...
This diff is collapsed.
Click to expand it.
Dockerfile.v0.13
0 → 100644
+
178
−
0
View file @
fb0cf542
# development image
ARG BASE=alpine:3.10
FROM $BASE AS builder
# install development dependencies
RUN apk add --no-cache \
cmake \
curl \
dbus-dev \
g++ \
gcc \
git \
libressl \
libressl-dev \
openldap-dev \
ninja \
paxmark \
boost-dev \
qt5-qtbase-dev \
qt5-qtbase-postgresql \
qt5-qtbase-sqlite \
qt5-qtscript-dev
ARG QUASSEL_VERSION="0.13.1"
# setup repo
RUN mkdir /quassel && \
git clone -b 0.13 --single-branch https://github.com/quassel/quassel /quassel/src && \
cd /quassel/src && \
if [ ! -z "$QUASSEL_VERSION" ]; then \
git checkout $QUASSEL_VERSION; \
fi
# generate build files
RUN mkdir /quassel/build && \
cd /quassel/build && \
CXXFLAGS="-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -fPIE -pie -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now" \
cmake \
-GNinja \
-DCMAKE_INSTALL_PREFIX=/quassel/install \
-DCMAKE_BUILD_TYPE="Release" \
-DUSE_QT5=ON \
-DWITH_KDE=OFF \
-DWANT_QTCLIENT=OFF \
-DWANT_CORE=ON \
-DWANT_MONO=OFF \
/quassel/src
# build binaries
RUN cd /quassel/build && \
ninja && \
ninja install && \
paxmark -m /quassel/install/bin/quasselcore
# generate empty directory so docker doesn’t break
RUN mkdir -p /quassel/install/lib_fix_docker_copy
# runtime image
FROM $BASE
# install runtime dependencies
RUN apk add --no-cache \
bash \
boost \
libressl \
libldap \
qt5-qtbase \
qt5-qtbase-postgresql \
qt5-qtbase-sqlite \
qt5-qtscript
# copy binaries
COPY --from=builder /quassel/install/bin /usr/bin/
COPY --from=builder /quassel/install/lib* /usr/lib/
# setup user environment
RUN addgroup -g 1000 -S quassel && \
adduser -S -G quassel -u 1000 -s /bin/sh -h /config quassel
USER quassel
VOLUME /config
# expose ports
EXPOSE 4242/tcp
EXPOSE 10113/tcp
# Specify the directory holding configuration files, the SQlite database and the SSL certificate.
ENV CONFIG_DIR="/config"
# The address(es) quasselcore will listen on.
ENV QUASSEL_LISTEN="::,0.0.0.0"
# The port quasselcore will listen at.
ENV QUASSEL_PORT="4242"
# Don't restore last core's state.
ENV NORESTORE="false"
# Use users' quasselcore username as ident reply. Ignores each user's configured ident setting.
ENV STRICT_IDENT="false"
# Enable internal ident daemon.
ENV IDENT_ENABLED="false"
# The address(es) quasselcore will listen on for ident requests. Same format as --listen.
ENV IDENT_LISTEN="::1,127.0.0.1"
# The port quasselcore will listen at for ident requests. Only meaningful with --ident-daemon.
ENV IDENT_PORT="10113"
# Enable oidentd integration. In most cases you should also enable --strict-ident.
ENV OIDENTD_ENABLED="false"
# Set path to oidentd configuration file.
ENV OIDENTD_CONF_FILE=""
# Require SSL for remote (non-loopback) client connections.
ENV SSL_REQUIRED="false"
# Specify the base64 encoded data for the SSL certificate.
ENV SSL_CERT_DATA=""
# Specify the path to the SSL certificate.
ENV SSL_CERT_FILE=""
# Specify the base64 encoded data for the SSL certificate.
ENV SSL_KEY_DATA=""
# Specify the path to the SSL key.
ENV SSL_KEY_FILE=""
# Enable metrics API.
ENV METRICS_ENABLED="false"
# The address(es) quasselcore will listen on for metrics requests. Same format as --listen.
ENV METRICS_LISTEN="::1,127.0.0.1"
# The port quasselcore will listen at for metrics requests. Only meaningful with --metrics-daemon.
ENV METRICS_PORT="9558"
# Supports one of Debug|Info|Warning|Error; default is Info.
ENV LOGLEVEL="Info"
# Enable logging of all SQL queries to debug log, also sets --loglevel Debug automatically
ENV DEBUG_ENABLED="false"
# Enable logging of all raw IRC messages to debug log, including passwords! In most cases you should also set --loglevel Debug
ENV DEBUG_IRC_ENABLED="false"
# Limit raw IRC logging to this network ID. Implies --debug-irc
ENV DEBUG_IRC_ID=""
# Enable logging of all parsed IRC messages to debug log, including passwords! In most cases you should also set --loglevel Debug
ENV DEBUG_IRC_PARSED_ENABLED="false"
# Limit parsed IRC logging to this network ID. Implies --debug-irc-parsed
ENV DEBUG_IRC_PARSED_ID=""
# Load configuration from environment variables.
ENV CONFIG_FROM_ENVIRONMENT="false"
# Specify the database backend. Allowed values: SQLite or PostgreSQL
ENV DB_BACKEND="SQLite"
# If the backend is PostgreSQL, specify the database user username
ENV DB_PGSQL_USERNAME="quassel"
# If the backend is PostgreSQL, specify the database user password
ENV DB_PGSQL_PASSWORD=""
# If the backend is PostgreSQL, specify the hostname of the database
ENV DB_PGSQL_HOSTNAME="localhost"
# If the backend is PostgreSQL, specify the port of the database
ENV DB_PGSQL_PORT="5432"
# If the backend is PostgreSQL, specify the database of the PostgreSQL cluster
ENV DB_PGSQL_DATABASE="quassel"
# Specify the authenticator backend. Allowed values: Database or Ldap
ENV AUTH_AUTHENTICATOR="Database"
# If the authenticator is Ldap, specify the hostname of the directory server
ENV AUTH_LDAP_HOSTNAME="ldap://localhost"
# If the authenticator is Ldap, specify the port of the directory server
ENV AUTH_LDAP_PORT="389"
# If the authenticator is Ldap, specify the bind dn
ENV AUTH_LDAP_BIND_DN=""
# If the authenticator is Ldap, specify the bind password
ENV AUTH_LDAP_BIND_PASSWORD=""
# If the authenticator is Ldap, specify the base dn
ENV AUTH_LDAP_BASE_DN=""
# If the authenticator is Ldap, specify the filter query
ENV AUTH_LDAP_FILTER=""
# If the authenticator is Ldap, specify the attribute to be used as userid
ENV AUTH_LDAP_UID_ATTRIBUTE="uid"
ADD src/docker-entrypoint.sh /
ENTRYPOINT ["/docker-entrypoint.sh"]
This diff is collapsed.
Click to expand it.
Makefile
deleted
100644 → 0
+
0
−
70
View file @
42260cff
NAME
=
k8r.eu/justjanne/quassel-docker
ALPINE_VERSION
=
3.10
QUASSEL_VERSION
=
QUASSEL_BRANCH
=
master
QUASSEL_REPO
=
https://github.com/quassel/quassel
ifeq
($(strip $(QUASSEL_VERSION)),)
IMAGE_VERSION
=
trunk
else
IMAGE_VERSION
=
v
$(
QUASSEL_VERSION
)
endif
.PHONY
:
all
all
:
push
.PHONY
:
build
build
:
build_x86 build_aarch64 build_armhf
.PHONY
:
build_x86
build_x86
:
Dockerfile
docker build
\
--pull
\
-t
$(
NAME
)
:
$(
IMAGE_VERSION
)
\
--build-arg
BASE
=
alpine:
$(
ALPINE_VERSION
)
\
--build-arg
QUASSEL_VERSION
=
$(
QUASSEL_VERSION
)
\
--build-arg
QUASSEL_BRANCH
=
$(
QUASSEL_BRANCH
)
\
--build-arg
QUASSEL_REPO
=
$(
QUASSEL_REPO
)
\
.
if
[
!
-z
"
$(
QUASSEL_VERSION
)
"
]
;
then
docker tag
$(
NAME
)
:
$(
IMAGE_VERSION
)
$(
NAME
)
:latest
;
fi
.PHONY
:
build_aarch64
build_aarch64
:
Dockerfile
docker build
\
--pull
\
-t
$(
NAME
)
:
$(
IMAGE_VERSION
)
-aarch64
\
--build-arg
BASE
=
multiarch/alpine:aarch64-v
$(
ALPINE_VERSION
)
\
--build-arg
QUASSEL_VERSION
=
$(
QUASSEL_VERSION
)
\
--build-arg
QUASSEL_BRANCH
=
$(
QUASSEL_BRANCH
)
\
--build-arg
QUASSEL_REPO
=
$(
QUASSEL_REPO
)
\
.
if
[
!
-z
"
$(
QUASSEL_VERSION
)
"
]
;
then
docker tag
$(
NAME
)
:
$(
IMAGE_VERSION
)
-aarch64
$(
NAME
)
:aarch64
;
fi
.PHONY
:
build_armhf
build_armhf
:
Dockerfile
docker build
\
--pull
\
-t
$(
NAME
)
:
$(
IMAGE_VERSION
)
-armhf
\
--build-arg
BASE
=
multiarch/alpine:armhf-v
$(
ALPINE_VERSION
)
\
--build-arg
QUASSEL_VERSION
=
$(
QUASSEL_VERSION
)
\
--build-arg
QUASSEL_BRANCH
=
$(
QUASSEL_BRANCH
)
\
--build-arg
QUASSEL_REPO
=
$(
QUASSEL_REPO
)
\
.
if
[
!
-z
"
$(
QUASSEL_VERSION
)
"
]
;
then
docker tag
$(
NAME
)
:
$(
IMAGE_VERSION
)
-armhf
$(
NAME
)
:armhf
;
fi
.PHONY
:
push
push
:
push_x86 push_aarch64 push_armhf
.PHONY
:
push_x86
push_x86
:
build_x86
docker push
$(
NAME
)
:
$(
IMAGE_VERSION
)
if
[
!
-z
"
$(
QUASSEL_VERSION
)
"
]
;
then
docker push
$(
NAME
)
:latest
;
fi
.PHONY
:
push_aarch64
push_aarch64
:
build_aarch64
docker push
$(
NAME
)
:
$(
IMAGE_VERSION
)
-aarch64
if
[
!
-z
"
$(
QUASSEL_VERSION
)
"
]
;
then
docker push
$(
NAME
)
:aarch64
;
fi
.PHONY
:
push_armhf
push_armhf
:
build_armhf
docker push
$(
NAME
)
:
$(
IMAGE_VERSION
)
-armhf
if
[
!
-z
"
$(
QUASSEL_VERSION
)
"
]
;
then
docker push
$(
NAME
)
:armhf
;
fi
This diff is collapsed.
Click to expand it.
build.sh
+
48
−
6
View file @
fb0cf542
#!/bin/sh
NAME
=
k8r.eu/justjanne/quassel-docker
docker run
--rm
--privileged
multiarch/qemu-user-static:register
--reset
make
\
QUASSEL_BRANCH
=
0.13
\
QUASSEL_VERSION
=
0.13.1
make
\
QUASSEL_BRANCH
=
master
\
QUASSEL_REPO
=
https://github.com/quassel/quassel
cd
"
$(
dirname
"
$0
"
)
"
docker build
.
\
-f
Dockerfile.v0.13
\
--pull
\
-t
${
NAME
}
:v0.13.1
\
--build-arg
BASE
=
alpine:3.10
docker build
.
\
-f
Dockerfile.v0.13
\
--pull
\
-t
${
NAME
}
:v0.13.1-aarch64
\
--build-arg
BASE
=
multiarch/alpine:aarch64-v3.10
docker build
.
\
-f
Dockerfile.v0.13
\
--pull
\
-t
${
NAME
}
:v0.13.1-armhf
\
--build-arg
BASE
=
multiarch/alpine:armhf-v3.10
docker tag
${
NAME
}
:v0.13.1-aarch64
${
NAME
}
:aarch64
docker tag
${
NAME
}
:v0.13.1-armhf
${
NAME
}
:armhf
docker build
.
\
-f
Dockerfile.trunk
\
--pull
\
-t
${
NAME
}
:trunk
\
--build-arg
BASE
=
alpine:3.13
docker build
.
\
-f
Dockerfile.trunk
\
--pull
\
-t
${
NAME
}
:trunk-aarch64
\
--build-arg
BASE
=
multiarch/alpine:aarch64-v3.13
docker build
.
\
-f
Dockerfile.trunk
\
--pull
\
-t
${
NAME
}
:trunk-armhf
\
--build-arg
BASE
=
multiarch/alpine:armhf-v3.13
docker push
\
${
NAME
}
:v0.13.1
\
${
NAME
}
:v0.13.1-aarch64
\
${
NAME
}
:v0.13.1-armhf
\
${
NAME
}
:aarch64
\
${
NAME
}
:armhf
\
${
NAME
}
:trunk
\
${
NAME
}
:trunk-aarch64
\
${
NAME
}
:trunk-armhf
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment