Skip to content

release-created

release-created #39

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 }}"