Skip to content

OP-1043 | Implement soft deletion #466

OP-1043 | Implement soft deletion

OP-1043 | Implement soft deletion #466

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 BRANCH_NAME based on event type
if [[ "${GITHUB_EVENT_NAME}" == "pull_request" ]]; then
echo "BRANCH_NAME=${GITHUB_HEAD_REF}" >> $GITHUB_ENV
else
echo "BRANCH_NAME=${GITHUB_REF##*/}" >> $GITHUB_ENV
fi
# Determine FORK_REPO with fallback logic
if [[ -n "${GITHUB_HEAD_REPOSITORY}" ]]; then
echo "FORK_REPO=${GITHUB_HEAD_REPOSITORY}" >> $GITHUB_ENV
elif curl -s --head https://github.com/${GITHUB_ACTOR}/openhospital-core/tree/${BRANCH_NAME} | grep "HTTP/[12].* 2[0-9][0-9]" > /dev/null; then
echo "FORK_REPO=${GITHUB_ACTOR}/openhospital-core" >> $GITHUB_ENV
else
echo "FORK_REPO=informatici/openhospital-core" >> $GITHUB_ENV
fi
- 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