Skip to content

Commit 48df0ee

Browse files
committed
Buildx improvements
1 parent fbc453b commit 48df0ee

File tree

7 files changed

+99
-98
lines changed

7 files changed

+99
-98
lines changed

.dockerignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Ignore everything
2+
*
3+
4+
# Only allow the following for docker build:
5+
!backend/
6+
!docker/
7+
!scripts/

Jenkinsfile

Lines changed: 9 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
pipeline {
22
agent {
3-
label 'docker-multiarch'
3+
label 'taurus'
44
}
55
options {
66
buildDiscarder(logRotator(numToKeepStr: '5'))
@@ -71,18 +71,16 @@ pipeline {
7171
steps {
7272
withCredentials([usernamePassword(credentialsId: 'oss-index-token', passwordVariable: 'NANCY_TOKEN', usernameVariable: 'NANCY_USER')]) {
7373
sh '''docker build --pull --no-cache --squash --compress \\
74-
-t ${IMAGE}:ci-${BUILD_NUMBER} \\
74+
-t "${IMAGE}:${BRANCH_LOWER}-ci-${BUILD_NUMBER}" \\
7575
-f docker/Dockerfile \\
76-
--build-arg TARGETPLATFORM=linux/amd64 \\
77-
--build-arg BUILDPLATFORM=linux/amd64 \\
76+
--build-arg BUILD_COMMIT="${BUILD_COMMIT:-dev}" \\
7877
--build-arg BUILD_DATE="$(date '+%Y-%m-%d %T %Z')" \\
7978
--build-arg BUILD_VERSION="${BUILD_VERSION}" \\
80-
--build-arg BUILD_COMMIT="${BUILD_COMMIT}" \\
81-
--build-arg SENTRY_DSN="${SENTRY_DSN:-}" \\
82-
--build-arg GOPROXY="${GOPROXY:-}" \\
8379
--build-arg GOPRIVATE="${GOPRIVATE:-}" \\
84-
--build-arg NANCY_USER="${NANCY_USER}" \\
85-
--build-arg NANCY_TOKEN="${NANCY_TOKEN}" \\
80+
--build-arg GOPROXY="${GOPROXY:-}" \\
81+
--build-arg NANCY_TOKEN="${NANCY_TOKEN:-}" \\
82+
--build-arg NANCY_USER="${NANCY_USER:-}" \\
83+
--build-arg SENTRY_DSN="${SENTRY_DSN:-}" \\
8684
.
8785
'''
8886
}
@@ -151,9 +149,9 @@ pipeline {
151149
withCredentials([string(credentialsId: 'npm-sentry-dsn', variable: 'SENTRY_DSN')]) {
152150
withCredentials([usernamePassword(credentialsId: 'jc21-dockerhub', passwordVariable: 'dpass', usernameVariable: 'duser')]) {
153151
// Docker Login
154-
sh "docker login -u '${duser}' -p '${dpass}'"
152+
sh 'docker login -u "${duser}" -p "${dpass}"'
155153
// Buildx with push from cache
156-
sh "./scripts/buildx --push ${BUILDX_PUSH_TAGS}"
154+
sh './scripts/buildx --push ${BUILDX_PUSH_TAGS}'
157155
// sh './scripts/buildx -o type=local,dest=docker-build'
158156
}
159157
}
@@ -206,34 +204,6 @@ pipeline {
206204
}
207205
}
208206
}
209-
/*
210-
stage('Artifacts') {
211-
when {
212-
allOf {
213-
not {
214-
equals expected: 'UNSTABLE', actual: currentBuild.result
215-
}
216-
}
217-
}
218-
steps {
219-
sh 'mkdir -p artifacts'
220-
// Multiarch builds
221-
dir(path: 'docker-build/linux_amd64/app') {
222-
sh 'zip -qr ../../../artifacts/linux_amd64.zip *'
223-
}
224-
dir(path: 'docker-build/linux_arm64/app') {
225-
sh 'zip -qr ../../../artifacts/linux_arm64.zip *'
226-
}
227-
dir(path: 'docker-build/linux_arm_v7/app') {
228-
sh 'zip -qr ../../../artifacts/linux_arm_v7.zip *'
229-
}
230-
// Archive them
231-
dir(path: 'artifacts') {
232-
archiveArtifacts artifacts: '** /*'
233-
}
234-
}
235-
}
236-
*/
237207
}
238208
post {
239209
always {

backend/go.sum

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -69,18 +69,6 @@ github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/
6969
github.com/iris-contrib/jade v1.1.3/go.mod h1:H/geBymxJhShH5kecoiOCSssPX7QWYH7UaeZTSWddIk=
7070
github.com/iris-contrib/pongo2 v0.0.1/go.mod h1:Ssh+00+3GAZqSQb30AvBRNxBx7rf0GqwkjqxNd0u65g=
7171
github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw=
72-
github.com/jc21/jsref v0.0.0-20210608013137-43b07c7d31bd h1:Ag/L5Yc9BeBbi4i8bNAev8Ejtu/jq8Qk/xK+HDHnWNc=
73-
github.com/jc21/jsref v0.0.0-20210608013137-43b07c7d31bd/go.mod h1:yIq2t51OJgVsdRlPY68NAnyVdBH0kYXxDTFtUxOap80=
74-
github.com/jc21/jsref v0.0.0-20210608014024-8bda7cb41eef h1:1jF5nv8PmgH2txfWGmsPium0Hj9PEnGkb96tkZ+4uDU=
75-
github.com/jc21/jsref v0.0.0-20210608014024-8bda7cb41eef/go.mod h1:yIq2t51OJgVsdRlPY68NAnyVdBH0kYXxDTFtUxOap80=
76-
github.com/jc21/jsref v0.0.0-20210608014914-2edd4dea9791 h1:s0hsMFnTiGGytgwDbHo20OvmJj2/+FFMZvLpRNexnvk=
77-
github.com/jc21/jsref v0.0.0-20210608014914-2edd4dea9791/go.mod h1:yIq2t51OJgVsdRlPY68NAnyVdBH0kYXxDTFtUxOap80=
78-
github.com/jc21/jsref v0.0.0-20210608023003-123d7fb98643 h1:ZpDTP4ow7hZMx0ORi06jnLP4ZDGQVa6SayH+5rWWlYg=
79-
github.com/jc21/jsref v0.0.0-20210608023003-123d7fb98643/go.mod h1:yIq2t51OJgVsdRlPY68NAnyVdBH0kYXxDTFtUxOap80=
80-
github.com/jc21/jsref v0.0.0-20210608023437-810a57e5f736 h1:1nZYRLsHvECy8rbOLkqRBK45Y6zKQ5ZRuGPMQalPWVc=
81-
github.com/jc21/jsref v0.0.0-20210608023437-810a57e5f736/go.mod h1:yIq2t51OJgVsdRlPY68NAnyVdBH0kYXxDTFtUxOap80=
82-
github.com/jc21/jsref v0.0.0-20210608024103-9eaa65f76123 h1:pb24Ybg78OdqO4GHh0xcwlVPWKlDYX/ZVnf+wq8D9To=
83-
github.com/jc21/jsref v0.0.0-20210608024103-9eaa65f76123/go.mod h1:yIq2t51OJgVsdRlPY68NAnyVdBH0kYXxDTFtUxOap80=
8472
github.com/jc21/jsref v0.0.0-20210608024405-a97debfc4760 h1:7wxq2DIgtO36KLrFz1RldysO0WVvcYsD49G9tyAs01k=
8573
github.com/jc21/jsref v0.0.0-20210608024405-a97debfc4760/go.mod h1:yIq2t51OJgVsdRlPY68NAnyVdBH0kYXxDTFtUxOap80=
8674
github.com/jmoiron/sqlx v1.3.3 h1:j82X0bf7oQ27XeqxicSZsTU5suPwKElg3oyxNn43iTk=

docker/Dockerfile

Lines changed: 29 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -11,59 +11,40 @@ FROM jc21/nginx-full:github-acme.sh-golang AS gobuild
1111

1212
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
1313

14-
ARG GOPROXY
14+
ARG BUILD_COMMIT
15+
ARG BUILD_VERSION
1516
ARG GOPRIVATE
16-
17-
ENV GOPROXY=$GOPROXY \
18-
GOPRIVATE=$GOPRIVATE \
19-
GO111MODULE=on \
20-
CGO_ENABLED=1
21-
22-
# Nancy
23-
RUN go get github.com/sonatype-nexus-community/nancy
24-
RUN mkdir -p /workspace
25-
WORKDIR /workspace
26-
COPY backend/go.mod backend/go.sum backend/.nancy-ignore ./
27-
RUN go mod download
28-
17+
ARG GOPROXY
2918
ARG NANCY_TOKEN
3019
ARG NANCY_USER
31-
RUN go list -json -m all | nancy sleuth --quiet --username "${NANCY_USER}" --token "${NANCY_TOKEN}"
32-
RUN rm -rf /workspace
20+
ARG SENTRY_DSN
21+
ARG SKIP_TESTS
22+
23+
ENV BUILD_COMMIT="${BUILD_COMMIT:-dev}" \
24+
BUILD_VERSION="${BUILD_VERSION:-0.0.0}" \
25+
CGO_ENABLED=1 \
26+
GO111MODULE=on \
27+
GOPRIVATE="${GOPRIVATE:-}" \
28+
GOPROXY="${GOPROXY:-}" \
29+
NANCY_TOKEN="${NANCY_TOKEN:-}" \
30+
NANCY_USER="${NANCY_USER:-}" \
31+
SENTRY_DSN="${SENTRY_DSN:-}" \
32+
SKIP_TESTS="${SKIP_TESTS:-}"
3333

3434
# Code
35+
RUN mkdir -p /app
3536
WORKDIR /app
3637
COPY . .
37-
WORKDIR /app/backend
38-
39-
# Build
40-
RUN go mod download
41-
RUN echo "Testing and compiling project" \
42-
&& [ -z "$(go tool fix -diff ./internal)" ]
43-
44-
# Disabled as CI has issues at the moment
45-
#RUN if [ "$TARGETPLATFORM" == "" ] || [ "$TARGETPLATFORM" == "linux/amd64" ]; then golangci-lint -v run ./...; fi
46-
47-
RUN richgo test -cover -v ./internal/...
48-
RUN richgo test -bench=. ./internal/...
49-
50-
ARG BUILD_VERSION
51-
ARG BUILD_COMMIT
52-
ARG SENTRY_DSN
53-
RUN go build \
54-
-ldflags "-w -s -X main.commit=${BUILD_COMMIT} -X main.version=${BUILD_VERSION} -X main.sentryDSN=${SENTRY_DSN:-}" \
55-
-o ../dist/bin/server \
56-
-v ./cmd/server
38+
RUN ./scripts/docker-gobuild
5739

5840
#===============
5941
# Final image
6042
#===============
6143

62-
FROM jc21/nginx-full:github-acme.sh
44+
FROM jc21/nginx-full:github-acme.sh AS final
6345

6446
COPY --from=gobuild /app/dist /app
6547
COPY --from=gobuild /app/backend/migrations /app/migrations
66-
# COPY frontend/build /app/frontend
6748

6849
ENV SUPPRESS_NO_CONFIG_WARNING=1
6950
ENV S6_FIX_ATTRS_HIDDEN=1
@@ -83,25 +64,29 @@ RUN rm -rf /etc/services.d/frontend /etc/nginx/conf.d/dev.conf
8364
VOLUME /data
8465

8566
CMD [ "/init" ]
67+
# TODO: remove healthchecks
8668
HEALTHCHECK --interval=15s --timeout=3s CMD curl -f http://127.0.0.1:81/api || exit 1
8769

8870
ARG NOW
8971
ARG BUILD_VERSION
9072
ARG BUILD_COMMIT
9173
ARG BUILD_DATE
92-
ENV NPM_BUILD_VERSION="${BUILD_VERSION}" NPM_BUILD_COMMIT="${BUILD_COMMIT}" NPM_BUILD_DATE="${BUILD_DATE}"
74+
9375
ENV DATABASE_URL="sqlite:////data/nginxproxymanager.db" \
9476
DBMATE_MIGRATIONS_DIR="/app/migrations" \
77+
DBMATE_NO_DUMP_SCHEMA="1" \
9578
DBMATE_SCHEMA_FILE="/data/schema.sql" \
96-
DBMATE_NO_DUMP_SCHEMA="1"
79+
NPM_BUILD_VERSION="${BUILD_VERSION:-0.0.0}" \
80+
NPM_BUILD_COMMIT="${BUILD_COMMIT:-dev}" \
81+
NPM_BUILD_DATE="${BUILD_DATE:-}"
9782

9883
LABEL org.label-schema.schema-version="1.0" \
9984
org.label-schema.license="MIT" \
10085
org.label-schema.name="nginx-proxy-manager" \
10186
org.label-schema.description="Nginx Host Management and Proxy" \
102-
org.label-schema.build-date="$NOW" \
103-
org.label-schema.version="$BUILD_VERSION" \
87+
org.label-schema.build-date="${NOW:-}" \
88+
org.label-schema.version="${BUILD_VERSION:-0.0.0}" \
10489
org.label-schema.url="https://nginxproxymanager.com" \
10590
org.label-schema.vcs-url="https://github.com/jc21/nginx-proxy-manager.git" \
106-
org.label-schema.vcs-ref="$BUILD_COMMIT" \
107-
org.label-schema.cmd="docker run --rm -ti jc21/nginx-proxy-manager:$BUILD_VERSION"
91+
org.label-schema.vcs-ref="${BUILD_COMMIT:-dev}" \
92+
org.label-schema.cmd="docker run --rm -ti jc21/nginx-proxy-manager:${BUILD_VERSION:-0.0.0}"

docker/docker-compose.ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ version: "3"
33
services:
44

55
fullstack:
6-
image: ${IMAGE}:ci-${BUILD_NUMBER}
6+
image: ${IMAGE}:${BRANCH_LOWER}-ci-${BUILD_NUMBER}
77
environment:
88
- LOG_LEVEL=debug
99
volumes:

scripts/buildx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,13 @@ docker buildx create --name "${BUILDX_NAME:-npm}" || echo
1717
docker buildx use "${BUILDX_NAME:-npm}"
1818

1919
docker buildx build \
20-
--build-arg BUILD_VERSION="${BUILD_VERSION:-dev}" \
2120
--build-arg BUILD_COMMIT="${BUILD_COMMIT:-notset}" \
2221
--build-arg BUILD_DATE="$(date '+%Y-%m-%d %T %Z')" \
22+
--build-arg BUILD_VERSION="${BUILD_VERSION:-dev}" \
2323
--build-arg NOW="$(date --rfc-3339=s)" \
24-
--build-arg GOPROXY="${GOPROXY:-}" \
24+
--build-arg SKIP_TESTS=1 \
2525
--build-arg GOPRIVATE="${GOPRIVATE:-}" \
26+
--build-arg GOPROXY="${GOPROXY:-}" \
2627
--build-arg SENTRY_DSN="${SENTRY_DSN:-}" \
2728
--platform linux/amd64,linux/arm64,linux/arm/7 \
2829
--progress plain \

scripts/docker-gobuild

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
#!/bin/bash -e
2+
3+
# This script is run as part of the Dockerfile
4+
# It will conduct golang testing and vuln lookups
5+
# unless SKIP_TESTS=1 is defined
6+
7+
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8+
. "$DIR/.common.sh"
9+
10+
echo -e "${BLUE}${CYAN}docker-gobuild${RESET}"
11+
echo -e " ${YELLOW}BUILD_COMMIT: ${BUILD_COMMIT:-not set}${RESET}"
12+
echo -e " ${YELLOW}BUILD_VERSION: ${BUILD_VERSION:-not set}${RESET}"
13+
echo -e " ${YELLOW}CGO_ENABLED: ${CGO_ENABLED:-not set}${RESET}"
14+
echo -e " ${YELLOW}GOPROXY: ${GOPROXY:-not set}${RESET}"
15+
echo -e " ${YELLOW}GOPRIVATE: ${GOPRIVATE:-not set}${RESET}"
16+
echo -e " ${YELLOW}GO111MODULE: ${GO111MODULE:-not set}${RESET}"
17+
echo -e " ${YELLOW}SKIP_TESTS: ${SKIP_TESTS:-not set}${RESET}"
18+
19+
echo -e "${BLUE}${CYAN}Downloading backend go modules${RESET}"
20+
cd /app/backend
21+
go mod download
22+
23+
# Testing and vulnerability lookup
24+
if ! [ "${SKIP_TESTS:-}" = "1" ]; then
25+
mkdir -p /workspace
26+
echo -e "${BLUE}${CYAN}Nancy setup${RESET}"
27+
cd /workspace
28+
go get github.com/sonatype-nexus-community/nancy
29+
cp /app/backend/go.mod /app/backend/go.sum /app/backend/.nancy-ignore .
30+
go mod download
31+
32+
echo -e "${BLUE}${CYAN}Nancy testing${RESET}"
33+
go list -json -m all | nancy sleuth --quiet --username "${NANCY_USER}" --token "${NANCY_TOKEN:-}"
34+
rm -rf /workspace
35+
36+
echo -e "${BLUE}${CYAN}Testing backend code${RESET}"
37+
cd /app/backend
38+
[ -z "$(go tool fix -diff ./internal)" ]
39+
richgo test -cover -v ./internal/...
40+
richgo test -bench=. ./internal/...
41+
golangci-lint -v run ./...
42+
fi
43+
44+
echo -e "${BLUE}${CYAN}Building backend binary${RESET}"
45+
go build \
46+
-ldflags "-w -s -X main.commit=${BUILD_COMMIT} -X main.version=${BUILD_VERSION} -X main.sentryDSN=${SENTRY_DSN:-}" \
47+
-o ../dist/bin/server \
48+
-v ./cmd/server
49+
50+
echo -e "${BLUE}${CYAN}docker-gobuild ${GREEN}completed${RESET}"

0 commit comments

Comments
 (0)