Add addon rest-api
#3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# SPDX-FileCopyrightText: Copyright DB InfraGO AG and contributors | |
# SPDX-License-Identifier: CC0-1.0 | |
on: | |
push: | |
tags: ["*/v*.*.*"] # tags must be <addon-name>/v<version> | |
pull_request: | |
branches: [main] | |
jobs: | |
setup-build-release: | |
name: Setup, build, and release | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
capella-version: [6.0.0] | |
# capella-version: [6.0.0, 7.0.0] | |
include: | |
- capella-version: 6.0.0 | |
java-execution-environment: JavaSE-17 | |
jdk-version: 17.0.6+10 | |
# - capella-version: 7.0.0 | |
# java-execution-environment: JavaSE-17 | |
# jdk-version: 17.0.11+9 | |
steps: | |
- name: Identify addon | |
id: identify_addon | |
run: | | |
if [ ${{ github.event_name }} == "pull_request" ]; then | |
echo "Identifying addon from pull request" | |
ADDON=${{ github.event.pull_request.base.ref }} | |
elif [ ${{ github.event_name }} == "push" ]; then | |
echo "Identifying addon from push" | |
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then | |
echo "This push is a tag: ${GITHUB_REF#refs/tags/}" | |
ADDON=$(echo "$GITHUB_REF" | sed -E 's|refs/tags/([^/]+)/.*|\1|') | |
else | |
echo "This push is not a tag." | |
ADDON=$(echo "${GITHUB_REF}" | sed -E 's|refs/heads/([^/]+)|\1|') | |
fi | |
fi | |
echo "addon=${ADDON}" >> $GITHUB_OUTPUT | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
- name: Set up `capella-addons` CLI tool | |
run: pip install . && pip show capella-addons | |
- name: Set up Capella from ghcr.io/dsd-dbs/capella-dockerimages/capella/remote:${{ matrix.capella-version }}-selected-dropins-main | |
run: | | |
docker pull ghcr.io/dsd-dbs/capella-dockerimages/capella/remote:${{ matrix.capella-version }}-selected-dropins-main | |
if [ ! -d /tmp/capella_${{ matrix.capella-version }} ]; then | |
docker run --platform=linux/x86_64 --rm -v /tmp:/tmp --entrypoint="" --user=root \ | |
ghcr.io/dsd-dbs/capella-dockerimages/capella/remote:${{ matrix.capella-version }}-selected-dropins-main \ | |
bash -c "cp -r /opt/capella /tmp/capella_${{ matrix.capella-version }}" | |
fi | |
- name: Build `.classpath` file | |
run: | | |
cd ${{ steps.identify_addon.outputs.addon }} | |
python -m capella_addons build-classpath \ | |
--java-execution-environment=${{ matrix.java-execution-environment }} \ | |
$(find src -type f -name "Main.java") \ | |
/tmp/capella_${{ matrix.capella-version }} | |
- name: Set up OpenAPI generator | |
if: steps.identify_addon.outputs.addon == 'rest-api' | |
run: | | |
curl -Lo /opt/openapi-generator.jar \ | |
https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.9.0/openapi-generator-cli-7.9.0.jar | |
echo "java -jar /opt/openapi-generator.jar \$@" > /usr/local/bin/openapi-generator | |
chmod +x /usr/local/bin/openapi-generator | |
- name: Run OpenAPI generator | |
if: steps.identify_addon.outputs.addon == 'rest-api' | |
run: | | |
cd ${{ steps.identify_addon.outputs.addon }} | |
bash bin/jaxrs-jersey.zsh | |
rm -rf /tmp/src; cp -r src /tmp | |
# - name: Set up Eclipse Temurin JDK ${{ matrix.jdk-version }} | |
# uses: actions/setup-java@v3 | |
# with: | |
# java-version: ${{ matrix.jdk-version }} | |
# distribution: 'temurin' | |
# java-package: "jdk" | |
# - name: Set up Eclipse JDT language server 1.40.0 | |
# run: | | |
# if [ ! -d /tmp/jdtls ]; then mkdir /tmp/jdtls; fi | |
# cd /tmp/jdtls | |
# if [ ! -f jdtls.tar.gz ]; then | |
# curl -Lo jdtls.tar.gz \ | |
# https://download.eclipse.org/jdtls/milestones/1.40.0/jdt-language-server-1.40.0-202409261450.tar.gz | |
# fi | |
# tar xzf jdtls.tar.gz | |
# rm *.tar.gz | |
# - name: Build workspace | |
# run: | | |
# cd ${{ steps.identify_addon.outputs.addon }} | |
# rm -rf target | |
# python -m capella_addons -v \ | |
# build-workspace \ | |
# --java-execution-environment=${{ matrix.java-execution-environment }} \ | |
# $JAVA_HOME /tmp/jdtls | |
# - name: Package addon | |
# run: | | |
# cd ${{ steps.identify_addon.outputs.addon }} | |
# python -m capella_addons -v \ | |
# package \ | |
# $JAVA_HOME \ | |
# /tmp/capella_${{ matrix.capella-version }} | |
# cp target/*.jar /tmp | |
# - name: Create release | |
# id: create_release | |
# uses: actions/create-release@v1 | |
# env: | |
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# with: | |
# tag_name: ${{ env.addon }}.${{ github.ref }} | |
# release_name: ${{ env.addon }} ${{ github.ref }} | |
# draft: false | |
# prerelease: false | |
# - name: Publish release | |
# uses: actions/upload-release-asset@v1 | |
# env: | |
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# with: | |
# upload_url: ${{ steps.create_release.outputs.upload_url }} | |
# asset_path: ${{ env.addon }}/target/com.deutschebahn.rest-api_0.0.1.jar | |
# asset_name: com.deutschebahn.${{ env.addon }}_${{ github.ref }}.jar | |
# asset_content_type: application/java-archive |