From a3a5a2b8d378684204398f48f82ba03e5f71359b Mon Sep 17 00:00:00 2001 From: Thilina Shashimal Senarath Date: Mon, 18 Aug 2025 10:45:32 +0530 Subject: [PATCH] Fix asgardeo-ai build and add seperate workflows --- .github/workflows/publish-asgardeo-ai.yml | 99 ++++++++++++++ .github/workflows/publish-asgardeo.yml | 76 +++++++++++ .github/workflows/publish.yml | 151 ---------------------- packages/asgardeo-ai/pyproject.toml | 3 +- 4 files changed, 176 insertions(+), 153 deletions(-) create mode 100644 .github/workflows/publish-asgardeo-ai.yml create mode 100644 .github/workflows/publish-asgardeo.yml delete mode 100644 .github/workflows/publish.yml diff --git a/.github/workflows/publish-asgardeo-ai.yml b/.github/workflows/publish-asgardeo-ai.yml new file mode 100644 index 0000000..89996a8 --- /dev/null +++ b/.github/workflows/publish-asgardeo-ai.yml @@ -0,0 +1,99 @@ +name: Publish asgardeo-ai to PyPI + +on: + push: + tags: + - 'asgardeo-ai-v*' # e.g. asgardeo-ai-v1.2.3 + workflow_dispatch: + inputs: + version_type: + description: 'Version bump type (only used for manual dispatch)' + required: true + type: choice + default: patch + options: [patch, minor, major] + asgardeo_version: + description: 'Optional: set asgardeo version (e.g. ^1.2.3) if converting from path dep' + required: false + type: string + +jobs: + publish-asgardeo-ai: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + + - name: Install Poetry + uses: snok/install-poetry@v1 + with: + version: latest + virtualenvs-create: true + virtualenvs-in-project: true + + - name: Bump version (manual dispatch only) + if: github.event_name == 'workflow_dispatch' + working-directory: ./packages/asgardeo-ai + id: bump + run: | + echo "Bumping version: ${{ github.event.inputs.version_type }}" + poetry version ${{ github.event.inputs.version_type }} + NEW_VERSION=$(poetry version -s) + echo "new_version=$NEW_VERSION" >> $GITHUB_OUTPUT + echo "New asgardeo-ai version: $NEW_VERSION" + + - name: Ensure asgardeo dependency uses PyPI, not path + working-directory: ./packages/asgardeo-ai + run: | + if grep -q 'asgardeo = { path' pyproject.toml; then + echo 'Path dependency detected.' + if [ -n "${{ github.event.inputs.asgardeo_version }}" ]; then + TARGET="${{ github.event.inputs.asgardeo_version }}" + echo "Converting to version spec: $TARGET" + sed -i "s|asgardeo = { path = \"..\/asgardeo\", develop = true }|asgardeo = \"$TARGET\"|" pyproject.toml + else + echo 'ERROR: Provide asgardeo_version input to replace path dependency.' >&2 + exit 1 + fi + else + echo 'asgardeo already uses a version spec.' + fi + echo 'Current asgardeo dependency line:' + grep '^asgardeo\s*=' pyproject.toml || true + + - name: Validate tag vs pyproject version (tag builds) + if: startsWith(github.ref, 'refs/tags/asgardeo-ai-v') + working-directory: ./packages/asgardeo-ai + run: | + TAG_VERSION="${GITHUB_REF_NAME#asgardeo-ai-v}" + FILE_VERSION=$(poetry version -s) + if [ "$TAG_VERSION" != "$FILE_VERSION" ]; then + echo "Tag version ($TAG_VERSION) does not match pyproject.toml version ($FILE_VERSION)." >&2 + exit 1 + fi + echo "Tag and pyproject versions match: $TAG_VERSION" + + - name: Install dependencies & build wheel + working-directory: ./packages/asgardeo-ai + run: | + poetry install + poetry build + + - name: Publish to PyPI + working-directory: ./packages/asgardeo-ai + env: + POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_TOKEN }} + run: | + echo "Publishing asgardeo-ai to PyPI" + poetry publish + echo "Published asgardeo-ai" + + - name: Summary + working-directory: ./packages/asgardeo-ai + run: | + VERSION=$(poetry version -s) + echo "asgardeo-ai version published: $VERSION" diff --git a/.github/workflows/publish-asgardeo.yml b/.github/workflows/publish-asgardeo.yml new file mode 100644 index 0000000..5da0d20 --- /dev/null +++ b/.github/workflows/publish-asgardeo.yml @@ -0,0 +1,76 @@ +name: Publish asgardeo to PyPI + +on: + push: + tags: + - 'asgardeo-v*' # e.g. asgardeo-v1.2.3 + workflow_dispatch: + inputs: + version_type: + description: 'Version bump type (only used for manual dispatch)' + required: true + type: choice + default: patch + options: [patch, minor, major] + +jobs: + publish-asgardeo: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + + - name: Install Poetry + uses: snok/install-poetry@v1 + with: + version: latest + virtualenvs-create: true + virtualenvs-in-project: true + + - name: Bump version (manual dispatch only) + if: github.event_name == 'workflow_dispatch' + working-directory: ./packages/asgardeo + id: bump + run: | + echo "Bumping version: ${{ github.event.inputs.version_type }}" + poetry version ${{ github.event.inputs.version_type }} + NEW_VERSION=$(poetry version -s) + echo "new_version=$NEW_VERSION" >> $GITHUB_OUTPUT + echo "New version: $NEW_VERSION" + + - name: Validate tag vs pyproject version (tag builds) + if: startsWith(github.ref, 'refs/tags/asgardeo-v') + working-directory: ./packages/asgardeo + run: | + TAG_VERSION="${GITHUB_REF_NAME#asgardeo-v}" + FILE_VERSION=$(poetry version -s) + if [ "$TAG_VERSION" != "$FILE_VERSION" ]; then + echo "Tag version ($TAG_VERSION) does not match pyproject.toml version ($FILE_VERSION)." >&2 + exit 1 + fi + echo "Tag and pyproject versions match: $TAG_VERSION" + + - name: Install dependencies & build wheel + working-directory: ./packages/asgardeo + run: | + poetry install + poetry build + + - name: Publish to PyPI + working-directory: ./packages/asgardeo + env: + POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_TOKEN }} + run: | + echo "Publishing asgardeo to PyPI" + poetry publish + echo "Published asgardeo" + + - name: Summary + working-directory: ./packages/asgardeo + run: | + VERSION=$(poetry version -s) + echo "asgardeo version published: $VERSION" diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml deleted file mode 100644 index 61dd8f9..0000000 --- a/.github/workflows/publish.yml +++ /dev/null @@ -1,151 +0,0 @@ -name: Publish to PyPI - -on: - push: - tags: - - 'v*' # Trigger on version tags like v1.0.0, v1.2.3 - release: - types: [published] - workflow_dispatch: # Allow manual trigger - inputs: - version_type: - description: 'Version bump type' - required: true - type: choice - default: 'patch' - options: - - patch - - minor - - major - -jobs: - publish-asgardeo: - runs-on: ubuntu-latest - outputs: - new_version: ${{ steps.version.outputs.new_version }} - steps: - - uses: actions/checkout@v4 - - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: '3.10' - - - name: Install Poetry - uses: snok/install-poetry@v1 - with: - version: latest - virtualenvs-create: true - virtualenvs-in-project: true - - - name: Update version for manual trigger - id: version - if: github.event_name == 'workflow_dispatch' - working-directory: ./packages/asgardeo - run: | - echo "Bumping version: ${{ github.event.inputs.version_type }}" - poetry version ${{ github.event.inputs.version_type }} - NEW_VERSION=$(poetry version -s) - echo "new_version=$NEW_VERSION" >> $GITHUB_OUTPUT - echo "New asgardeo version: $NEW_VERSION" - - - name: Build asgardeo package - working-directory: ./packages/asgardeo - run: | - poetry install - poetry build - echo "✅ asgardeo package built successfully" - - - name: Publish asgardeo to PyPI - working-directory: ./packages/asgardeo - env: - POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_TOKEN }} - run: | - echo "🚀 Publishing asgardeo to PyPI..." - poetry publish - echo "✅ asgardeo published successfully" - - publish-asgardeo-ai: - runs-on: ubuntu-latest - needs: publish-asgardeo # Wait for asgardeo to be published first - steps: - - uses: actions/checkout@v4 - - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: '3.10' - - - name: Install Poetry - uses: snok/install-poetry@v1 - with: - version: latest - virtualenvs-create: true - virtualenvs-in-project: true - - - name: Update asgardeo-ai version for manual trigger - if: github.event_name == 'workflow_dispatch' - working-directory: ./packages/asgardeo-ai - run: | - echo "Bumping version: ${{ github.event.inputs.version_type }}" - poetry version ${{ github.event.inputs.version_type }} - NEW_AI_VERSION=$(poetry version -s) - echo "New asgardeo-ai version: $NEW_AI_VERSION" - - - name: Wait for asgardeo to be available on PyPI - run: | - echo "⏳ Waiting 2 minutes for asgardeo package to be available on PyPI..." - sleep 120 - echo "✅ Wait complete, proceeding with asgardeo-ai" - - - name: Update asgardeo dependency to use PyPI version - working-directory: ./packages/asgardeo-ai - run: | - if [ -n "${{ needs.publish-asgardeo.outputs.new_version }}" ]; then - ASGARDEO_VERSION="${{ needs.publish-asgardeo.outputs.new_version }}" - else - # For tag-based releases, extract version from tag - ASGARDEO_VERSION="${GITHUB_REF#refs/tags/v}" - fi - echo "🔄 Updating asgardeo dependency to version: $ASGARDEO_VERSION" - - # Replace local path dependency with PyPI version - sed -i "s/asgardeo = { path = \"..\/asgardeo\", develop = true }/asgardeo = \"^$ASGARDEO_VERSION\"/" pyproject.toml - - echo "✅ Updated dependency in pyproject.toml" - grep "asgardeo = " pyproject.toml - - - name: Build asgardeo-ai package - working-directory: ./packages/asgardeo-ai - run: | - poetry install - poetry build - echo "✅ asgardeo-ai package built successfully" - - - name: Publish asgardeo-ai to PyPI - working-directory: ./packages/asgardeo-ai - env: - POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_TOKEN }} - run: | - echo "🚀 Publishing asgardeo-ai to PyPI..." - poetry publish - echo "✅ asgardeo-ai published successfully" - - summary: - runs-on: ubuntu-latest - needs: [publish-asgardeo, publish-asgardeo-ai] - if: always() - steps: - - name: Publication Summary - run: | - echo "📋 Publication Summary" - echo "====================" - echo "✅ asgardeo package published" - echo "✅ asgardeo-ai package published" - - if [ -n "${{ needs.publish-asgardeo.outputs.new_version }}" ]; then - echo "🔖 Published version: ${{ needs.publish-asgardeo.outputs.new_version }}" - fi - - echo "" - echo "🎉 Publication workflow completed!" diff --git a/packages/asgardeo-ai/pyproject.toml b/packages/asgardeo-ai/pyproject.toml index c596529..ec3aa15 100644 --- a/packages/asgardeo-ai/pyproject.toml +++ b/packages/asgardeo-ai/pyproject.toml @@ -10,8 +10,7 @@ packages = [{ include = "asgardeo_ai", from = "src" }] [tool.poetry.dependencies] python = ">=3.10,<4.0" httpx = "^0.28.0" -asgardeo = { path = "../asgardeo", develop = true } - +asgardeo = "^0.2.1" [build-system] requires = ["poetry-core>=1.0.0"]