release-created #39
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: Codegen automate generation | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| release_version: | |
| type: string | |
| required: true | |
| description: "Release version (e.g., VX.X.X)" | |
| repository_dispatch: | |
| types: [release-created] | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| env: | |
| SWAGGER_URL: https://app.statflo.com/api/doc.json | |
| RELEASE_VERSION: ${{ inputs.release_version }} | |
| steps: | |
| - name: Set release version from webapp's release | |
| if: github.event.client_payload.release_version != '' | |
| run: echo "RELEASE_VERSION=${{ github.event.client_payload.release_version }}" >> $GITHUB_ENV | |
| - name: Validate and extract Release Version | |
| run: | | |
| clean_version=$(echo "${{ env.RELEASE_VERSION }}" | grep -oE 'V?[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9]+)?' || true) | |
| if [ -n "$clean_version" ]; then | |
| echo "RELEASE_VERSION=$clean_version" >> $GITHUB_ENV | |
| else | |
| echo "Error: Input does not contain a valid version format (X.X.X, VX.X.X, or VX.X.X-suffix)." | |
| exit 1 | |
| fi | |
| - uses: actions/checkout@v3 | |
| with: | |
| fetch-depth: 0 | |
| - name: Install GitHub CLI | |
| run: sudo apt-get install -y gh | |
| - name: Generate code from Swagger file | |
| run: | | |
| # Delete README.md to allow swagger-codegen generate it automatically | |
| rm -f README.md | |
| # Generate code from Swagger file | |
| java -jar ./bin/swagger-codegen-cli-3.0.62.jar generate -i $SWAGGER_URL -l java -o . -t ./templates \ | |
| --invoker-package com.statflo.client \ | |
| --model-package com.statflo.client.model \ | |
| --api-package com.statflo.client.api \ | |
| --additional-properties groupId=com.statflo,artifactId=statflo-java-sdk,releaseVersion=${{ env.RELEASE_VERSION }} \ | |
| -D dateLibrary=java8 | |
| - name: Commit and Push | |
| run: | | |
| git config --global user.name "github-actions[bot]" | |
| git config --global user.email "github-actions[bot]@users.noreply.github.com" | |
| git add . | |
| git commit -m "Update generated SDK (run number: ${GITHUB_RUN_NUMBER})" | |
| git push origin main | |
| - name: Create a release tag | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| run: | | |
| # Create new tag and push | |
| git tag ${{ env.RELEASE_VERSION }} | |
| git push origin ${{ env.RELEASE_VERSION }} | |
| gh release create ${{ env.RELEASE_VERSION }} --title "Release ${{ env.RELEASE_VERSION }}" --notes "Auto-generated release for ${{ env.RELEASE_VERSION }}" |