From b4ff2c1d5195f9388c17d009ef59b179330dba0a Mon Sep 17 00:00:00 2001 From: Sindre Stephansen Date: Tue, 7 Jun 2022 13:11:59 +0200 Subject: [PATCH] Generate quarkus project during download, and add tests Some dependencies are not catched by the quarkus bom, so it's necessary to generate and build a project to cache them. The new automatic test disables all external networking and tries to generate and build the quarkus project. --- docker-compose.yml | 11 ++++-- repo/reposilite.cdn | 1 + sync/Dockerfile | 4 +- sync/resolve-deps-from-poms.sh | 68 ++++++++++++++++++++++++++++------ 4 files changed, 66 insertions(+), 18 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 3c0cd4f..f4d4ee7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,11 +9,11 @@ services: volumes: - ./repo/reposilite.cdn:/reposilite.cdn - ./data:/app/data - ports: - - "9001:80" + # Network added in docker-compose.override.yml networks: - - default - nonet + ports: + - "9001:80" restart: unless-stopped maven-sync-job: build: ./sync @@ -23,7 +23,10 @@ services: - ./poms:/poms networks: - nonet + extra_hosts: + - "repo.maven.apache.org:0.0.0.0" + - "registry.quarkus.io:0.0.0.0" networks: nonet: - internal: true \ No newline at end of file + internal: true diff --git a/repo/reposilite.cdn b/repo/reposilite.cdn index 4ae162e..406fe0d 100644 --- a/repo/reposilite.cdn +++ b/repo/reposilite.cdn @@ -35,6 +35,7 @@ repositories { https://repo1.maven.org/maven2 --store --connectTimeout=3 --readTimeout=15 https://oss.sonatype.org/content/repositories/snapshots --store --connectTimeout=3 --readTimeout=15 https://packages.confluent.io/maven/ --store --connectTimeout=3 --readTimeout=15 + https://registry.quarkus.io/maven --store --connectTimeout=3 --readTimeout=15 https://plugins.gradle.org/m2/ --store --connectTimeout=3 --readTimeout=15 ] } diff --git a/sync/Dockerfile b/sync/Dockerfile index fe9f09c..59d29c7 100644 --- a/sync/Dockerfile +++ b/sync/Dockerfile @@ -1,4 +1,4 @@ -FROM maven:alpine +FROM maven:3-openjdk-11 RUN mkdir /poms && mkdir -p /root/.m2 @@ -7,4 +7,4 @@ COPY settings.xml /root/.m2/settings.xml VOLUME [ "/poms" ] -ENTRYPOINT [ "/resolve-deps-from-poms.sh" ] +CMD [ "/resolve-deps-from-poms.sh" ] diff --git a/sync/resolve-deps-from-poms.sh b/sync/resolve-deps-from-poms.sh index 0948c6e..ab16839 100755 --- a/sync/resolve-deps-from-poms.sh +++ b/sync/resolve-deps-from-poms.sh @@ -1,4 +1,12 @@ -#!/bin/sh +#!/bin/bash + +usage () +{ + echo "USAGE: $0 [FLAGS]" + echo "Flags:" + echo " -t: Skip download of dependencies. Used for testing that a previous download succeded." + echo " -h: Print this message" +} is_reposilite_up () { @@ -6,22 +14,58 @@ is_reposilite_up () return $? } -i=0 -until is_reposilite_up; do - i=$((i+1)) +wait_for_reposilite () +{ + i=0 + until is_reposilite_up; do + i=$((i+1)) + + if [ $i -gt 30 ]; then + return $i + fi - if [ $i -gt 30 ]; then - echo "Could not connect to reposilite. Aborting." - exit 1 - fi + sleep 1 + done + + return $i +} + +should_download=1 - sleep 1 +while [ $# -ne 0 ]; do + case "$1" in + -t) should_download=0 ;; + -h) usage; exit 0 ;; + esac + shift done +handle_parameters +wait_for_reposilite + if [ $? -lt 30 ]; then - for pom in /poms/*; do - mvn -P central -Dos.detected.classifier=linux-x86_64 -f $pom dependency:go-offline; - done + if [ $should_download -eq 1 ]; then + for pom in /poms/*; do + mvn -P central \ + -Dos.detected.classifier=linux-x86_64 \ + -f $pom dependency:go-offline + done + fi + + echo "Generating quarkus project" + mvn -P central \ + io.quarkus.platform:quarkus-maven-plugin::create \ + -DprojectGroupId=com.example \ + -DprojectArtifactId=quarkus-test + + RET=$? + if [ $RET -eq 0 ]; then + cd quarkus-test + echo "Building quarkus project" + mvn package + RET=$? + fi + exit $RET else echo "Can't connect to repository" exit 255