OP-1043 | Implement soft deletion #466
Workflow file for this run
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
# 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 |