diff --git a/6.0.1/Dockerfile b/6.0.1/Dockerfile index eaeb14a9f1224f4009ad05adfbc84ddad0872b41..a712ba5baa4344abca7864b75d80a7612298cddc 100644 --- a/6.0.1/Dockerfile +++ b/6.0.1/Dockerfile @@ -1,32 +1,47 @@ -FROM registry.access.redhat.com/ubi8-minimal - -ENV KEYCLOAK_VERSION 7.0.1 -ENV JDBC_POSTGRES_VERSION 42.2.5 -ENV JDBC_MYSQL_VERSION 5.1.46 -ENV JDBC_MARIADB_VERSION 2.2.3 -ENV JDBC_MSSQL_VERSION 7.4.1.jre8 - -ENV LAUNCH_JBOSS_IN_BACKGROUND 1 -ENV PROXY_ADDRESS_FORWARDING false -ENV JBOSS_HOME /opt/jboss/keycloak -ENV LANG en_US.UTF-8 +ARG BASE_REGISTRY=registry.access.redhat.com +ARG BASE_IMAGE=ubi7/ubi +ARG BASE_TAG=7.7 + +FROM nexus-docker.52.61.140.4.nip.io/builder-opensource/keycloak:6.0.1 as builder + +FROM ${BASE_REGISTRY}/${BASE_IMAGE}:${BASE_TAG} + +ENV KEYCLOAK_VERSION=6.0.1 \ + JDBC_POSTGRES_VERSION=42.2.5 \ + JDBC_MYSQL_VERSION=5.1.46 \ + JDBC_MARIADB_VERSION=2.2.3 \ + LAUNCH_JBOSS_IN_BACKGROUND=1 \ + PROXY_ADDRESS_FORWARDING=false \ + JBOSS_HOME=/opt/jboss/keycloak \ + LANG=en_US.UTF-8 \ + KEYCLOAK_USER_NAME=jboss \ + KEYCLOAK_USER_ID=1001 \ + KEYCLOAK_HOME=/opt/jboss ARG GIT_REPO ARG GIT_BRANCH ARG KEYCLOAK_DIST=https://downloads.jboss.org/keycloak/$KEYCLOAK_VERSION/keycloak-$KEYCLOAK_VERSION.tar.gz -USER root +# Copy binaries +COPY --from=builder /opt/jboss /opt/jboss + +#ADD tools /opt/jboss/tools +#RUN /opt/jboss/tools/build-keycloak.sh -RUN microdnf update -y && microdnf install -y gzip hostname java-11-openjdk-headless openssl tar which && microdnf clean all +# Create the user, fix file system ownership +RUN useradd -M -s /usr/sbin/nologin --uid ${KEYCLOAK_USER_ID} --user-group ${KEYCLOAK_USER_NAME} && \ + chown -R ${KEYCLOAK_USER_NAME}:${KEYCLOAK_USER_NAME} ${KEYCLOAK_HOME} && \ + chmod -R o-w /opt/jboss/keycloak -ADD tools /opt/jboss/tools -RUN /opt/jboss/tools/build-keycloak.sh +# Install dependencies +RUN yum install -y --disableplugin=subsciption-manager --nogpgcheck java-1.8.0-openjdk && \ + yum clean all -USER 1000 +USER ${KEYCLOAK_USER_ID} EXPOSE 8080 EXPOSE 8443 ENTRYPOINT [ "/opt/jboss/tools/docker-entrypoint.sh" ] -CMD ["-b", "0.0.0.0"] \ No newline at end of file +CMD ["-b", "0.0.0.0"] diff --git a/6.0.1/Dockerfile-deprecated b/6.0.1/Dockerfile-deprecated deleted file mode 100644 index 9a23080086945502ec2e18d7aa852f00bb51d744..0000000000000000000000000000000000000000 --- a/6.0.1/Dockerfile-deprecated +++ /dev/null @@ -1,3 +0,0 @@ -FROM nexus-docker.52.61.140.4.nip.io/dsop/keycloak:latest - -MAINTAINER maintainer@dsop.io diff --git a/6.0.1/Jenkinsfile b/6.0.1/Jenkinsfile deleted file mode 100644 index 4421dda457ba6d7eff790199cecbbde5489b6884..0000000000000000000000000000000000000000 --- a/6.0.1/Jenkinsfile +++ /dev/null @@ -1,99 +0,0 @@ -@Library('DSOP@devel')_ - -pipeline { - agent { label 'master' } - - environment { - NEXUS_SERVER = credentials('NexusServerAddress') - OSCAP_NODE = credentials('OpenSCAPNode') - DOCKER_TAG = "${PROJECT}-${VERSION}" - NEXUS_URL = "nexus-docker.52.61.140.4.nip.io" - REPO_NAME = "${NAMESPACE}/${DOCKER_TAG}" - } //environment - - parameters { - choice(choices : ['All','OpenSCAP','Twistlock','Anchore'], - description: "Which tools to run?", - name: 'toolsToRun') - - choice(choices : ['Test','Production'], - description: "Is this a test run or for actual production?", - name: 'testOrProduction') - - string(defaultValue: "latest", - name: 'IMAGE_TAG', - description: "Image tag to be used by Docker, Nexus and all Scanning tools") - - string(defaultValue: "keycloak", - name: 'PROJECT', - description: "Project name to use under Vendor") - - string(defaultValue: "v6.0.1", - name: 'VERSION', - description: "Image tag to be used by Docker, Nexus and all Scanning tools") - - string(defaultValue: "ubi7", - name: 'BASE', - description: "Base image upon which to build container") - - string(defaultValue: "keycloak", - name: 'BRANCH', - description: "DCCSCR branch to clone and build") - - string(defaultValue: "dsop", - name: 'NAMESPACE', - description: "Which nexus namespace to push to") - - choice(name: 'VENDOR_PRODUCT', - choices: ['opensource', 'cyberfactory', 'dsop', - 'gitlab', 'anchore', 'redhat', - 'twistlock'], - description: 'What vendor is being scanned') - } // parameters - - stages { - stage('Build') { - steps { - script { - log.info('Building Container from Source') - try { - buildPlugin vendor: "${VENDOR_PRODUCT}", project: "${PROJECT}", version: "${VERSION}", branch: "${BRANCH}" - } catch (Exception e) { - log.error("${e}") - } // try/catch - } // script - } // steps - } // stage - - stage('Functional Test - ToDo') { - steps { - script { - log.info('ToDo') - } // script - } // steps - } // stage - - - stage('Push to Registry') { - steps { - script { - log.info('Pushing container to registry') - try { - pushPlugin() - } catch (Exception e) { - log.error("${e}") - } // try/catch - } // script - } // steps - } // stage - - stage('Call Image Scanning Pipeline') { - steps { - script { - log.info('Calling scanning pipeline') - scanningIntegrationPlugin() - } - } // steps - } // stage - } //stages -} //pipeline diff --git a/6.0.1/README.md b/6.0.1/README.md new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/6.0.1/scripts/prebuild.sh b/6.0.1/scripts/prebuild.sh new file mode 100644 index 0000000000000000000000000000000000000000..1116ca6107dd5bed6048e251b4ba7e82341cc4b8 --- /dev/null +++ b/6.0.1/scripts/prebuild.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +VERSION=6.0.1 +IMAGE_NAME=opensource/keycloak +IMAGE_DIGEST=sha256:3a6718ca4ee02c3a9e9f4a4982d40f04f3bbc2f4ee9b936459519ea125ab87a9 +IMAGE_ID=3a6718ca4ee02c3a9e9f4a4982d40f04f3bbc2f4ee9b936459519ea125ab87a9 +NEXUS_REGISTRY=nexus-docker.52.61.140.4.nip.io +NEXUS_TAG=${NEXUS_REGISTRY}/builder-${IMAGE_NAME}:${VERSION} + +set -e + +# pull builder image; no GPG/sha checks are necessary because an explicit content hash (i.e. image digest) is used +sudo podman pull docker.bintray.io/${IMAGE_NAME}@${IMAGE_DIGEST} + +# re-tag image for Nexus Registry +sudo podman tag ${IMAGE_ID} ${NEXUS_TAG} + +# push newly tagged image +sudo podman push ${NEXUS_TAG} + +# clean up, including all tags for image +sudo podman rmi --force ${IMAGE_ID} + +# Image digest and ID can be retrieved by doing a `podman inspect` once you have pulled the Docker image by its tag on your local machine