Skip to content

Commit

Permalink
jenkinsfile migration for pr check
Browse files Browse the repository at this point in the history
  • Loading branch information
maknop committed Nov 10, 2023
1 parent 2084576 commit 2e55e2c
Show file tree
Hide file tree
Showing 7 changed files with 178 additions and 137 deletions.
4 changes: 2 additions & 2 deletions Dockerfile.base
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ FROM registry.access.redhat.com/ubi8/go-toolset:1.19.13-2.1697656138 as builder
USER 0
RUN dnf install -y openssh-clients git make which jq python3

COPY build/pr_check_inner.sh .
RUN chmod 775 pr_check_inner.sh
COPY ci/minikube_e2e_tests_inner.sh .
RUN chmod 775 minikube_e2e_tests_inner.sh

WORKDIR /workspace

Expand Down
84 changes: 81 additions & 3 deletions Jenkinsfile
Original file line number Diff line number Diff line change
@@ -1,14 +1,92 @@
def secrets = [
[path: params.VAULT_PATH_QUAY_PUSH, engineVersion: 1, secretValues: [
[envVar: 'QUAY_USER', vaultKey: 'user'],
[envVar: 'QUAY_TOKEN', vaultKey: 'token']]],
[path: params.VAULT_PATH_MINIKUBE, engineVersion: 1, secretValues: [
[envVar: 'MINIKUBE_SSH_KEY', vaultKey: 'private-key'],
[envVar: 'MINIKUBE_HOST', vaultKey: 'hostname'],
[envVar: 'MINIKUBE_USER', vaultKey: 'user'],
[envVar: 'MINIKUBE_ROOTDIR', vaultKey: 'rootdir']]]
]
def configuration = [vaultUrl: params.VAULT_ADDRESS, vaultCredentialId: params.VAULT_CREDS_ID, engineVersion: 1]

pipeline {
agent { label 'insights' }
options {
timestamps()
}

environment {
CLOWDER_VERSION=sh(script: "git describe --tags", returnStdout: true).trim()

BASE_TAG=sh(script:"cat go.mod go.sum Dockerfile.base | sha256sum | head -c 8", returnStdout: true)
BASE_IMG="quay.io/cloudservices/clowder-base:${BASE_TAG}"

IMAGE_TAG=sh(script:"git rev-parse --short=8 HEAD", returnStdout: true).trim()
IMAGE_NAME="quay.io/cloudservices/clowder"

CICD_URL="https://raw.githubusercontent.com/RedHatInsights/cicd-tools/alternative-cicd-tools"
HELPER_FUNCTIONS="${CICD_URL}/helpers/general.sh"
BOOTSTRAP_FUNCTIONS="${CICD_URL}/src/bootstrap.sh"
CURR_TIME=sh(script: "date +%s", returnStdout: true).trim()
}

stages {
stage('no-op') {
stage('Build and Push Base Image') {
steps {
sh "echo 'hello world!'"
withVault([configuration: configuration, vaultSecrets: secrets]) {
sh './ci/build_push_base_img.sh'
}
}
}

stage('Initial Setup') {
steps {
sh '''
make envtest
make update-version
'''
}
}

stage('Run Tests') {
parallel {
stage('Unit Tests') {
environment {
TEST_CONTAINER="clowder-ci-unit-tests-${IMAGE_TAG}-${CURR_TIME}"
}
steps {
withVault([configuration: configuration, vaultSecrets: secrets]) {
sh './ci/unit_tests.sh'
}
}

post {
always {
sh 'docker rm -f $TEST_CONTAINER'
}
}
}

stage('Minikube E2E Tests') {
environment {
CONTAINER_NAME="clowder-ci-minikube-e2e-tests-${IMAGE_TAG}-${CURR_TIME}"
}
steps {
withVault([configuration: configuration, vaultSecrets: secrets]) {
sh './ci/minikube_e2e_tests.sh'
}
}

post {
always {
sh 'docker rm -f $CONTAINER_NAME'
archiveArtifacts artifacts: 'artifacts/**/*', fingerprint: true
junit skipPublishingChecks: true, testResults: 'artifacts/junit-*.xml'
}
}
}
}
}
}
}

24 changes: 24 additions & 0 deletions ci/build_push_base_img.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/bin/bash

set -exv

DOCKER_CONF="$PWD/.docker"
mkdir -p "$DOCKER_CONF"
docker login -u="$QUAY_USER" -p="$QUAY_TOKEN" quay.io

RESPONSE=$( \
curl -Ls -H "Authorization: Bearer $QUAY_API_TOKEN" \
"https://quay.io/api/v1/repository/cloudservices/clowder-base/tag/?specificTag=$BASE_TAG" \
)

echo "received HTTP response: $RESPONSE"

# find all non-expired tags
VALID_TAGS_LENGTH=$(echo $RESPONSE | jq '[ .tags[] | select(.end_ts == null) ] | length')

# Check if Clowder's base image tag already exists
if [[ "$VALID_TAGS_LENGTH" -eq 0 ]]; then
BASE_IMG=$BASE_IMG make docker-build-and-push-base
else
echo "Base image has already been built, Quay image push skipped."
fi
42 changes: 42 additions & 0 deletions ci/minikube_e2e_tests.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#!/bin/bash

echo "$MINIKUBE_SSH_KEY" > minikube-ssh-ident

set -x

set -exv

DOCKER_CONF="$PWD/.docker"
mkdir -p "$DOCKER_CONF"
docker login -u="$QUAY_USER" -p="$QUAY_TOKEN" quay.io

IMG=$IMAGE_NAME:$IMAGE_TAG BASE_IMG=$BASE_IMG make docker-build
IMG=$IMAGE_NAME:$IMAGE_TAG make docker-push

tempid=$(docker create "$IMAGE_NAME:$IMAGE_TAG")
docker cp "${tempid}:/manifest.yaml" .
docker rm $tempid

docker build -f Dockerfile.test --build-arg BASE_IMAGE=${BASE_IMG} -t $CONTAINER_NAME .

docker run -i \
--name $CONTAINER_NAME \
-v $PWD:/workspace:ro \
-v `$PWD/bin/setup-envtest use -p path`:/bins:ro \
-e IMAGE_NAME=$IMAGE_NAME \
-e IMAGE_TAG=$IMAGE_TAG \
-e QUAY_USER=$QUAY_USER \
-e QUAY_TOKEN=$QUAY_TOKEN \
-e MINIKUBE_HOST=$MINIKUBE_HOST \
-e MINIKUBE_ROOTDIR=$MINIKUBE_ROOTDIR \
-e MINIKUBE_USER=$MINIKUBE_USER \
-e CLOWDER_VERSION=$CLOWDER_VERSION \
$BASE_IMG \
./ci/minikube_e2e_tests_inner.sh
TEST_RESULT=$?

docker cp $CONTAINER_NAME:/container_workspace/artifacts/ $PWD

set -e

exit $TEST_RESULT
File renamed without changes.
29 changes: 29 additions & 0 deletions ci/unit_tests.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#!/bin/bash

go version

set -exv

RESPONSE='$( \
curl -Ls -H "Authorization: Bearer ${QUAY_TOKEN}" \
"https://quay.io/api/v1/repository/cloudservices/clowder-base/tag/?specificTag=${BASE_TAG}" \
)'

echo "received HTTP response: ${RESPONSE}"

docker login -u="$QUAY_USER" -p="$QUAY_TOKEN" quay.io

docker build -f Dockerfile.test --build-arg BASE_IMAGE=${BASE_IMG} -t $TEST_CONTAINER .

docker run -i \
-v `$PWD/bin/setup-envtest use -p path`:/bins:ro \
-e IMAGE_NAME=${IMAGE_NAME} \
-e IMAGE_TAG=${IMAGE_TAG} \
-e QUAY_USER=$QUAY_USER \
-e QUAY_TOKEN=$QUAY_TOKEN \
-e MINIKUBE_HOST=$MINIKUBE_HOST \
-e MINIKUBE_ROOTDIR=$MINIKUBE_ROOTDIR \
-e MINIKUBE_USER=$MINIKUBE_USER \
-e CLOWDER_VERSION=$CLOWDER_VERSION \
$TEST_CONTAINER \
make test
132 changes: 0 additions & 132 deletions pr_check.sh

This file was deleted.

0 comments on commit 2e55e2c

Please sign in to comment.