From db36e517019fde50ab99bbbb0d48a568c215b91d Mon Sep 17 00:00:00 2001 From: Ian Young Date: Tue, 7 Mar 2023 16:36:53 +0000 Subject: [PATCH] Implement basic continuous integration test See ukf/ukf-meta#384. --- .gitlab-ci.yml | 55 ++++++++++++++++++++++++++++++++++++ ci-download.properties | 15 ++++++++++ ci-thin.properties | 14 +++++++++ utilities/thin_aggregate.xsl | 33 ++++++++++++++++++++++ 4 files changed, 117 insertions(+) create mode 100644 .gitlab-ci.yml create mode 100644 ci-download.properties create mode 100644 ci-thin.properties create mode 100644 utilities/thin_aggregate.xsl diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..5ea7b85 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,55 @@ +# +# Continuous integration tests for the ukf-meta repository. +# + +# +# Default image for all steps is Amazon Corretto 11, which is based +# on Amazon Linux (a variety of yum-based Linux derived from RHEL 7). +# +image: "amazoncorretto:11" + +stages: + - test + +perform-test: + stage: test + script: + # + # Install the tools we need that are not provided by the base image. + # + - yum -y --quiet install ant git libxslt + + # + # Create work directories under the current one. + # + - mkdir -p work/build work/temp + + # + # Fetch full UK federation inventory. + # + # The clone is made with a depth of 1 because we don't need any history. + # + - git clone --depth=1 https://gitlab-ci-token:$CI_JOB_TOKEN@$CI_SERVER_HOST/ukf/ukf-data.git work/ukf-data + + # + # Thin UK federation inventory: retain 100 random entities. + # + - find work/ukf-data/entities -type f -name uk0\*.xml | sort -R | tail -n +101 | xargs rm + + # + # Acquire a copy of the eduGAIN aggregate. + # + - ant -Denv=ci-download flow.edugain.download + - ls -lh work/temp + + # + # Thin the eduGAIN aggregate into another file containing just 1% of the original + # entities. + # + - xsltproc -o work/temp/edugain-thin.xml utilities/thin_aggregate.xsl work/temp/edugain-download.xml + - ls -lh work/temp + + # + # Run the full generate pipeline on the thinned input data. + # + - ant -Denv=ci-thin flow.aggregates.generate diff --git a/ci-download.properties b/ci-download.properties new file mode 100644 index 0000000..287cb77 --- /dev/null +++ b/ci-download.properties @@ -0,0 +1,15 @@ +# +# ci-download.properties +# +# Properties defined for the env=ci-download environment, the part of the +# continuous integration job that downloads an eduGAIN aggregate. +# + +# Shared workspace location is assumed to be under the current directory. +shared.ws.dir=${basedir}/work + +# +# Cached eduGAIN download goes into a different directory so that it +# persists over comparison runs. +# +mda.output.edugain.download=${shared.ws.dir}/temp/edugain-download.xml diff --git a/ci-thin.properties b/ci-thin.properties new file mode 100644 index 0000000..67c9702 --- /dev/null +++ b/ci-thin.properties @@ -0,0 +1,14 @@ +# +# ci-thin.properties +# +# Properties defined for the env=ci-thin environment, the part of the +# continuous integration job that runs the test on the thinned data. +# + +# Shared workspace location is assumed to be under the current directory. +shared.ws.dir=${basedir}/work + +# +# Location of the thinned version of the downloaded eduGAIN aggregate. +# +mda.output.edugain.download=${shared.ws.dir}/temp/edugain-thin.xml diff --git a/utilities/thin_aggregate.xsl b/utilities/thin_aggregate.xsl new file mode 100644 index 0000000..eb10c24 --- /dev/null +++ b/utilities/thin_aggregate.xsl @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + +