Skip to content

Rollback on WARN - HHH90000025: MariaDBDialect #551

Rollback on WARN - HHH90000025: MariaDBDialect

Rollback on WARN - HHH90000025: MariaDBDialect #551

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: Debug GitHub variables
run: |
echo "GITHUB_EVENT_NAME: ${GITHUB_EVENT_NAME}"
echo "GITHUB_HEAD_REPOSITORY: ${GITHUB_HEAD_REPOSITORY}"
echo "GITHUB_HEAD_REF: ${GITHUB_HEAD_REF}"
echo "GITHUB_REPOSITORY: ${GITHUB_REPOSITORY}"
echo "GITHUB_REF: ${GITHUB_REF}"
echo "GITHUB_ACTOR: ${GITHUB_ACTOR}"
- name: Determine PR source branch and fork repository
id: vars
run: |
# Set default FORK_REPO and BRANCH_NAME values.
BRANCH_NAME="${GITHUB_HEAD_REF:-${GITHUB_REF##*/}}"
if [[ "$GITHUB_EVENT_NAME" == "push" && "$GITHUB_REPOSITORY" == "informatici/openhospital-api" ]]; then
# For pushes to the main repository, default to the main core repo
FORK_REPO="informatici/openhospital-core"
else
# For pull requests or other pushes, use the contributor fork if applicable
if [[ -n "$GITHUB_HEAD_REPOSITORY" ]]; then
FORK_REPO="$GITHUB_HEAD_REPOSITORY"
else
# Check if the actor's repo exists with the branch
FORK_REPO="${GITHUB_ACTOR}/openhospital-core"
CHECK_BRANCH_URL="https://github.com/$FORK_REPO/tree/$BRANCH_NAME"
echo "Checking branch existence with: curl -s -o /dev/null -w \"%{http_code}\" $CHECK_BRANCH_URL"
if curl -s -o /dev/null -w "%{http_code}" "$CHECK_BRANCH_URL" | grep -q "200"; then
echo "Branch $BRANCH_NAME exists in $FORK_REPO."
else
# Fallback to the main repository if the branch doesn’t exist in the fork
FORK_REPO="informatici/openhospital-core"
fi
fi
fi
# Export FORK_REPO and BRANCH_NAME to GITHUB_ENV for the next step
echo "BRANCH_NAME=$BRANCH_NAME" >> $GITHUB_ENV
echo "FORK_REPO=$FORK_REPO" >> $GITHUB_ENV
- name: Log variables
run: |
echo "FORK_REPO: ${{ env.FORK_REPO }}"
echo "BRANCH_NAME: ${{ env.BRANCH_NAME }}"
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17
java-package: jdk
- name: Checkout core
run: |
git clone --depth=1 --no-single-branch https://github.com/${{ env.FORK_REPO }}.git openhospital-core
pushd openhospital-core
git checkout -B ${{ env.BRANCH_NAME }} origin/${{ env.BRANCH_NAME }} || git checkout develop
popd
- name: Install core
run: |
pushd openhospital-core
mvn install -DskipTests=true
popd
- name: Generate JWT Token
id: jwt
run: echo "token=7DlyD1SHR5pCa4HGgTLWSYm8YQ7oRL1wpPbxyjWyHU44vUrqrooRu3lHVFSXWChesc" >> $GITHUB_OUTPUT
- 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
- name: Run API
run: |
pushd target
java -cp "openhospital-api-0.1.0.jar:rsc/:static/" org.springframework.boot.loader.launch.JarLauncher &
sleep 60
popd
- 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
if: github.event_name == 'pull_request'
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 destination branch oh.yaml and the generated oh_rev.yaml
- name: Checkout Base Branch
run: |
git fetch origin ${{ github.event.pull_request.base.ref }}:base_branch
git checkout base_branch
- name: Run OpenAPI Spec breaking action
id: oasdiff
uses: oasdiff/oasdiff-action/breaking@main
with:
base: openapi/oh.yaml # destination branch oh.yaml
revision: openapi/oh_rev.yaml # generated oh_rev.yaml
format: detailed
# fail-on-diff: false
- name: Show breaking changes output
run: |
echo "Breaking changes output: ${{ steps.oasdiff.outputs.breaking }}"
if [[ "${{ steps.oasdiff.outputs.breaking }}" != "No breaking changes" ]]; then
echo "Warning: Breaking changes detected."
exit 1
fi