diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index b4f85ed..3af5f40 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -3,8 +3,17 @@ name: Dart on: push: branches: [ "main" ] + tags: + - 'microsoft_kiota_abstractions-v*' + - 'microsoft_kiota_bundle-v*' + - 'microsoft_kiota_http-v*' + - 'microsoft_kiota_serialization_form-v*' + - 'microsoft_kiota_serialization_json-v*' + - 'microsoft_kiota_serialization_text-v*' + - 'microsoft_kiota_serialization_multipart-v*' pull_request: branches: [ "main" ] + workflow_dispatch: jobs: define-matrix: @@ -131,4 +140,62 @@ jobs: run: exit 0 - name: One or more build matrix options failed if: ${{ contains(needs.*.result, 'failure') }} - run: exit 1 \ No newline at end of file + run: exit 1 + + publish-dart: + name: 'Publish packages' + if: startsWith(github.ref, 'refs/tags/') + + permissions: + id-token: write # Required for authentication using OIDC + + needs: + - define-matrix + + runs-on: ubuntu-latest + + strategy: + matrix: + package: ${{ fromJson(needs.define-matrix.outputs.packages) }} + + steps: + - uses: actions/checkout@v4 + + - name: Setup Dart + uses: dart-lang/setup-dart@v1 + with: + sdk: stable + + - name: Cache dependencies + uses: actions/cache@v4 + with: + path: ${{ env.PUB_CACHE }} + key: ${{ runner.os }}-pub + + - name: Install dependencies + run: dart pub get + working-directory: packages/${{ matrix.package }} + + - name: Prepare package + run: dart run tooling prepare ${{ matrix.package }} + working-directory: tooling + + - name: Release dry run + working-directory: packages/${{ matrix.package }} + run: dart pub publish --dry-run + + # only push to pub.dev when a tag was created for that package + - name: get package tag component + id: get_tag_component + run: | + TAG_COMPONENT="refs/tags/${PACKAGE_NAME//-/_}-v" + echo $TAG_COMPONENT + echo "tag_component=$TAG_COMPONENT" >> $GITHUB_OUTPUT + env: + PACKAGE_NAME: ${{ matrix.package }} + + - name: Release to pub.dev + if: startsWith(github.ref, steps.get_tag_component.outputs.tag_component) + working-directory: packages/${{ matrix.package }} + run: dart pub publish --force + \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 1fe7100..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,74 +0,0 @@ -name: Release - -on: - push: - tags: ['microsoft_kiota_abstractions-v*'] - branches: ['main'] - -permissions: - contents: write - -jobs: - define-matrix: - runs-on: ubuntu-latest - - name: 'Discover packages' - - outputs: - packages: ${{ steps.packages.outputs.packages }} - - steps: - - uses: actions/checkout@v4 - - - name: Discover packages - id: packages - run: | - packages=$(ls -d packages/* | xargs -n 1 basename | jq -R -s -c 'split("\n")[:-1]') - echo "packages=${packages}" >> $GITHUB_OUTPUT - - publish-dart: - name: 'Publish packages' - - permissions: - id-token: write # Required for authentication using OIDC - - needs: - - define-matrix - - runs-on: ubuntu-latest - - strategy: - matrix: - package: ${{ fromJson(needs.define-matrix.outputs.packages) }} - - steps: - - uses: actions/checkout@v4 - - - name: Setup Dart - uses: dart-lang/setup-dart@v1 - with: - sdk: stable - - - name: Cache dependencies - uses: actions/cache@v4 - with: - path: ${{ env.PUB_CACHE }} - key: ${{ runner.os }}-pub - - - name: Install dependencies - run: dart pub get - working-directory: packages/${{ matrix.package }} - - - name: Prepare package - run: dart run tooling prepare ${{ matrix.package }} - working-directory: tooling - - - name: Release dry run - working-directory: packages/${{ matrix.package }} - run: dart pub publish --dry-run - - # only push to pub.dev when a tag was created - - name: Release to pub.dev - if: startsWith(github.ref, 'refs/tags/microsoft_kiota_abstractions-v') - working-directory: packages/${{ matrix.package }} - run: dart pub publish --force