openapi-updated #119
This file contains hidden or 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
| name: Regenerate | |
| on: | |
| repository_dispatch: | |
| types: [openapi-updated] | |
| workflow_dispatch: | |
| jobs: | |
| generate: | |
| name: Regenerate from OpenAPI | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| fetch-depth: 0 | |
| - name: Setup Java | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: 'temurin' | |
| java-version: '17' | |
| - name: Install OpenAPI Generator | |
| run: npm install -g @openapitools/openapi-generator-cli | |
| - name: Fetch latest OpenAPI spec | |
| run: | | |
| curl -f -o openapi.yaml https://zernio.com/openapi.yaml | |
| echo "Fetched OpenAPI spec" | |
| - name: Generate SDK | |
| run: | | |
| openapi-generator-cli generate \ | |
| -i openapi.yaml \ | |
| -g java \ | |
| -o . \ | |
| --skip-validate-spec \ | |
| --global-property skipFormModel=false \ | |
| --additional-properties=artifactId=zernio-sdk,groupId=dev.zernio,apiPackage=dev.zernio.api,modelPackage=dev.zernio.model,invokerPackage=dev.zernio,library=native \ | |
| --git-user-id=zernio-dev \ | |
| --git-repo-id=zernio-java | |
| - name: Remove generated workflow files | |
| run: | | |
| rm -f .github/workflows/maven.yml || true | |
| git checkout .github/workflows/generate.yml | |
| - name: Build | |
| run: mvn compile -q | |
| - name: Check for changes | |
| id: changes | |
| run: | | |
| git add -A | |
| if git diff --staged --quiet; then | |
| echo "has_changes=false" >> $GITHUB_OUTPUT | |
| else | |
| echo "has_changes=true" >> $GITHUB_OUTPUT | |
| fi | |
| - name: Get next version | |
| if: steps.changes.outputs.has_changes == 'true' | |
| id: version | |
| run: | | |
| LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.0.0") | |
| NEW_VERSION=$(echo $LATEST_TAG | awk -F. '{printf "v%d.%d.%d", $1, $2, $3+1}' | sed 's/vv/v/') | |
| MVN_VERSION=$(echo $NEW_VERSION | sed 's/v//') | |
| echo "new_version=$NEW_VERSION" >> $GITHUB_OUTPUT | |
| echo "mvn_version=$MVN_VERSION" >> $GITHUB_OUTPUT | |
| - name: Update pom version | |
| if: steps.changes.outputs.has_changes == 'true' | |
| run: | | |
| mvn versions:set -DnewVersion=${{ steps.version.outputs.mvn_version }} -DgenerateBackupPoms=false || true | |
| - name: Commit and push | |
| if: steps.changes.outputs.has_changes == 'true' | |
| run: | | |
| git config user.name "github-actions[bot]" | |
| git config user.email "github-actions[bot]@users.noreply.github.com" | |
| git add -A | |
| git commit -m "chore: regenerate from OpenAPI spec | |
| - Auto-generated SDK updates | |
| - Version: ${{ steps.version.outputs.new_version }}" | |
| git push | |
| - name: Create GitHub Release | |
| if: steps.changes.outputs.has_changes == 'true' | |
| uses: softprops/action-gh-release@v1 | |
| with: | |
| tag_name: ${{ steps.version.outputs.new_version }} | |
| name: ${{ steps.version.outputs.new_version }} | |
| generate_release_notes: true | |
| body: | | |
| ## Auto-generated SDK Update | |
| **Maven** (add JitPack repository): | |
| ```xml | |
| <repositories> | |
| <repository> | |
| <id>jitpack.io</id> | |
| <url>https://jitpack.io</url> | |
| </repository> | |
| </repositories> | |
| <dependency> | |
| <groupId>com.github.zernio-dev</groupId> | |
| <artifactId>zernio-java</artifactId> | |
| <version>${{ steps.version.outputs.new_version }}</version> | |
| </dependency> | |
| ``` | |
| **Gradle**: | |
| ```groovy | |
| repositories { | |
| maven { url 'https://jitpack.io' } | |
| } | |
| dependencies { | |
| implementation 'com.github.zernio-dev:zernio-java:${{ steps.version.outputs.new_version }}' | |
| } | |
| ``` | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |