Create a PGP-signed repo for the last Orbit release with CVS content
diff --git a/jetty/pom.xml b/jetty/pom.xml
index 9d1c00f..7ad8a18 100644
--- a/jetty/pom.xml
+++ b/jetty/pom.xml
@@ -85,7 +85,7 @@
         <artifactId>tycho-eclipserun-plugin</artifactId>
         <version>${tycho-version}</version>
         <configuration>
-          <executionEnvironment>JavaSE-11</executionEnvironment>
+          <executionEnvironment>JavaSE-17</executionEnvironment>
           <dependencies>
             <dependency>
               <artifactId>org.eclipse.justj.p2</artifactId>
diff --git a/maven-bnd/tp/MavenBND.target b/maven-bnd/tp/MavenBND.target
index e3f8b6a..ef44ab4 100644
--- a/maven-bnd/tp/MavenBND.target
+++ b/maven-bnd/tp/MavenBND.target
@@ -3,7 +3,7 @@
 <target name="MavenBND" sequenceNumber="1">
   <locations>
     <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="generate" type="Maven">
-      <feature id="org.eclipse.oomph.maven.lucene" label="Oomph Maven BND Lucene" provider-name="Eclipse Oomph" version="4.28.0.v20230521-0510">
+      <feature id="org.eclipse.oomph.maven.lucene" label="Oomph Maven BND Lucene" provider-name="Eclipse Oomph" version="4.29.0">
         <description>This feature's dependencies are pulled directly from Maven central and wrapped via BND recipe as OSGi artifacts.</description>
         <copyright>
 Copyright (c) 2023 Eclipse contributors and others.
diff --git a/orbit-legacy/Mirror Orbit Legacy.launch b/orbit-legacy/Mirror Orbit Legacy.launch
new file mode 100644
index 0000000..0764162
--- /dev/null
+++ b/orbit-legacy/Mirror Orbit Legacy.launch
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ui.externaltools.ProgramLaunchConfigurationType">
+    <booleanAttribute key="org.eclipse.debug.core.ATTR_FORCE_SYSTEM_CONSOLE_ENCODING" value="false"/>
+    <stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;resources&gt;&#13;&#10;&lt;item path=&quot;/org.eclipse.jetty.mirror&quot; type=&quot;4&quot;/&gt;&#13;&#10;&lt;/resources&gt;}"/>
+    <mapAttribute key="org.eclipse.debug.core.environmentVariables">
+        <mapEntry key="JAVA_HOME" value="${maven.build.java.home}"/>
+        <mapEntry key="PATH" value="${maven.bash.home}/../usr/bin${system_property:path.separator}${env_var:PATH}"/>
+    </mapAttribute>
+    <stringAttribute key="org.eclipse.debug.ui.ATTR_CAPTURE_IN_FILE" value="${workspace_loc:/org.eclipse.jetty.mirror}/build.log"/>
+    <stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${maven.build.command}"/>
+    <stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="-DU&#13;&#10;-DX&#13;&#10;-DDtycho.debug.resolver=true&#13;&#10;-Dmaven.artifact.threads=16&#13;&#10;-Duser.home=${system_property:user.home}&#13;&#10;-Dorg.eclipse.justj.p2.manager.args=&quot;-remote localhost:${project_loc:/org.eclipse.oomph.incubator}/orbit-legacy/updates&quot;&#13;&#10;-Dbuild.type=nightly&#13;&#10;clean&#13;&#10;verify"/>
+    <stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${project_loc:/org.eclipse.oomph.incubator}/orbit-legacy"/>
+</launchConfiguration>
diff --git a/orbit-legacy/MirrorOrbitLegacy.jenkinsfile b/orbit-legacy/MirrorOrbitLegacy.jenkinsfile
new file mode 100644
index 0000000..f0fb07f
--- /dev/null
+++ b/orbit-legacy/MirrorOrbitLegacy.jenkinsfile
@@ -0,0 +1,137 @@
+pipeline {
+  agent any
+
+   options {
+    buildDiscarder(logRotator(numToKeepStr: '10'))
+    disableConcurrentBuilds()
+    skipDefaultCheckout true
+  }
+
+  tools {
+    maven 'apache-maven-latest'
+    jdk 'temurin-jdk17-latest'
+  }
+
+  environment {
+    PUBLISH_LOCATION = 'orbit-legacy'
+  }
+
+  parameters {
+    choice(
+      name: 'BUILD_TYPE',
+      choices: ['nightly', 'milestone', 'release'],
+      description: '''
+        Choose the type of build.
+        Note that a release build will not promote the build, but rather will promote the most recent milestone build.
+        '''
+    )
+
+    booleanParam(
+      name: 'PROMOTE',
+      defaultValue: false,
+      description: 'Whether to promote the build to the download server.'
+    )
+  }
+
+  stages {
+    stage('Display Parameters') {
+      steps {
+        echo "BUILD_TYPE=${params.BUILD_TYPE}"
+        echo "PROMOTE=${params.PROMOTE}"
+        script {
+          env.PROMOTE = params.PROMOTE
+          env.BUILD_TYPE = params.BUILD_TYPE
+        }
+      }
+    }
+
+    stage('Initialize PGP') {
+      steps {
+        withCredentials([file(credentialsId: 'secret-subkeys.asc', variable: 'KEYRING')]) {
+         sh '''
+           gpg --batch --import "${KEYRING}"
+           for fpr in $(gpg --list-keys --with-colons  | awk -F: \'/fpr:/ {print $10}\' | sort -u); do echo -e "5\ny\n" |  gpg --batch --command-fd 0 --expert --edit-key ${fpr} trust; done
+           '''
+        }
+      }
+    }
+
+    stage('Git Checkout') {
+      steps {
+        script {
+          /*
+            https://qxf2.com/blog/jenkins-sparse-checkout/
+            https://plugins.jenkins.io/git/ 
+          */
+          def gitVariables = checkout(
+            poll: false,
+            scm: [
+              $class: 'GitSCM',
+              branches: [[name: '*/master']],
+              doGenerateSubmoduleConfigurations: false,
+              submoduleCfg: [],
+              extensions: [
+                [$class: 'CloneOption', shallow: true],
+                [$class: 'SparseCheckoutPaths', sparseCheckoutPaths:[[$class:'SparseCheckoutPath', path:'orbit-legacy/']]]
+              ],
+              userRemoteConfigs: [[url: 'https://git.eclipse.org/r/oomph/org.eclipse.oomph.incubator.git' ]] 
+            ]
+          )
+
+          echo "$gitVariables"
+          env.GIT_COMMIT = gitVariables.GIT_COMMIT
+        }
+      }
+    }
+
+    stage('Build Orbit Legacy Updates') {
+      steps {
+        sshagent(['projects-storage.eclipse.org-bot-ssh']) {
+          dir('orbit-legacy') {
+            withCredentials([string(credentialsId: 'gpg-passphrase', variable: 'KEYRING_PASSPHRASE')]) {
+              sh '''
+                if [[ $PROMOTE == false ]]; then
+                  promotion_argument='-Dorg.eclipse.justj.p2.manager.args='
+                fi
+                mvn \
+                  --no-transfer-progress \
+                  $promotion_argument \
+                  -Pgpg-sign \
+                  -Dgpg.passphrase="${KEYRING_PASSPHRASE}" \
+                  -Dorg.eclipse.justj.p2.manager.build.url=$JOB_URL \
+                  -Dorg.eclipse.justj.p2.manager.relative=$PUBLISH_LOCATION \
+                  -Dbuild.type=$BUILD_TYPE \
+                  clean \
+                  verify
+                '''
+            }
+          }
+        }
+      }
+    }
+  }
+
+  post {
+    always {
+      archiveArtifacts '**'
+    }
+
+    failure {
+      mail to: 'ed.merks@gmail.com',
+      subject: "[Oomph CI] Build Failure ${currentBuild.fullDisplayName}",
+      mimeType: 'text/html',
+      body: "Project: ${env.JOB_NAME}<br/>Build Number: ${env.BUILD_NUMBER}<br/>Build URL: ${env.BUILD_URL}<br/>Console: ${env.BUILD_URL}/console"
+    }
+
+    fixed {
+      mail to: 'ed.merks@gmail.com',
+      subject: "[Oomph CI] Back to normal ${currentBuild.fullDisplayName}",
+      mimeType: 'text/html',
+      body: "Project: ${env.JOB_NAME}<br/>Build Number: ${env.BUILD_NUMBER}<br/>Build URL: ${env.BUILD_URL}<br/>Console: ${env.BUILD_URL}/console"
+    }
+
+    cleanup {
+      deleteDir()
+    }
+  }
+}
\ No newline at end of file
diff --git a/orbit-legacy/pom.xml b/orbit-legacy/pom.xml
new file mode 100644
index 0000000..7a63c33
--- /dev/null
+++ b/orbit-legacy/pom.xml
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.eclipse.oomph.orbit.legacy.mirror</groupId>
+  <artifactId>org.eclipse.oomph.orbit.legacy.mirror</artifactId>
+  <version>1.0.0-SNAPSHOT</version>
+  <packaging>pom</packaging>
+
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <tycho-version>4.0.0-SNAPSHOT</tycho-version>
+    <gpg-keyname>2E8E9CF8</gpg-keyname>
+    <eclipse.repo>https://download.eclipse.org/releases/2023-03</eclipse.repo>
+    <justj.tools.repo>https://download.eclipse.org/justj/tools/updates/nightly/latest</justj.tools.repo>
+    <org.eclipse.storage.user>genie.oomph</org.eclipse.storage.user>
+    <org.eclipse.justj.p2.manager.args>-remote ${org.eclipse.storage.user}@projects-storage.eclipse.org:/home/data/httpd/download.eclipse.org/oomph</org.eclipse.justj.p2.manager.args>
+    <org.eclipse.justj.p2.manager.extra.args></org.eclipse.justj.p2.manager.extra.args>
+    <org.eclipse.justj.p2.manager.relative>simrel-orbit-legacy</org.eclipse.justj.p2.manager.relative>
+    <maven.build.timestamp.format>yyyyMMddHHmm</maven.build.timestamp.format>
+    <org.eclipse.justj.p2.manager.build.url>http://www.example.com/</org.eclipse.justj.p2.manager.build.url>
+    <build.type>nightly</build.type>
+  </properties>
+  
+  <pluginRepositories>
+    <pluginRepository>
+      <id>tycho-snapshots</id>
+      <url>https://repo.eclipse.org/content/repositories/tycho-snapshots</url>
+    </pluginRepository>
+
+	<pluginRepository>
+      <id>dash-licenses-snapshots</id>
+      <url>https://repo.eclipse.org/content/repositories/dash-licenses-snapshots/</url>
+      <snapshots>
+        <enabled>true</enabled>
+      </snapshots>
+    </pluginRepository>
+
+    <pluginRepository>
+      <id>eclipse-maven-releases</id>
+      <url>https://repo.eclipse.org/content/repositories/releases</url>
+    </pluginRepository>
+
+    <pluginRepository>
+      <id>eclipse-cbi-releases</id>
+      <url>https://repo.eclipse.org/content/repositories/cbi-releases</url>
+    </pluginRepository>
+  </pluginRepositories>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.eclipse.tycho</groupId>
+        <artifactId>tycho-maven-plugin</artifactId>
+        <version>${tycho-version}</version>
+        <extensions>true</extensions>
+      </plugin>
+
+      <plugin>
+        <groupId>org.eclipse.tycho</groupId>
+        <artifactId>tycho-p2-publisher-plugin</artifactId>
+        <version>${tycho-version}</version>
+        <configuration>
+          <skip>true</skip>
+        </configuration>
+      </plugin>
+
+      <plugin>
+        <groupId>org.eclipse.tycho.extras</groupId>
+        <artifactId>tycho-p2-extras-plugin</artifactId>
+        <version>${tycho-version}</version>
+        <executions>
+          <execution>
+            <phase>generate-resources</phase>
+            <goals>
+              <goal>mirror</goal>
+            </goals>
+          </execution>
+        </executions>
+        <configuration>
+          <source>
+            <repository>
+              <id>orbit-legacy</id>
+              <layout>p2</layout>
+              <url>https://download.eclipse.org/tools/orbit/downloads/drops/R20201118194144/repository</url>
+            </repository>
+          </source>
+          <compress>true</compress>
+          <xzCompress>true</xzCompress>
+          <keepNonXzIndexFiles>false</keepNonXzIndexFiles>
+          <followStrictOnly>true</followStrictOnly>
+        </configuration>
+      </plugin>
+
+      <plugin>
+        <groupId>org.eclipse.tycho.extras</groupId>
+        <artifactId>tycho-eclipserun-plugin</artifactId>
+        <version>${tycho-version}</version>
+        <configuration>
+          <executionEnvironment>JavaSE-17</executionEnvironment>
+          <dependencies>
+            <dependency>
+              <artifactId>org.eclipse.justj.p2</artifactId>
+              <type>eclipse-plugin</type>
+            </dependency>
+            <dependency>
+              <artifactId>org.apache.felix.scr</artifactId>
+              <type>eclipse-plugin</type>
+            </dependency>
+          </dependencies>
+          <repositories>
+            <repository>
+              <id>eclipse.repo</id>
+              <layout>p2</layout>
+              <url>${eclipse.repo}</url>
+            </repository>
+            <repository>
+              <id>justj.tools.repo</id>
+              <layout>p2</layout>
+              <url>${justj.tools.repo}</url>
+            </repository>
+          </repositories>
+        </configuration>
+        <executions>
+          <execution>
+            <id>promote</id>
+            <goals>
+              <goal>eclipse-run</goal>
+            </goals>
+            <phase>package</phase>
+            <configuration>
+              <argLine></argLine>
+              <appArgLine>
+                -consoleLog
+                -application org.eclipse.justj.p2.manager
+                -data @None
+                -nosplash
+                ${org.eclipse.justj.p2.manager.args}
+                -retain 5
+                -label "Orbit Legacy Updates"
+                -build-url ${org.eclipse.justj.p2.manager.build.url}
+                -root ${project.build.directory}/orbit-legacy-sync
+                -relative ${org.eclipse.justj.p2.manager.relative}
+                -version-iu org.eclipse.orbit.build.feature.
+                -target-url https://download.eclipse.org/oomph
+                -promote ${project.build.directory}/repository
+                -timestamp ${build.timestamp}
+                -type ${build.type}
+                -breadcrumb "Orbit https://download.eclipse.org/tools/orbit/downloads"
+                -mapping simrel-orbit-legacy->SimRel-Orbit-Legacy
+                ${org.eclipse.justj.p2.manager.extra.args}
+              </appArgLine>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
+  <profiles>
+    <profile>
+      <id>gpg-sign</id>
+      <activation>
+        <activeByDefault>false</activeByDefault>
+      </activation>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.eclipse.tycho</groupId>
+            <artifactId>tycho-gpg-plugin</artifactId>
+            <version>${tycho-version}</version>
+            <configuration>
+              <keyname>${gpg-keyname}</keyname>
+              <skipIfJarsigned>true</skipIfJarsigned>
+            </configuration>
+            <executions>
+              <execution>
+                <phase>process-resources</phase>
+                <goals>
+                  <goal>sign-p2-artifacts</goal>
+                </goals>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
+</project>
\ No newline at end of file
diff --git a/orbit/orbit.aggr b/orbit/orbit.aggr
index 6ffd1f8..c2977d8 100644
--- a/orbit/orbit.aggr
+++ b/orbit/orbit.aggr
@@ -12,7 +12,7 @@
         <bundles name="org.apache.commons.httpclient"/>
       </repositories>
     </contributions>
-    <validationRepositories location="https://download.eclipse.org/eclipse/updates/4.27/R-4.27-202303020300"/>
+    <validationRepositories location="https://download.eclipse.org/eclipse/updates/4.28/R-4.28-202306050440"/>
   </validationSets>
   <configurations operatingSystem="linux" windowSystem="gtk" architecture="aarch64"/>
   <configurations operatingSystem="linux" windowSystem="gtk" architecture="ppc64le"/>