From cbdc38bfe04e95658d9308b5b5705f440d8508ff Mon Sep 17 00:00:00 2001 From: Iván Ávalos Date: Sat, 9 Mar 2024 23:52:57 -0600 Subject: Add Concourse pipeline and improve Dockerfile --- Dockerfile | 43 +++++++++++++++++++++---------------------- pipeline.yml | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 22 deletions(-) create mode 100644 pipeline.yml diff --git a/Dockerfile b/Dockerfile index 14733c0a1..e73f81f7c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,4 @@ -FROM alpine:3.18 - -ARG GIT_COMMIT=unspecified -LABEL git_commit=$GIT_COMMIT +FROM alpine:3.18 as build_server ######################## # Build Traccar server # @@ -13,7 +10,7 @@ RUN apk add --no-cache --no-progress \ libstdc++ \ openjdk11-jre-headless -WORKDIR /opt/build-server +WORKDIR /build ADD build.gradle ./ ADD gradle ./gradle @@ -23,14 +20,17 @@ ADD src ./src RUN ./gradlew assemble +FROM alpine:3.18 as build_web + #################### # Build Traccar UI # #################### RUN apk add --no-cache --no-progress npm -WORKDIR /opt/build-modern +WORKDIR /build +ADD traccar-web/modern/.env ./ ADD traccar-web/modern/.eslintrc.json ./ ADD traccar-web/modern/.npmrc ./ ADD traccar-web/modern/index.html ./ @@ -40,32 +40,31 @@ ADD traccar-web/modern/vite.config.js ./ ADD traccar-web/modern/public/ ./public ADD traccar-web/modern/src/ ./src -RUN echo "ESLINT_NO_DEV_ERRORS=false" > .env && \ - echo 'VITE_APP_VERSION=$npm_package_version' >> .env && \ - echo 'timeout=60000' > ~/.npmrc && \ +RUN echo 'timeout=60000' > ~/.npmrc && \ npm install && \ npm run build +FROM alpine:3.18 + +ARG GIT_COMMIT=unspecified +LABEL git_commit=$GIT_COMMIT + ################## # Deploy locally # ################## -RUN mkdir -p /opt/traccar && \ - cp -r /opt/build-server/target/* /opt/traccar/ && \ - cp -r /opt/build-modern/build /opt/traccar/modern +RUN apk add --no-cache --no-progress openjdk11-jre-headless -ADD setup/default.xml /opt/traccar/conf/default.xml -ADD setup/traccar.xml /opt/traccar/conf/traccar.xml -ADD schema /opt/traccar/schema -ADD templates /opt/traccar/templates +WORKDIR /opt/traccar -########### -# Cleanup # -########### +COPY --from=build_server /build/target . +COPY --from=build_web /build/build ./modern -RUN rm -r /opt/build-server && \ - rm -r /opt/build-modern +ADD setup/default.xml ./conf/default.xml +ADD setup/traccar.xml ./conf/traccar.xml +ADD schema ./schema +ADD templates ./templates -WORKDIR /opt/traccar +RUN mkdir logs/ data/ media/ CMD ["/usr/bin/java", "-Xms1g", "-Xms1g", "-jar", "tracker-server.jar", "-c", "conf/traccar.xml"] diff --git a/pipeline.yml b/pipeline.yml new file mode 100644 index 000000000..d588f100a --- /dev/null +++ b/pipeline.yml @@ -0,0 +1,49 @@ +resources: + - name: trackermap-server-git + type: git + source: + uri: ((git-repo)) + tag_filter: trackermap-* + fetch_tags: "true" + + - name: docker-image + type: registry-image + icon: docker + source: + repository: ((registry-repo)) + username: ((registry-username)) + password: ((registry-password)) + +jobs: + - name: build-and-publish + plan: + - get: trackermap-server-git + trigger: true + - task: build-docker + privileged: true + config: + platform: linux + image_resource: + type: registry-image + source: + repository: concourse/oci-build-task + tag: latest + inputs: + - name: trackermap-server-git + outputs: + - name: image + run: + path: sh + args: + - -exc + - | + cd trackermap-server-git/ + git describe --tags | sed 's/trackermap-//' > ../image/tag + export BUILD_ARG_GIT_COMMIT=$(git rev-parse HEAD) + cd ../ + export CONTEXT=trackermap-server-git + build + - put: docker-image + params: + image: image/image.tar + additional_tags: image/tag -- cgit v1.2.3