diff --git a/Dockerfile b/Dockerfile index 896f02e..d00020d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,18 +18,13 @@ RUN \ ENV ADMIN_TOKEN='' ENV RIDE2GO_TOKEN='' ENV SECRET_KEY='' -ENV METRICS_USER='' -ENV METRICS_PASSWORD='' + +ENV MODULE_NAME=amarillo.main EXPOSE 80 -ARG PACKAGE_REGISTRY_URL -ARG PLUGINS - COPY requirements.txt /app/requirements.txt RUN pip install --no-cache-dir --upgrade -r /app/requirements.txt -RUN --mount=type=secret,id=AMARILLO_REGISTRY_CREDENTIALS \ - pip install --no-cache-dir --upgrade --extra-index-url https://$(cat /run/secrets/AMARILLO_REGISTRY_CREDENTIALS)@${PACKAGE_REGISTRY_URL} ${PLUGINS} COPY ./amarillo /app/amarillo COPY ./amarillo/plugins /app/amarillo/plugins diff --git a/Jenkinsfile b/Jenkinsfile index 1be1afb..18e94e6 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,16 +1,17 @@ pipeline { - agent any + agent { label 'builtin' } environment { GITEA_CREDS = credentials('AMARILLO-JENKINS-GITEA-USER') TWINE_REPO_URL = "https://git.gerhardt.io/api/packages/amarillo/pypi" PLUGINS_REPO_URL = "git.gerhardt.io/api/packages/amarillo/pypi/simple" DOCKER_REGISTRY_URL = 'https://git.gerhardt.io' + DERIVED_DOCKERFILE = 'standard.Dockerfile' OWNER = 'amarillo' + BASE_IMAGE_NAME = 'amarillo-base' IMAGE_NAME = 'amarillo' AMARILLO_DISTRIBUTION = '0.1' - TAG = "${AMARILLO_DISTRIBUTION}.${BUILD_NUMBER}" - PLUGINS = 'amarillo-metrics amarillo-enhancer amarillo-grfs-exporter' - DEPLOY_WEBHOOK_URL = 'http://amarillo.mfdz.de:8888/mitanand' + TAG = "${AMARILLO_DISTRIBUTION}.${BUILD_NUMBER}${env.BRANCH_NAME == 'main' ? '' : '-dev'}" + DEPLOY_WEBHOOK_URL = "${env.BRANCH_NAME == 'main' ? 'http://amarillo.mfdz.de:8888/mitanand' : 'http://amarillo.mfdz.de:8888/dev'}" DEPLOY_SECRET = credentials('AMARILLO-JENKINS-DEPLOY-SECRET') } stages { @@ -41,22 +42,53 @@ pipeline { sh 'python3 -m twine upload --skip-existing --verbose --repository-url $TWINE_REPO_URL --username $GITEA_CREDS_USR --password $GITEA_CREDS_PSW ./dist/*' } } - stage('Build docker image') { + stage('Build base docker image') { when { - branch 'main' + anyOf { branch 'main'; branch 'dev' } } steps { echo 'Building image' script { - docker.build("${OWNER}/${IMAGE_NAME}:${TAG}", - //--no-cache to make sure plugins are updated - "--no-cache --build-arg='PACKAGE_REGISTRY_URL=${PLUGINS_REPO_URL}' --build-arg='PLUGINS=${PLUGINS}' --secret id=AMARILLO_REGISTRY_CREDENTIALS,env=GITEA_CREDS .") + docker.build("${OWNER}/${BASE_IMAGE_NAME}:${TAG}") + // "--no-cache --build-arg='PACKAGE_REGISTRY_URL=${PLUGINS_REPO_URL}' --build-arg='PLUGINS=${PLUGINS}' --secret id=AMARILLO_REGISTRY_CREDENTIALS,env=GITEA_CREDS .") } } } - stage('Push image to container registry') { + stage('Push base image to container registry') { when { - branch 'main' + anyOf { branch 'main'; branch 'dev' } + } + steps { + echo 'Pushing image to registry' + script { + docker.withRegistry(DOCKER_REGISTRY_URL, 'AMARILLO-JENKINS-GITEA-USER'){ + def image = docker.image("${OWNER}/${BASE_IMAGE_NAME}:${TAG}") + image.push() + image.push('latest') + } + } + } + } + stage('Build derived docker image') { + when { + anyOf { branch 'main'; branch 'dev' } + } + steps { + echo 'Building image' + script { + docker.withRegistry(DOCKER_REGISTRY_URL, 'AMARILLO-JENKINS-GITEA-USER'){ + docker.build("${OWNER}/${IMAGE_NAME}:${TAG}", + //--no-cache to make sure plugins are updated + "-f ${DERIVED_DOCKERFILE} --no-cache --build-arg='PACKAGE_REGISTRY_URL=${PLUGINS_REPO_URL}' --secret id=AMARILLO_REGISTRY_CREDENTIALS,env=GITEA_CREDS .") + // "--no-cache --build-arg='PACKAGE_REGISTRY_URL=${PLUGINS_REPO_URL}' --build-arg='PLUGINS=${PLUGINS}' --secret id=AMARILLO_REGISTRY_CREDENTIALS,env=GITEA_CREDS .") + } + + } + } + } + stage('Push derived image to container registry') { + when { + anyOf { branch 'main'; branch 'dev' } } steps { echo 'Pushing image to registry' @@ -71,7 +103,7 @@ pipeline { } stage('Notify CD script') { when { - branch 'main' + anyOf { branch 'main'; branch 'dev' } } steps { echo 'Triggering deploy webhook' diff --git a/pyproject.toml b/pyproject.toml index 5ddba18..14dd08f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "amarillo" -version = "0.0.15a4" +version = "0.0.16a1" description = "Aggregates and enhances carpooling-offers and publishes them as GTFS(-RT)" readme = "README.md" license = {file = "LICENSE"} diff --git a/standard.Dockerfile b/standard.Dockerfile new file mode 100644 index 0000000..a6e9041 --- /dev/null +++ b/standard.Dockerfile @@ -0,0 +1,15 @@ +FROM amarillo/amarillo-base + +ARG PLUGINS=\ +"amarillo-metrics "\ +"amarillo-gtfs-exporter " + +ARG PACKAGE_REGISTRY_URL + +ENV METRICS_USER='' +ENV METRICS_PASSWORD='' + +# RUN pip install $PLUGINS + +RUN --mount=type=secret,id=AMARILLO_REGISTRY_CREDENTIALS \ +pip install --no-cache-dir --upgrade --extra-index-url https://$(cat /run/secrets/AMARILLO_REGISTRY_CREDENTIALS)@${PACKAGE_REGISTRY_URL} ${PLUGINS}