Skip to content

Merge pull request #1531 from microsoft/release-please--branches--main #2730

Merge pull request #1531 from microsoft/release-please--branches--main

Merge pull request #1531 from microsoft/release-please--branches--main #2730

name: Build and test all the Kiota packages
on:
workflow_dispatch:
push:
branches: [ main ]
pull_request:
jobs:
build:
runs-on: ubuntu-latest
environment:
name: build_test
env:
TENANT_ID: ${{ secrets.TENANT_ID }}
strategy:
matrix:
node-version: [18.x, 20.x, 22.x]
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- run: npm ci
- run: npm run build
- run: npm run lint:eslint:loud
- run: npm run prettier:check
- name: Archive dist folders # archive dist folders to verify if they are transpiled correctly and available for publishing
uses: actions/upload-artifact@v4
with:
name: dist folders ${{ matrix.node-version }}
path: |
packages/abstractions/dist
packages/serialization/form/dist
packages/serialization/json/dist
packages/serialization/multipart/dist
packages/serialization/text/dist
packages/http/fetch/dist
packages/authentication/azure/dist
- run: npm run test:integrated
if: ${{env.TENANT_ID != '' }}
env:
TENANT_ID: ${{secrets.tenant_id}}
CLIENT_ID: ${{secrets.client_id}}
CLIENT_SECRET: ${{secrets.client_secret}}
USER_ID: ${{secrets.user_id}}
- run: npm run test
code-coverage:
runs-on: ubuntu-latest
strategy:
matrix:
coverage:
- name: "Abstractions"
path: "./packages/abstractions/coverage"
- name: "Authentication Azure"
path: "./packages/authentication/azure/coverage"
- name: "Authentication Spfx"
path: "./packages/authentication/spfx/coverage"
- name: "Http Fetch"
path: "./packages/http/fetch/coverage"
- name: "Serialization Form"
path: "./packages/serialization/form/coverage"
- name: "Serialization JSON"
path: "./packages/serialization/json/coverage"
- name: "Serialization Text"
path: "./packages/serialization/text/coverage"
- name: "Serialization Multipart"
path: "./packages/serialization/multipart/coverage"
- name: "Bundle"
path: "./packages/bundle/coverage"
steps:
- uses: actions/checkout@v4
- name: Use Node.js 22.x
uses: actions/setup-node@v4
with:
node-version: 22.x
- run: npm ci
- run: npm run build
- run: npm run test:coverage
- name: Code Coverage Report ${{ matrix.coverage.name }}
uses: irongut/[email protected]
with:
filename: ${{ matrix.coverage.path }}/cobertura-coverage.xml
format: markdown
hide_branch_rate: false
output: both
badge: true
- name: Archive coverage files
uses: actions/upload-artifact@v4
with:
name: Coverage files for ${{ matrix.coverage.name }}
path: ${{ matrix.coverage.path }}
publish-npm:
if: "${{ github.event_name == 'push' && github.ref == 'refs/heads/main' && contains(github.event.head_commit.message, 'chore: release main') }}"
needs: [build, check-typescript-version-matrix]
environment:
name: production_feed
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
registry-url: https://registry.npmjs.org/
- run: |
git config --global user.name '${GITHUB_ACTOR}'
git config --global user.email '${GITHUB_ACTOR}@users.noreply.github.com'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_ACTOR: ${{ secrets.GIT_USERNAME }}
- run: npm ci
- run: npm run build
- run: npx lerna publish from-package --no-push --yes
env:
NODE_AUTH_TOKEN: ${{secrets.npm_token}}
# The check-typescript-version-matrix returns success if all matrix jobs in build are successful; otherwise, it returns a failure.
# Use this as a PR status check for GitHub Policy Service instead of individual matrix entry checks.
check-typescript-version-matrix:
runs-on: ubuntu-latest
needs: [build,code-coverage]
if: always()
steps:
- name: All build matrix options are successful
if: ${{ !(contains(needs.*.result, 'failure')) }}
run: exit 0
- name: One or more build matrix options failed
if: ${{ contains(needs.*.result, 'failure') }}
run: exit 1