Skip to content

Fix Maven build

Fix Maven build #232

Workflow file for this run

# This workflow will build and run the application for oasdiff/oasdiff-action/breaking@main
# For more information see: https://github.com/oasdiff/oasdiff-action
name: OpenAPI breaking changes check
on: [push, pull_request]
env:
MAVEN_ARGS: '-B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
jobs:
opeanpi:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Checkout core
run: git clone --depth=50 --branch=develop https://github.com/informatici/openhospital-core.git openhospital-core
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17
java-package: jdk
- name: Install core
run: cd openhospital-core && mvn install -DskipTests=true && cd ..
- name: Generate JWT Token
id: jwt
run: echo "token=7DlyD1SHR5pCa4HGgTLWSYm8YQ7oRL1wpPbxyjWyHU44vUrqrooRu3lHVFSXWChesc" >> $GITHUB_OUTPUT
- name: Store branch name
id: extract_branch
run: |
if [[ "${GITHUB_EVENT_NAME}" == "push" ]]; then
echo "branch=$(echo ${GITHUB_REF##*/})" >> $GITHUB_OUTPUT
elif [[ "${GITHUB_EVENT_NAME}" == "pull_request" ]]; then
echo "branch=$(echo ${GITHUB_HEAD_REF})" >> $GITHUB_OUTPUT
else
echo "branch=INVALID_EVENT_BRANCH_UNKNOWN" >> $GITHUB_OUTPUT
fi
- name: Build with Maven
run: |
cp rsc/database.properties.dist rsc/database.properties
cp rsc/log4j2-spring.properties.dist rsc/log4j2-spring.properties
cp rsc/settings.properties.dist rsc/settings.properties
sed -e "s/JWT_TOKEN_SECRET/${{ steps.jwt.outputs.token }}/g" \
-e "s/API_HOST/localhost/g" \
-e "s/API_PORT/8080/g" rsc/application.properties.dist > rsc/application.properties
mvn install -DskipTests=true
echo ${{ steps.extract_branch.outputs.branch }}
- name: Run API
run: |
cd target
java -cp "openhospital-api-0.1.0.jar:rsc/:static/" org.springframework.boot.loader.launch.JarLauncher &
sleep 60
- name: Generate OpenAPI yaml
run: mvn springdoc-openapi:generate -Dspringdoc.outputFileName=oh_rev.yaml
# Step 1: Check if oh_rev.yaml differs from the committed version
- name: Install yq
run: |
sudo wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/bin/yq
sudo chmod +x /usr/bin/yq
- name: Install jq
run: sudo apt-get install -y jq
- name: Convert to JSON and sort
run: |
yq eval -o=json openapi/oh_rev.yaml > oh_rev.json
yq eval -o=json openapi/oh.yaml > oh.json
jq --sort-keys . oh_rev.json > sorted_oh_rev.json
jq --sort-keys . oh.json > sorted_oh.json
- name: Compare JSON files
run: |
if diff sorted_oh_rev.json sorted_oh.json; then
echo "No changes in OpenAPI spec. Everything is up to date."
else
echo "The OpenAPI spec has changed. Please update the committed version."
exit 1
fi
# Step 2: Check for breaking changes between committed oh.yaml and oh_rev.yaml
- name: Run OpenAPI Spec breaking action
id: oasdiff
uses: oasdiff/oasdiff-action/breaking@main
with:
base: openapi/oh.yaml # Committed version in the repository
revision: openapi/oh_rev.yaml # Generated version
# fail-on-diff: false
- name: Show breaking changes output
run: |
echo "Breaking changes output: ${{ steps.oasdiff.outputs.breaking }}"
if [[ "${{ steps.oasdiff.outputs.breaking }}" != "" ]]; then
echo "Warning: Breaking changes detected."
fi