mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-17 11:19:15 +00:00
Auto-merging main (ddbda0bf34) into docker-25 after successful release build
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
name: build-aws-sdk-p2
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
branches: [main, bug6269]
|
||||
paths:
|
||||
- 'java/com.amazon.aws.aws-java-api/**'
|
||||
- 'java/com.amazon.aws.aws-java-api.updatesite/**'
|
||||
@@ -56,7 +56,7 @@ jobs:
|
||||
JAVA17_HOME: ${{env.JAVA_HOME_17_X64}}
|
||||
run: |
|
||||
./java/com.amazon.aws.aws-java-api/createLocalAwsApiP2Repository.sh 2>&1 | tee build.log
|
||||
echo "VERSION=$( cat build.gradle | grep "implementation platform('software.amazon.awssdk:bom:[0-9.]*')" | sed -e 's/^\s*implementation platform('\''software\.amazon\.awssdk:bom:\([0-9.]*\)'\'')/\1/' )" >>${GITHUB_ENV}
|
||||
echo "VERSION=$( cat java/com.amazon.aws.aws-java-api/build.gradle | grep "implementation platform('software.amazon.awssdk:bom:[0-9.]*')" | sed -e 's/^\s*implementation platform('\''software\.amazon\.awssdk:bom:\([0-9.]*\)'\'')/\1/' )" >>${GITHUB_ENV}
|
||||
- name: Upload build log
|
||||
uses: actions/upload-artifact@v4
|
||||
if: always()
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
name: build-jetty-p2
|
||||
|
||||
on:
|
||||
workflow_dispatch: {}
|
||||
|
||||
jobs:
|
||||
build-jetty-p2:
|
||||
permissions:
|
||||
contents: write
|
||||
checks: write
|
||||
actions: read
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Install JDK 21
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: temurin
|
||||
java-version: 21
|
||||
- name: Check out the repository to the runner
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: '500'
|
||||
- name: Download Eclipse Platform Runtime
|
||||
run: |
|
||||
curl -fsSL \
|
||||
'https://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops4/R-4.38-202512010920/eclipse-platform-4.38-linux-gtk-x86_64.tar.gz&r=1' \
|
||||
-o eclipse.tar.gz
|
||||
tar -xzf eclipse.tar.gz
|
||||
ln -s ${PWD}/eclipse/eclipse /usr/local/bin
|
||||
- name: Select Jetty Version
|
||||
run: |
|
||||
echo "VERSION=9.4.58.v20250814" >>"${GITHUB_ENV}"
|
||||
- name: Mirror Jetty p2 repository
|
||||
shell: bash
|
||||
run: |
|
||||
./java/com.sap.sailing.targetplatform/scripts/createJettyP2RepoFromMavenCentral.sh "${VERSION}"
|
||||
- name: Upload build log
|
||||
uses: actions/upload-artifact@v4
|
||||
if: always()
|
||||
with:
|
||||
name: build.log
|
||||
path: build.log
|
||||
retention-days: 90
|
||||
- name: Upload p2 site as artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: jetty-p2
|
||||
path: /tmp/jetty-p2-repo-${{ env.VERSION }}/repository/**/*
|
||||
retention-days: 90
|
||||
- name: SCP artifacts to download.eclipse.org to version-specific folder
|
||||
uses: appleboy/scp-action@ff85246acaad7bdce478db94a363cd2bf7c90345 # v1
|
||||
with:
|
||||
host: projects-storage.eclipse.org
|
||||
username: ${{ secrets.SCP_USERNAME }}
|
||||
key: ${{ secrets.SCP_KEY }}
|
||||
passphrase: ${{ secrets.SCP_PASSPHRASE }}
|
||||
source: "/tmp/jetty-p2-repo-${{ env.VERSION }}/repository"
|
||||
target: "/home/data/httpd/download.eclipse.org/sailing-analytics/p2/jetty-${{ env.VERSION }}"
|
||||
strip_components: 3
|
||||
rm: true
|
||||
@@ -0,0 +1,77 @@
|
||||
name: build-sailing-base-p2
|
||||
on:
|
||||
push:
|
||||
branches: [main, bug6269]
|
||||
paths:
|
||||
- 'java/com.sap.sailing.targetplatform.base/**'
|
||||
workflow_dispatch: {}
|
||||
|
||||
jobs:
|
||||
build-sailing-base-p2:
|
||||
permissions:
|
||||
contents: write
|
||||
checks: write
|
||||
actions: read
|
||||
runs-on: 'ubuntu-latest'
|
||||
steps:
|
||||
- name: Check out the repository to the runner
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: '500'
|
||||
- name: Install JDK 8
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: 'temurin' # See 'Supported distributions' for available options
|
||||
java-version: '8'
|
||||
mvn-toolchain-id: 'JavaSE-1.8'
|
||||
- name: Install JDK 17
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: 'temurin' # See 'Supported distributions' for available options
|
||||
java-version: '17'
|
||||
mvn-toolchain-id: 'JavaSE-17'
|
||||
- shell: bash
|
||||
env: # Or as an environment variable
|
||||
TMP: /mnt/tmp
|
||||
JAVA8_HOME: ${{env.JAVA_HOME_8_X64}}
|
||||
JAVA17_HOME: ${{env.JAVA_HOME_17_X64}}
|
||||
run: |
|
||||
configuration/install-gwt-from-fork-releases https://github.com/eclipse-sailing-analytics/gwt-forward-serialization-rpc https://github.com/eclipse-sailing-analytics/gwt-maven-plugin-forward-serialization-rpc 2.12.4 .
|
||||
cd java/com.sap.sailing.targetplatform.base
|
||||
mvn clean compile 2>&1 | tee build.log
|
||||
echo "BUILD_TIME=$(date -u +"%Y%m%dT%H%M%S")" >> "$GITHUB_ENV"
|
||||
- name: Upload build log
|
||||
uses: actions/upload-artifact@v4
|
||||
if: always()
|
||||
with:
|
||||
name: build.log
|
||||
path: build.log
|
||||
retention-days: 90
|
||||
- name: Upload p2 site as artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: aws-sdk-p2
|
||||
path: java/com.sap.sailing.targetplatform.base/target/repository/**/*
|
||||
retention-days: 90
|
||||
- name: SCP artifacts to download.eclipse.org to version-specific folder
|
||||
uses: appleboy/scp-action@ff85246acaad7bdce478db94a363cd2bf7c90345 # v1
|
||||
with:
|
||||
host: projects-storage.eclipse.org
|
||||
username: ${{ secrets.SCP_USERNAME }}
|
||||
key: ${{ secrets.SCP_KEY }}
|
||||
passphrase: ${{ secrets.SCP_PASSPHRASE }}
|
||||
source: "java/com.sap.sailing.targetplatform.base/target/repository"
|
||||
target: "/home/data/httpd/download.eclipse.org/sailing-analytics/p2/sailing-${{env.BUILD_TIME}}"
|
||||
strip_components: 4
|
||||
rm: true
|
||||
- name: SCP artifacts to download.eclipse.org to default folder
|
||||
uses: appleboy/scp-action@ff85246acaad7bdce478db94a363cd2bf7c90345 # v1
|
||||
with:
|
||||
host: projects-storage.eclipse.org
|
||||
username: ${{ secrets.SCP_USERNAME }}
|
||||
key: ${{ secrets.SCP_KEY }}
|
||||
passphrase: ${{ secrets.SCP_PASSPHRASE }}
|
||||
source: "java/com.sap.sailing.targetplatform.base/target/repository"
|
||||
target: "/home/data/httpd/download.eclipse.org/sailing-analytics/p2/sailing"
|
||||
strip_components: 4
|
||||
rm: true
|
||||
+1
-1
@@ -1 +1 @@
|
||||
docs.sapsailing.com
|
||||
sailing-analytics.eclipse.dev
|
||||
|
||||
+1
-1
@@ -833,7 +833,7 @@
|
||||
<div style="display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin-top:28px;">
|
||||
<a class="btn btn-yellow" href="https://wiki.sapsailing.com/wiki/howto/onboarding.md" target="_blank" rel="noopener">Full Onboarding Guide</a>
|
||||
<a class="btn btn-outline-white" href="https://github.com/eclipse-sailing-analytics/sailing-analytics/releases" target="_blank" rel="noopener">Latest Release</a>
|
||||
<a class="btn btn-outline-white" href="https://github.com/eclipse-sailing-analytics/sailing-analytics/releases?q=docker&expanded=true" target="_blank" rel="noopener">Docker Image</a>
|
||||
<a class="btn btn-outline-white" href="https://github.com/eclipse-sailing-analytics/sailing-analytics/pkgs/container/sailing-analytics" target="_blank" rel="noopener">Docker Image</a>
|
||||
<span style="margin-left:auto;display:inline-flex;align-items:center;gap:8px;padding:9px 16px;background:rgba(239,170,0,.12);border:1px solid rgba(239,170,0,.35);border-radius:var(--radius);border-left:3px solid var(--yellow);">
|
||||
<span style="font-size:.9rem;font-weight:900;color:var(--yellow);line-height:1;">!</span>
|
||||
<span style="font-size:.82rem;color:rgba(255,255,255,.8);">Found a bug or have a feature request? Use the <a href="https://github.com/eclipse-sailing-analytics/sailing-analytics/issues/" target="_blank" rel="noopener" style="color:var(--yellow);font-weight:700;">issue tracker</a> on GitHub.</span>
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
The former "p2admin" target definition is not tracked in the repository anymore.
|
||||
Instead, it can be generated from the existing target definition via ``../scripts/createLocalTargetDef.sh``.
|
||||
This script copies the existing target definition and replaces the remote URL ``https://p2.sapsailing.com/p2/sailing/`` with a local ``file://`` URL.
|
||||
This script copies the existing target definition and replaces the remote URL ``https://download.eclipse.org/sailing-analytics/p2/sailing/`` with a local ``file://`` URL.
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
</location>
|
||||
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
|
||||
<unit id="com.amazon.aws.aws-java-api.feature.group" version="2.15.57"/>
|
||||
<repository location="https://p2.sapsailing.com/p2/aws-sdk/"/>
|
||||
<repository location="https://download.eclipse.org/sailing-analytics/p2/aws-sdk/"/>
|
||||
</location>
|
||||
<!-- location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
|
||||
<unit id="com.sap.sailing.target.base.feature.group" version="1.0.0"/>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<?pde version="3.8"?>
|
||||
<target name="Race Analysis Target" sequenceNumber="227">
|
||||
<target name="Race Analysis Target" sequenceNumber="228">
|
||||
<locations>
|
||||
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
|
||||
<unit id="javax.ws.rs" version="1.1.1.v20130318-1750"/>
|
||||
@@ -88,7 +88,7 @@
|
||||
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
|
||||
<unit id="org.eclipse.jetty.bundles.f.feature.group" version="9.4.58.v20250814"/>
|
||||
<unit id="org.eclipse.jetty.bundles.f.source.feature.group" version="9.4.58.v20250814"/>
|
||||
<repository location="https://p2.sapsailing.com/p2/jetty-9.4.58.v20250814"/>
|
||||
<repository location="https://download.eclipse.org/sailing-analytics/p2/jetty-9.4.58.v20250814"/>
|
||||
</location>
|
||||
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
|
||||
<unit id="org.apache.felix.gogo.command" version="1.1.0.v20201023-1558"/>
|
||||
@@ -182,7 +182,7 @@
|
||||
</location>
|
||||
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
|
||||
<unit id="com.amazon.aws.aws-java-api.feature.group" version="2.32.25"/>
|
||||
<repository location="https://p2.sapsailing.com/p2/aws-sdk/"/>
|
||||
<repository location="https://download.eclipse.org/sailing-analytics/p2/aws-sdk/"/>
|
||||
</location>
|
||||
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
|
||||
<unit id="com.sap.sailing.target.base.feature.group" version="1.0.0"/>
|
||||
@@ -191,7 +191,7 @@
|
||||
<unit id="com.sap.sailing.target.shiro.feature.group" version="1.0.0"/>
|
||||
<unit id="com.sap.sailing.target.smile.feature.group" version="1.0.0"/>
|
||||
<unit id="com.sap.sailing.target.test.feature.group" version="1.0.0"/>
|
||||
<repository location="https://p2.sapsailing.com/p2/sailing/"/>
|
||||
<repository location="https://download.eclipse.org/sailing-analytics/p2/sailing/"/>
|
||||
</location>
|
||||
<!-- local update site -->
|
||||
<!-- location path="C:\repository\java\com.sap.sailing.targetplatform.base\target\repository" type="Directory"/ -->
|
||||
|
||||
@@ -0,0 +1,190 @@
|
||||
# Updating Jetty in the Target Platform
|
||||
|
||||
## Background
|
||||
|
||||
The target platform references Jetty bundles via a p2 repository. Historically
|
||||
this was mirrored from the official Eclipse-hosted site at
|
||||
`https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/` using the
|
||||
`createAndUploadJettyP2Repository.sh` script.
|
||||
|
||||
When a new Jetty release is **not yet published** to that Eclipse p2 site (as
|
||||
happened with 9.4.58), the scripts described below let you build an equivalent
|
||||
p2 repository yourself, directly from the artifacts on **Maven Central**.
|
||||
|
||||
This works because the Jetty jars on Maven Central are already proper OSGi
|
||||
bundles (`Bundle-SymbolicName`, `Bundle-Version`, etc.) and their `-sources.jar`
|
||||
files carry `Eclipse-SourceBundle` headers.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
| Tool | Purpose |
|
||||
|------|---------|
|
||||
| `eclipse` on `PATH` | Provides the p2 publisher (`org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher`). Any Eclipse IDE or Equinox SDK installation will have this. |
|
||||
| `curl` | Downloads jars from Maven Central. |
|
||||
| `wget` | Used by the upload script to fetch JSP bundles into `target-base`. |
|
||||
| `ssh` / `scp` | Uploads the finished p2 repository to `sapsailing.com`. |
|
||||
|
||||
## Step-by-step guide
|
||||
|
||||
### 1. Determine the new version string
|
||||
|
||||
Find the latest 9.4.x release on Maven Central:
|
||||
|
||||
```
|
||||
curl -s https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-server/ \
|
||||
| grep -o '9\.4\.[0-9]*\.v[0-9]*' | sort -V | tail -1
|
||||
```
|
||||
|
||||
The version string looks like `9.4.58.v20250814`.
|
||||
|
||||
### 2. Build the p2 repository
|
||||
|
||||
```bash
|
||||
cd java/com.sap.sailing.targetplatform/scripts
|
||||
./createJettyP2RepoFromMavenCentral.sh 9.4.58.v20250814
|
||||
```
|
||||
|
||||
This will:
|
||||
|
||||
1. Download all 41 Jetty-versioned bundles + their source jars from Maven
|
||||
Central into a temporary staging directory.
|
||||
2. Download 4 static (non-Jetty-versioned) bundles that also ship with the
|
||||
official Eclipse Jetty p2 repository (see
|
||||
[What's in the p2 repository](#what-s-in-the-p2-repository) below).
|
||||
3. Generate two Eclipse features wrapping these bundles:
|
||||
- `org.eclipse.jetty.bundles.f` — the main feature
|
||||
- `org.eclipse.jetty.bundles.f.source` — the source feature
|
||||
4. Run the Eclipse p2 `FeaturesAndBundlesPublisher` to produce a valid p2
|
||||
repository.
|
||||
|
||||
The result is at `/tmp/jetty-p2-repo-<VERSION>/repository`.
|
||||
|
||||
> **Tip:** You can test with the local repo before uploading. Point the
|
||||
> `<repository location="..."/>` in your `.target` file to
|
||||
> `file:/tmp/jetty-p2-repo-<VERSION>/repository` and reload the target
|
||||
> platform.
|
||||
|
||||
### 3. Upload to https://download.eclipse.org/sailing-analytics/p2/
|
||||
|
||||
There is a Github Actions workflow at .github/workflows/build-jetty-p2.yml which runs the process described
|
||||
above, using the createJettyP2RepoFromMavenCentral.sh, and uploads the p2 repo content,
|
||||
using the necessary secrets from repository / organization secrets from
|
||||
https://github.com/eclipse-sailing-analytics to that folder.
|
||||
|
||||
### 4. Activate
|
||||
|
||||
```bash
|
||||
./activateJettyP2Repo.sh 9.4.58.v20250814
|
||||
```
|
||||
|
||||
This will:
|
||||
|
||||
1. Update the Jetty version and repository URL in both target definition files
|
||||
(`race-analysis-p2-remote.target`, `race-analysis-p2-local.target`).
|
||||
2. Update the Jetty version in the feature files
|
||||
(`com.sap.sse.feature.runtime/feature.xml`,
|
||||
`com.sap.sailing.targetplatform.base/features/target-base/feature.xml`).
|
||||
3. Replace the `apache-jsp` and `jetty-osgi-boot-jsp` jars (+ sources) in
|
||||
`com.sap.sailing.targetplatform.base/plugins/target-base` with the new
|
||||
version and stage them in git.
|
||||
|
||||
### 5. Rebuild and upload the base p2 repository
|
||||
|
||||
```bash
|
||||
./createLocalBaseP2repository.sh
|
||||
./uploadRepositoryToServer.sh
|
||||
```
|
||||
|
||||
### 6. Reload the target platform
|
||||
|
||||
In Eclipse, open the `.target` file and click **Reload** / **Set as Active
|
||||
Target Platform**.
|
||||
|
||||
## What's in the p2 repository
|
||||
|
||||
The generated p2 repository contains **86 JARs** (bundles + source bundles)
|
||||
and is a **strict superset** of the 81-JAR repository that the official Eclipse
|
||||
Jetty p2 site publishes.
|
||||
|
||||
The bundles fall into two categories:
|
||||
|
||||
### Jetty-versioned bundles (41 bundles, each with a source jar = 82 JARs)
|
||||
|
||||
These are downloaded from Maven Central and versioned with the Jetty release
|
||||
(e.g. `9.4.58.v20250814`). They are defined in the `BUNDLES` variable in the
|
||||
script.
|
||||
|
||||
| Category | Bundles |
|
||||
|----------|---------|
|
||||
| Core | `jetty-server`, `jetty-servlet`, `jetty-servlets`, `jetty-http`, `jetty-io`, `jetty-util`, `jetty-util-ajax`, `jetty-xml`, `jetty-security`, `jetty-webapp`, `jetty-deploy`, `jetty-client`, `jetty-continuation`, `jetty-proxy`, `jetty-rewrite` |
|
||||
| Auth | `jetty-jaas`, `jetty-jaspi` (BSN: `security.jaspi`), `jetty-annotations`, `jetty-jmx`, `jetty-jndi`, `jetty-plus` |
|
||||
| ALPN / HTTP/2 | `jetty-alpn-client`, `jetty-alpn-server`, `http2-client`, `http2-http-client-transport` (BSN: `http2.client.http`), `http2-common`, `http2-hpack`, `http2-server` |
|
||||
| WebSocket | `websocket-api`, `websocket-client`, `websocket-common`, `websocket-server`, `websocket-servlet`, `javax-websocket-client-impl` (BSN: `websocket.javax.websocket`), `javax-websocket-server-impl` (BSN: `websocket.javax.websocket.server`) |
|
||||
| OSGi integration | `jetty-osgi-boot`, `jetty-osgi-boot-warurl`, `jetty-osgi-boot-jsp`, `jetty-httpservice` (BSN: `osgi.httpservice`), `jetty-osgi-alpn` (BSN: `osgi.alpn.fragment`) |
|
||||
| JSP | `apache-jsp` (BSN: `jetty.apache-jsp`) |
|
||||
|
||||
### Static bundles (4 JARs)
|
||||
|
||||
These ship with the official Eclipse Jetty p2 repository but have their own
|
||||
fixed version, independent of the Jetty release. They are defined in the
|
||||
`STATIC_BUNDLES` variable in the script and are downloaded from the previous
|
||||
Jetty p2 repository on `sapsailing.com`.
|
||||
|
||||
| Bundle | Version | Notes |
|
||||
|--------|---------|-------|
|
||||
| `javax.security.auth.message` | `1.0.0.v201108011116` | JASPIC 1.0 API (Eclipse Orbit). Not imported by any project code. |
|
||||
| `javax.security.auth.message.source` | `1.0.0.v201108011116` | Source for the above. |
|
||||
| `org.eclipse.jetty.osgi-servlet-api` | `3.1.0.M3` | Jetty's repackaged Servlet 3.1 API. Also in `target-base/plugins`. |
|
||||
| `org.eclipse.jetty.osgi-servlet-api.source` | `3.1.0.M3` | Source for the above. |
|
||||
|
||||
These bundles are **optional** — if the download fails (e.g. because the old
|
||||
p2 repo URL is no longer available), the script continues with a warning. Both
|
||||
`javax.security.auth.message` and `osgi-servlet-api` are also provided by
|
||||
`target-base/plugins`, so the target platform will still resolve correctly.
|
||||
|
||||
### Comparison with the official Eclipse Jetty p2 repository
|
||||
|
||||
The old Eclipse-hosted repo (e.g. the 9.4.57 version mirrored at
|
||||
`https://p2.sapsailing.com/p2/jetty-9.4.57.v20241219/`) contained **81 JARs**.
|
||||
The new repo contains **86 JARs** — a strict superset. The 5 extras are source
|
||||
or main JARs that the old repo inconsistently omitted:
|
||||
|
||||
| Extra JAR in new repo | Explanation |
|
||||
|-----------------------|-------------|
|
||||
| `org.eclipse.jetty.apache-jsp` | Old repo only shipped the `.source`; the main jar was in `target-base`. |
|
||||
| `org.eclipse.jetty.osgi.boot.jsp` | Same — old repo only had `.source`; main jar was in `target-base`. |
|
||||
| `org.eclipse.jetty.jaas.source` | Old repo shipped `jaas` without its source. |
|
||||
| `org.eclipse.jetty.osgi.alpn.fragment.source` | Old repo shipped the fragment without its source. |
|
||||
| `org.eclipse.jetty.security.jaspi` | Old repo only shipped the `.source`. |
|
||||
|
||||
Having both the main and source jar for every bundle is cleaner and harmless.
|
||||
|
||||
## Applying to future versions
|
||||
|
||||
Replace `9.4.58.v20250814` with the new version string in steps 2 and 3. Both
|
||||
scripts accept the version as their first argument and default to
|
||||
`9.4.58.v20250814` if omitted.
|
||||
|
||||
If the new Jetty release adds or removes bundles, edit the `BUNDLES` list at the
|
||||
top of `createJettyP2RepoFromMavenCentral.sh`. Each line has the format:
|
||||
|
||||
```
|
||||
<maven-group-path>|<artifact-id>|<osgi-bundle-symbolic-name>
|
||||
```
|
||||
|
||||
Note that the Maven artifact ID and the OSGi `Bundle-SymbolicName` often differ.
|
||||
You can verify the OSGi symbolic name of any jar with:
|
||||
|
||||
```bash
|
||||
unzip -p some-jetty-bundle.jar META-INF/MANIFEST.MF | grep Bundle-SymbolicName
|
||||
```
|
||||
|
||||
## Script overview
|
||||
|
||||
| Script | What it does |
|
||||
|--------|--------------|
|
||||
| `createJettyP2RepoFromMavenCentral.sh` | Downloads Jetty bundles from Maven Central and builds a local p2 repository. |
|
||||
| `activateJettyP2Repo.sh` | Updates all version references in the workspace. |
|
||||
| `createAndUploadJettyP2Repository.sh` | *(legacy)* Mirrors an existing Eclipse-hosted p2 site. Use this when the version **is** available at `download.eclipse.org`. |
|
||||
| `createLocalBaseP2repository.sh` | Builds the local `target-base` p2 repository via Tycho. |
|
||||
| `uploadRepositoryToServer.sh` | Uploads the `target-base` p2 repository to `sapsailing.com`. |
|
||||
@@ -0,0 +1,99 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# After creating the p2 repository with createJettyP2RepoFromMavenCentral.sh,
|
||||
# this script updates all references in the workspace.
|
||||
#
|
||||
# Usage:
|
||||
# ./activateJettyP2Repo.sh [VERSION]
|
||||
#
|
||||
# VERSION defaults to 9.4.58.v20250814 if not supplied.
|
||||
#
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
VERSION="${1:-9.4.58.v20250814}"
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Determine the old version from the target definition
|
||||
# ---------------------------------------------------------------------------
|
||||
OLD_VERSION=$(grep '<unit id="org\.eclipse\.jetty\.bundles\.f\.feature\.group" version="' \
|
||||
"${SCRIPT_DIR}/../definitions/race-analysis-p2-remote.target" \
|
||||
| sed -e 's/.*version="\([^"]*\)".*/\1/')
|
||||
|
||||
echo "=== Upgrading Jetty from ${OLD_VERSION} to ${VERSION} ==="
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# 1. Update target platform definitions
|
||||
# ---------------------------------------------------------------------------
|
||||
echo ""
|
||||
echo "--- Updating target platform definitions ---"
|
||||
for TARGET_FILE in \
|
||||
"${SCRIPT_DIR}/../definitions/race-analysis-p2-remote.target" \
|
||||
"${SCRIPT_DIR}/../definitions/race-analysis-p2-local.target"
|
||||
do
|
||||
if [ -f "${TARGET_FILE}" ]; then
|
||||
echo " ${TARGET_FILE}"
|
||||
sed -i \
|
||||
-e 's/\(<unit id="org\.eclipse\.jetty\.bundles\.f\.\(source\.\)\?feature\.group" version="\)[^"]*\("\/>\)/\1'"${VERSION}"'\3/' \
|
||||
-e 's|\(<repository location="https://p2\.sapsailing\.com/p2/\)jetty[^"]*\("\/>\)|\1jetty-'"${VERSION}"'\2|' \
|
||||
"${TARGET_FILE}"
|
||||
fi
|
||||
done
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# 2. Update feature.xml files with new Jetty version
|
||||
# ---------------------------------------------------------------------------
|
||||
echo ""
|
||||
echo "--- Updating feature.xml files ---"
|
||||
|
||||
RUNTIME_FEATURE="${SCRIPT_DIR}/../../com.sap.sse.feature.runtime/feature.xml"
|
||||
if [ -f "${RUNTIME_FEATURE}" ]; then
|
||||
echo " ${RUNTIME_FEATURE}"
|
||||
sed -i -e 's/version="'"${OLD_VERSION}"'"/version="'"${VERSION}"'"/' "${RUNTIME_FEATURE}"
|
||||
fi
|
||||
|
||||
TARGET_BASE_FEATURE="${SCRIPT_DIR}/../../com.sap.sailing.targetplatform.base/features/target-base/feature.xml"
|
||||
if [ -f "${TARGET_BASE_FEATURE}" ]; then
|
||||
echo " ${TARGET_BASE_FEATURE}"
|
||||
sed -i -e 's/version="'"${OLD_VERSION}"'"/version="'"${VERSION}"'"/' "${TARGET_BASE_FEATURE}"
|
||||
fi
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# 3. Update apache-jsp and jetty-osgi-boot-jsp jars in target-base
|
||||
# ---------------------------------------------------------------------------
|
||||
echo ""
|
||||
echo "--- Updating JSP bundles in target-base plugins ---"
|
||||
TARGET_BASE_PLUGINS="${SCRIPT_DIR}/../../com.sap.sailing.targetplatform.base/plugins/target-base"
|
||||
|
||||
echo " Removing old versions..."
|
||||
rm -f "${TARGET_BASE_PLUGINS}/apache-jsp-${OLD_VERSION}.jar"
|
||||
rm -f "${TARGET_BASE_PLUGINS}/apache-jsp-${OLD_VERSION}-sources.jar"
|
||||
rm -f "${TARGET_BASE_PLUGINS}/jetty-osgi-boot-jsp-${OLD_VERSION}.jar"
|
||||
rm -f "${TARGET_BASE_PLUGINS}/jetty-osgi-boot-jsp-${OLD_VERSION}-sources.jar"
|
||||
|
||||
MAVEN_CENTRAL="https://repo1.maven.org/maven2"
|
||||
|
||||
echo " Downloading new versions..."
|
||||
wget -q -O "${TARGET_BASE_PLUGINS}/apache-jsp-${VERSION}.jar" \
|
||||
"${MAVEN_CENTRAL}/org/eclipse/jetty/apache-jsp/${VERSION}/apache-jsp-${VERSION}.jar"
|
||||
wget -q -O "${TARGET_BASE_PLUGINS}/apache-jsp-${VERSION}-sources.jar" \
|
||||
"${MAVEN_CENTRAL}/org/eclipse/jetty/apache-jsp/${VERSION}/apache-jsp-${VERSION}-sources.jar"
|
||||
wget -q -O "${TARGET_BASE_PLUGINS}/jetty-osgi-boot-jsp-${VERSION}.jar" \
|
||||
"${MAVEN_CENTRAL}/org/eclipse/jetty/osgi/jetty-osgi-boot-jsp/${VERSION}/jetty-osgi-boot-jsp-${VERSION}.jar"
|
||||
wget -q -O "${TARGET_BASE_PLUGINS}/jetty-osgi-boot-jsp-${VERSION}-sources.jar" \
|
||||
"${MAVEN_CENTRAL}/org/eclipse/jetty/osgi/jetty-osgi-boot-jsp/${VERSION}/jetty-osgi-boot-jsp-${VERSION}-sources.jar"
|
||||
|
||||
echo " Adding to git..."
|
||||
git -C "${TARGET_BASE_PLUGINS}" add "*.jar"
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Done
|
||||
# ---------------------------------------------------------------------------
|
||||
echo ""
|
||||
echo "=== DONE ==="
|
||||
echo ""
|
||||
echo "Your target platform now references jetty-${VERSION}."
|
||||
echo "Next steps:"
|
||||
echo " 1. Rebuild the local base p2 repository: ./createLocalBaseP2repository.sh"
|
||||
echo " 2. Upload it: ./uploadRepositoryToServer.sh"
|
||||
echo " 3. Reload the target platform in your IDE"
|
||||
+339
@@ -0,0 +1,339 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Creates a local p2 repository for Jetty 9.4.x from Maven Central artifacts.
|
||||
#
|
||||
# Use this when the official Eclipse Jetty p2 repository at
|
||||
# https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/
|
||||
# does not yet contain the latest security patch release.
|
||||
#
|
||||
# The Jetty jars on Maven Central are already proper OSGi bundles (with
|
||||
# Bundle-SymbolicName, etc.) and their -sources.jar files already carry
|
||||
# Eclipse-SourceBundle headers, so we can publish them directly into a
|
||||
# p2 repository.
|
||||
#
|
||||
# Prerequisites:
|
||||
# - An Eclipse installation accessible via the "eclipse" command on PATH
|
||||
# (needs the p2 publisher: org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher)
|
||||
# Typically any Eclipse IDE or the Equinox SDK will have this.
|
||||
# - curl and a POSIX shell
|
||||
# - a /tmp directory with write permissions and at least 1GB free space
|
||||
#
|
||||
# Usage:
|
||||
# ./createJettyP2RepoFromMavenCentral.sh [VERSION]
|
||||
#
|
||||
# VERSION defaults to 9.4.58.v20250814 if not supplied.
|
||||
#
|
||||
# After running, the p2 repository will be at:
|
||||
# /tmp/jetty-p2-repo-<VERSION>/repository
|
||||
#
|
||||
# You can then either:
|
||||
# a) Point your target platform definition at this local directory, or
|
||||
# b) Upload it to your p2 server (see uploadAndActivateJettyP2Repo.sh)
|
||||
#
|
||||
set -euo pipefail
|
||||
|
||||
VERSION="${1:-9.4.58.v20250814}"
|
||||
echo "=== Building Jetty p2 repository for version ${VERSION} ==="
|
||||
|
||||
MAVEN_CENTRAL="https://repo1.maven.org/maven2"
|
||||
WORK_DIR="/tmp/jetty-p2-repo-${VERSION}"
|
||||
REPO_DIR="${WORK_DIR}/repository"
|
||||
STAGING_DIR="${WORK_DIR}/staging"
|
||||
PLUGINS_DIR="${STAGING_DIR}/plugins"
|
||||
FEATURES_DIR="${STAGING_DIR}/features/org.eclipse.jetty.bundles.f_${VERSION}"
|
||||
|
||||
rm -rf "${WORK_DIR}"
|
||||
mkdir -p "${PLUGINS_DIR}" "${FEATURES_DIR}"
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Define the bundle list.
|
||||
# Format: "maven-group-path|artifact-id|osgi-bundle-symbolic-name"
|
||||
#
|
||||
# The OSGi symbolic names must match what the existing target platform
|
||||
# definition and feature.xml files reference.
|
||||
#
|
||||
# This list mirrors the contents of the official Eclipse Jetty p2 repo
|
||||
# (e.g. https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.57.v20241219/)
|
||||
# which ships 81 jars. All of these are versioned with the Jetty release
|
||||
# version, except for two static bundles listed in STATIC_BUNDLES below.
|
||||
# ---------------------------------------------------------------------------
|
||||
BUNDLES="\
|
||||
org/eclipse/jetty|jetty-alpn-client|org.eclipse.jetty.alpn.client
|
||||
org/eclipse/jetty|jetty-alpn-server|org.eclipse.jetty.alpn.server
|
||||
org/eclipse/jetty|jetty-annotations|org.eclipse.jetty.annotations
|
||||
org/eclipse/jetty|apache-jsp|org.eclipse.jetty.apache-jsp
|
||||
org/eclipse/jetty|jetty-client|org.eclipse.jetty.client
|
||||
org/eclipse/jetty|jetty-continuation|org.eclipse.jetty.continuation
|
||||
org/eclipse/jetty|jetty-deploy|org.eclipse.jetty.deploy
|
||||
org/eclipse/jetty|jetty-http|org.eclipse.jetty.http
|
||||
org/eclipse/jetty/http2|http2-client|org.eclipse.jetty.http2.client
|
||||
org/eclipse/jetty/http2|http2-http-client-transport|org.eclipse.jetty.http2.client.http
|
||||
org/eclipse/jetty/http2|http2-common|org.eclipse.jetty.http2.common
|
||||
org/eclipse/jetty/http2|http2-hpack|org.eclipse.jetty.http2.hpack
|
||||
org/eclipse/jetty/http2|http2-server|org.eclipse.jetty.http2.server
|
||||
org/eclipse/jetty|jetty-io|org.eclipse.jetty.io
|
||||
org/eclipse/jetty|jetty-jaas|org.eclipse.jetty.jaas
|
||||
org/eclipse/jetty|jetty-jaspi|org.eclipse.jetty.security.jaspi
|
||||
org/eclipse/jetty|jetty-jmx|org.eclipse.jetty.jmx
|
||||
org/eclipse/jetty|jetty-jndi|org.eclipse.jetty.jndi
|
||||
org/eclipse/jetty/osgi|jetty-osgi-alpn|org.eclipse.jetty.osgi.alpn.fragment
|
||||
org/eclipse/jetty/osgi|jetty-osgi-boot|org.eclipse.jetty.osgi.boot
|
||||
org/eclipse/jetty/osgi|jetty-osgi-boot-jsp|org.eclipse.jetty.osgi.boot.jsp
|
||||
org/eclipse/jetty/osgi|jetty-osgi-boot-warurl|org.eclipse.jetty.osgi.boot.warurl
|
||||
org/eclipse/jetty/osgi|jetty-httpservice|org.eclipse.jetty.osgi.httpservice
|
||||
org/eclipse/jetty|jetty-plus|org.eclipse.jetty.plus
|
||||
org/eclipse/jetty|jetty-proxy|org.eclipse.jetty.proxy
|
||||
org/eclipse/jetty|jetty-rewrite|org.eclipse.jetty.rewrite
|
||||
org/eclipse/jetty|jetty-security|org.eclipse.jetty.security
|
||||
org/eclipse/jetty|jetty-server|org.eclipse.jetty.server
|
||||
org/eclipse/jetty|jetty-servlet|org.eclipse.jetty.servlet
|
||||
org/eclipse/jetty|jetty-servlets|org.eclipse.jetty.servlets
|
||||
org/eclipse/jetty|jetty-util|org.eclipse.jetty.util
|
||||
org/eclipse/jetty|jetty-util-ajax|org.eclipse.jetty.util.ajax
|
||||
org/eclipse/jetty|jetty-webapp|org.eclipse.jetty.webapp
|
||||
org/eclipse/jetty/websocket|websocket-api|org.eclipse.jetty.websocket.api
|
||||
org/eclipse/jetty/websocket|websocket-client|org.eclipse.jetty.websocket.client
|
||||
org/eclipse/jetty/websocket|websocket-common|org.eclipse.jetty.websocket.common
|
||||
org/eclipse/jetty/websocket|javax-websocket-client-impl|org.eclipse.jetty.websocket.javax.websocket
|
||||
org/eclipse/jetty/websocket|javax-websocket-server-impl|org.eclipse.jetty.websocket.javax.websocket.server
|
||||
org/eclipse/jetty/websocket|websocket-server|org.eclipse.jetty.websocket.server
|
||||
org/eclipse/jetty/websocket|websocket-servlet|org.eclipse.jetty.websocket.servlet
|
||||
org/eclipse/jetty|jetty-xml|org.eclipse.jetty.xml"
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Static bundles — these ship with the official Eclipse Jetty p2 repo but
|
||||
# have their own fixed version, independent of the Jetty release.
|
||||
# Format: "download-url|osgi-bundle-symbolic-name|bundle-version"
|
||||
#
|
||||
# javax.security.auth.message is the JASPIC 1.0 API from Eclipse Orbit.
|
||||
# Neither this project's code nor any Import-Package in our bundles actually
|
||||
# references it, so it is harmless to omit. It is included here for
|
||||
# completeness, mirrored from the previous Jetty p2 repository.
|
||||
# ---------------------------------------------------------------------------
|
||||
STATIC_BUNDLES="\
|
||||
https://p2.sapsailing.com/p2/jetty-9.4.57.v20241219/plugins/javax.security.auth.message_1.0.0.v201108011116.jar|javax.security.auth.message|1.0.0.v201108011116
|
||||
https://p2.sapsailing.com/p2/jetty-9.4.57.v20241219/plugins/javax.security.auth.message.source_1.0.0.v201108011116.jar|javax.security.auth.message.source|1.0.0.v201108011116
|
||||
https://p2.sapsailing.com/p2/jetty-9.4.57.v20241219/plugins/org.eclipse.jetty.osgi-servlet-api_3.1.0.M3.jar|org.eclipse.jetty.osgi-servlet-api|3.1.0.M3
|
||||
https://p2.sapsailing.com/p2/jetty-9.4.57.v20241219/plugins/org.eclipse.jetty.osgi-servlet-api.source_3.1.0.M3.jar|org.eclipse.jetty.osgi-servlet-api.source|3.1.0.M3"
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Download bundles and source bundles
|
||||
# ---------------------------------------------------------------------------
|
||||
echo ""
|
||||
echo "--- Downloading bundles from Maven Central ---"
|
||||
DOWNLOAD_ERRORS=0
|
||||
|
||||
while IFS='|' read -r GROUP ARTIFACT BSN; do
|
||||
[ -z "${GROUP}" ] && continue
|
||||
|
||||
JAR_URL="${MAVEN_CENTRAL}/${GROUP}/${ARTIFACT}/${VERSION}/${ARTIFACT}-${VERSION}.jar"
|
||||
SRC_URL="${MAVEN_CENTRAL}/${GROUP}/${ARTIFACT}/${VERSION}/${ARTIFACT}-${VERSION}-sources.jar"
|
||||
|
||||
echo " ${ARTIFACT} ..."
|
||||
# Download main bundle
|
||||
if ! curl -sfL -o "${PLUGINS_DIR}/${BSN}_${VERSION}.jar" "${JAR_URL}"; then
|
||||
echo " ERROR: Failed to download ${JAR_URL}"
|
||||
DOWNLOAD_ERRORS=$((DOWNLOAD_ERRORS + 1))
|
||||
continue
|
||||
fi
|
||||
|
||||
# Download source bundle (non-fatal if missing)
|
||||
if ! curl -sfL -o "${PLUGINS_DIR}/${BSN}.source_${VERSION}.jar" "${SRC_URL}"; then
|
||||
echo " WARNING: No source jar for ${ARTIFACT}"
|
||||
rm -f "${PLUGINS_DIR}/${BSN}.source_${VERSION}.jar"
|
||||
fi
|
||||
done <<EOF
|
||||
${BUNDLES}
|
||||
EOF
|
||||
|
||||
# Download static (non-Jetty-versioned) bundles
|
||||
echo ""
|
||||
echo "--- Downloading static bundles ---"
|
||||
|
||||
while IFS='|' read -r URL BSN BVERSION; do
|
||||
[ -z "${URL}" ] && continue
|
||||
echo " ${BSN} ${BVERSION} ..."
|
||||
if ! curl -sfL -o "${PLUGINS_DIR}/${BSN}_${BVERSION}.jar" "${URL}"; then
|
||||
echo " WARNING: Failed to download ${URL}"
|
||||
echo " This bundle is optional and can be copied manually"
|
||||
echo " from a previous Jetty p2 repo if needed."
|
||||
rm -f "${PLUGINS_DIR}/${BSN}_${BVERSION}.jar"
|
||||
fi
|
||||
done <<EOF
|
||||
${STATIC_BUNDLES}
|
||||
EOF
|
||||
|
||||
if [ ${DOWNLOAD_ERRORS} -gt 0 ]; then
|
||||
echo ""
|
||||
echo "ERROR: ${DOWNLOAD_ERRORS} bundle(s) failed to download. Aborting."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo " Downloaded $(ls "${PLUGINS_DIR}"/*.jar 2>/dev/null | wc -l) jar files."
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Create the feature.xml
|
||||
# This wraps all the downloaded bundles into a single installable feature
|
||||
# called "org.eclipse.jetty.bundles.f" — matching the existing p2 repo.
|
||||
# ---------------------------------------------------------------------------
|
||||
echo ""
|
||||
echo "--- Generating feature.xml ---"
|
||||
|
||||
cat > "${FEATURES_DIR}/feature.xml" <<FEATURE_HEADER
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<feature
|
||||
id="org.eclipse.jetty.bundles.f"
|
||||
label="Jetty Bundles"
|
||||
version="${VERSION}">
|
||||
|
||||
<description>
|
||||
Jetty ${VERSION} bundles for OSGi, built from Maven Central artifacts.
|
||||
</description>
|
||||
|
||||
<license url="http://www.apache.org/licenses/LICENSE-2.0">
|
||||
Apache License 2.0 / Eclipse Public License 1.0
|
||||
</license>
|
||||
|
||||
FEATURE_HEADER
|
||||
|
||||
while IFS='|' read -r GROUP ARTIFACT BSN; do
|
||||
[ -z "${GROUP}" ] && continue
|
||||
cat >> "${FEATURES_DIR}/feature.xml" <<PLUGIN_ENTRY
|
||||
<plugin
|
||||
id="${BSN}"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="${VERSION}"
|
||||
unpack="false"/>
|
||||
|
||||
PLUGIN_ENTRY
|
||||
|
||||
# Also add the source plugin if we downloaded it
|
||||
if [ -f "${PLUGINS_DIR}/${BSN}.source_${VERSION}.jar" ]; then
|
||||
cat >> "${FEATURES_DIR}/feature.xml" <<SOURCE_ENTRY
|
||||
<plugin
|
||||
id="${BSN}.source"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="${VERSION}"
|
||||
unpack="false"/>
|
||||
|
||||
SOURCE_ENTRY
|
||||
fi
|
||||
done <<EOF
|
||||
${BUNDLES}
|
||||
EOF
|
||||
|
||||
# Add static bundles to the feature
|
||||
while IFS='|' read -r URL BSN BVERSION; do
|
||||
[ -z "${URL}" ] && continue
|
||||
if [ -f "${PLUGINS_DIR}/${BSN}_${BVERSION}.jar" ]; then
|
||||
cat >> "${FEATURES_DIR}/feature.xml" <<STATIC_ENTRY
|
||||
<plugin
|
||||
id="${BSN}"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="${BVERSION}"
|
||||
unpack="false"/>
|
||||
|
||||
STATIC_ENTRY
|
||||
fi
|
||||
done <<EOF
|
||||
${STATIC_BUNDLES}
|
||||
EOF
|
||||
|
||||
echo "</feature>" >> "${FEATURES_DIR}/feature.xml"
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Also create a source feature (org.eclipse.jetty.bundles.f.source)
|
||||
# that references the source bundles – matching the existing p2 structure.
|
||||
# ---------------------------------------------------------------------------
|
||||
SOURCE_FEATURE_DIR="${STAGING_DIR}/features/org.eclipse.jetty.bundles.f.source_${VERSION}"
|
||||
mkdir -p "${SOURCE_FEATURE_DIR}"
|
||||
|
||||
cat > "${SOURCE_FEATURE_DIR}/feature.xml" <<SOURCE_FEATURE_HEADER
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<feature
|
||||
id="org.eclipse.jetty.bundles.f.source"
|
||||
label="Jetty Bundles (Sources)"
|
||||
version="${VERSION}">
|
||||
|
||||
<description>
|
||||
Source bundles for Jetty ${VERSION}, built from Maven Central artifacts.
|
||||
</description>
|
||||
|
||||
<license url="http://www.apache.org/licenses/LICENSE-2.0">
|
||||
Apache License 2.0 / Eclipse Public License 1.0
|
||||
</license>
|
||||
|
||||
SOURCE_FEATURE_HEADER
|
||||
|
||||
while IFS='|' read -r GROUP ARTIFACT BSN; do
|
||||
[ -z "${GROUP}" ] && continue
|
||||
if [ -f "${PLUGINS_DIR}/${BSN}.source_${VERSION}.jar" ]; then
|
||||
cat >> "${SOURCE_FEATURE_DIR}/feature.xml" <<SOURCE_PLUGIN_ENTRY
|
||||
<plugin
|
||||
id="${BSN}.source"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="${VERSION}"
|
||||
unpack="false"/>
|
||||
|
||||
SOURCE_PLUGIN_ENTRY
|
||||
fi
|
||||
done <<EOF
|
||||
${BUNDLES}
|
||||
EOF
|
||||
|
||||
# Add static source bundles to the source feature
|
||||
while IFS='|' read -r URL BSN BVERSION; do
|
||||
[ -z "${URL}" ] && continue
|
||||
# Only include entries whose BSN ends with .source
|
||||
case "${BSN}" in
|
||||
*.source)
|
||||
if [ -f "${PLUGINS_DIR}/${BSN}_${BVERSION}.jar" ]; then
|
||||
cat >> "${SOURCE_FEATURE_DIR}/feature.xml" <<STATIC_SRC_ENTRY
|
||||
<plugin
|
||||
id="${BSN}"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="${BVERSION}"
|
||||
unpack="false"/>
|
||||
|
||||
STATIC_SRC_ENTRY
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
done <<EOF
|
||||
${STATIC_BUNDLES}
|
||||
EOF
|
||||
|
||||
echo "</feature>" >> "${SOURCE_FEATURE_DIR}/feature.xml"
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Publish the p2 repository using Eclipse's FeaturesAndBundlesPublisher
|
||||
# ---------------------------------------------------------------------------
|
||||
echo ""
|
||||
echo "--- Publishing p2 repository ---"
|
||||
echo " Source: ${STAGING_DIR}"
|
||||
echo " Destination: ${REPO_DIR}"
|
||||
|
||||
eclipse -nosplash -verbose \
|
||||
-application org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher \
|
||||
-metadataRepository "file:${REPO_DIR}" \
|
||||
-artifactRepository "file:${REPO_DIR}" \
|
||||
-source "${STAGING_DIR}" \
|
||||
-publishArtifacts \
|
||||
-configs gtk.linux.x86_64
|
||||
|
||||
echo ""
|
||||
echo "=== SUCCESS ==="
|
||||
echo ""
|
||||
echo "p2 repository created at: ${REPO_DIR}"
|
||||
echo ""
|
||||
echo "To use it locally, update your target platform definition to point to:"
|
||||
echo " file:${REPO_DIR}"
|
||||
echo ""
|
||||
echo "To upload to sapsailing.com and update all workspace references, run:"
|
||||
echo " ./uploadAndActivateJettyP2Repo.sh ${VERSION}"
|
||||
@@ -2,8 +2,8 @@
|
||||
source ./../../../configuration/correctFilePathInRelationToCurrentOs.sh
|
||||
# generate a target definition pointing to the locally built p2 repo from the race-analysis-p2-remote target defintion
|
||||
base="../definitions/race-analysis-p2"
|
||||
remote_repo="https://p2.sapsailing.com/p2/sailing/"
|
||||
remote_repo_aws_sdk="https://p2.sapsailing.com/p2/aws-sdk/"
|
||||
remote_repo="https://download.eclipse.org/sailing-analytics/p2/sailing/"
|
||||
remote_repo_aws_sdk="https://download.eclipse.org/sailing-analytics/p2/aws-sdk/"
|
||||
# reading the filepath and editing it, so it fits for eclipse
|
||||
# currently safely works for cygwin, gitbash and linux
|
||||
local_repo=$(correct_file_path "`readlink -f ../../com.sap.sailing.targetplatform.base/target/repository/`")
|
||||
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
#!/bin/bash
|
||||
# Determines the latest Jetty 9.4 version from the official Jetty p2 repository, assuming that's what we will also find
|
||||
# at https://download.eclipse.org/sailing-analytics/p2/jetty-9.4.* and updates all references in the workspace.
|
||||
# The upload should have taken place before by running the .github/workflow/build-jetty-p2.yml workflow.
|
||||
# Specific components such as apache-jsp and jetty-osgi-boot-jsp are updated to the new version, too, but not from the p2 repo but directly from Maven Central, as the p2 repo does not contain the source bundles.
|
||||
VERSION=$( curl https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/ | grep "/jetty/updates/jetty-bundles-9.x" | sed -e 's/^.*> \?\(9\.4\.[0-9]*\.v[0-9]*\)<.*$/\1/' )
|
||||
echo "Found version ${VERSION}"
|
||||
OLD_VERSION=$( cat ../definitions/race-analysis-p2-remote.target | grep '\(<unit id="org\.eclipse\.jetty\.bundles\.f\.feature\.group" version="\)\([^"]*\)\("\/>\)' | sed -e 's/\(<unit id="org\.eclipse\.jetty\.bundles\.f\.feature\.group" version="\)\([^"]*\)\("\/>\).*$/\2/' )
|
||||
echo "Found old version ${OLD_VERSION}"
|
||||
echo "Updating com.sap.sse.feature.runtime/feature.xml from Jetty bundles version ${OLD_VERSION} to ${VERSION} ..."
|
||||
sed -i -e 's/version="'${OLD_VERSION}'"/version="'${VERSION}'"/' ../../com.sap.sse.feature.runtime/feature.xml
|
||||
echo "Updating com.sap.sailing.targetplatform.base/features/target-base/feature.xml from Jetty bundles version ${OLD_VERSION} to ${VERSION} ..."
|
||||
sed -i -e 's/version="'${OLD_VERSION}'"/version="'${VERSION}'"/' ../../com.sap.sailing.targetplatform.base/features/target-base/feature.xml
|
||||
echo "Removing old versions of apache-jsp and osgi.boot.jsp from target-base..."
|
||||
rm "${TARGET_BASE_PLUGINS_DIR}/apache-jsp-9.4*.jar"
|
||||
rm "${TARGET_BASE_PLUGINS_DIR}/jetty-osgi-boot-jsp-9.4*.jar"
|
||||
echo "Downloading new versions..."
|
||||
wget -O "${TARGET_BASE_PLUGINS_DIR}/apache-jsp-${VERSION}.jar" https://repo1.maven.org/maven2/org/eclipse/jetty/apache-jsp/${VERSION}/apache-jsp-${VERSION}.jar
|
||||
wget -O "${TARGET_BASE_PLUGINS_DIR}/apache-jsp-${VERSION}-sources.jar" https://repo1.maven.org/maven2/org/eclipse/jetty/apache-jsp/${VERSION}/apache-jsp-${VERSION}-sources.jar
|
||||
wget -O "${TARGET_BASE_PLUGINS_DIR}/jetty-osgi-boot-jsp-${VERSION}.jar" https://repo1.maven.org/maven2/org/eclipse/jetty/osgi/jetty-osgi-boot-jsp/${VERSION}/jetty-osgi-boot-jsp-${VERSION}.jar
|
||||
wget -O "${TARGET_BASE_PLUGINS_DIR}/jetty-osgi-boot-jsp-${VERSION}-sources.jar" https://repo1.maven.org/maven2/org/eclipse/jetty/osgi/jetty-osgi-boot-jsp/${VERSION}/jetty-osgi-boot-jsp-${VERSION}-sources.jar
|
||||
echo "Adding new versions to git..."
|
||||
git add "${TARGET_BASE_PLUGINS_DIR}/*.jar"
|
||||
echo "Updating target platform definition..."
|
||||
sed -i -e 's/\(<unit id="org\.eclipse\.jetty\.bundles\.f\.\(source\.\)\?feature\.group" version="\)[^"]*\("\/>\)/\1'${VERSION}'\3/' -e 's/\(<repository location="https:\/\/download\.eclipse\.org\/sailing-analytics\/p2\/\)jetty.*\(\/"\/>\)/\1jetty-'${VERSION}'\2/' ../definitions/race-analysis-p2-remote.target
|
||||
echo "Your target platform definition now points to https://download.eclipse.org/sailing-analytics/p2/jetty-${VERSION} for the Jetty bundles. Now please update the org.eclipse.jetty.osgi.boot.jsp[.source] and org.eclipse.jetty.apache-jsp[.source] bundles in java/com.sap.sailing.targetplatform.base/plugins/target-base and try a build with the -v parameter, using a local target platform. If this works, run the createLocalBaseP2repository.sh and uploadRepositoryToServer.sh scripts to produce an updated p2 sailing repository. Check for the new versions of apache-jsp and osgi.boot.jsp here https://repo1.maven.org/maven2/org/eclipse/jetty/apache-jsp/ and here https://repo1.maven.org/maven2/org/eclipse/jetty/osgi/jetty-osgi-boot/, respectively."
|
||||
rm -rf "${TMP_FOLDER}"
|
||||
@@ -77,6 +77,20 @@ From the list shown, pick the bundle you need and add it to the '*.target' file,
|
||||
* Select the features of the p2 repository you want to use in the project
|
||||
* Reload the target platform
|
||||
|
||||
## Upgrading the Jetty p2 Repository
|
||||
|
||||
We're maintaining a p2 repository with the Jetty version we include in our target platform. As of this writing, we're using version 9.4.58. The p2 repository lives at [https://download.eclipse.org/sailing-analytics/p2/jetty-9.4.58.v20250814/](https://download.eclipse.org/sailing-analytics/p2/jetty-9.4.58.v20250814/).
|
||||
|
||||
We create this p2 repository by running the ``.github/workflow/build-jetty-p2.yml`` workflow (see [here](https://github.com/eclipse-sailing-analytics/sailing-analytics/actions/workflows/build-jetty-p2.yml)). It has a "workflow_dispatch" configuration and requires manual triggering. The Jetty version for which to produce the p2 repository is contained in the workflow file (``echo "VERSION=9.4.58.v20250814" >>"${GITHUB_ENV}"``) and can be updated to the version desired. After running the workflow successfully, the p2 repository with the new version number will show under ``https://download.eclipse.org/sailing-analytics/p2/jetty-${VERSION}``.
|
||||
|
||||
Next, the target platform definition must be adjusted. For this, in your local checked-out Git workspace, run the script ``java/com.sap.sailing.targetplatform/scripts/activateJettyP2Repo.sh``. It will modify the ``feature.xml`` files and your ``*.target`` files so they point to the correct version. Furthermore, it grabs two additional OSGi bundles from Maven Central: ``apache-jsp`` and ``jetty-osgi-boot-jsp``, both used for OSGi/JSP support inside Jetty. Their versions must match that of the Jetty p2 repository exactly but are not part of the Jetty shipment itself. Therefore, they need to go into the "sailing base p2" repository. The ``activateJettyP2Repo.sh`` puts them into the local definition of that "sailing base p2" repository, which then needs to be built and uploaded to the ``download.eclipse.org/sailing-analytics/p2`` area.
|
||||
|
||||
For this, once you commit and push the changes to the ``java/com.sap.sailing.targetplatform.base`` project to the ``main`` branch, the ``build-sailing-base-p2`` workflow will be triggered by these changes and build and upload the new "sailing base p2" repository. With this, your target platform should be up to date again.
|
||||
|
||||
Before pushing all these changes to the ``main`` branch you may also want to consider testing things locally and even with a non-``main`` branch build through Github Actions. For this, use the ``java/com.sap.sailing.targetplatform/scripts/createJettyP2RepoFromMavenCentral.sh`` script and the ``java/com.sap.sailing.targetplatform/scripts/createLocalBaseP2repository.sh`` script to test the p2 repositories in their new versions prior to uploading them. Also, work with the ``local_target_platform`` input parameter of the [release](https://github.com/eclipse-sailing-analytics/sailing-analytics/actions/workflows/release.yml) workflow and set it to ``true`` for a branch build after having made your changes to the target platform definition and "sailing base p2" repository contents on your branch.
|
||||
|
||||
Merge to ``main`` only when such measures have produced "green" builds, and don't forget to inform your co-developers, e.g., through the [Github Discussions](https://github.com/eclipse-sailing-analytics/sailing-analytics/discussions) section of the repository.
|
||||
|
||||
## Working with the Amazon AWS SDK Java API
|
||||
|
||||
A Java API exists for the Amazon Web Services (AWS) in the form of a modular Software Development Kit (SDK). It can be found, e.g., on Maven Central, under the group ID ``software.amazon.awssdk``. A core module and various service-specific modules exist, e.g., for load balancing, Route 53 DNS handling, or the EC2 base infrastructure. Source JARs are available for the API, too, and the API has further dependencies to other artifacts. None of these artifacts is OSGi-enabled.
|
||||
|
||||
Reference in New Issue
Block a user