diff --git a/.github/workflows/publish-npm.yml b/.github/workflows/publish-npm.yml new file mode 100644 index 000000000000..8266566c6dc1 --- /dev/null +++ b/.github/workflows/publish-npm.yml @@ -0,0 +1,50 @@ +name: Publish npm package + +on: + release: + types: [published] + +jobs: + publish-npm: + runs-on: ubuntu-latest + if: ${{ github.repository == 'twbs/bootstrap' && startsWith(github.event.release.tag_name, 'v') }} + env: + GITHUB_REF_NAME: ${{ github.ref_name }} + steps: + - name: Clone repository + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + with: + persist-credentials: false + + - name: Set up Node.js + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + with: + node-version: 22 + cache: npm + registry-url: 'https://registry.npmjs.org' + + - name: Extract version from tag + id: version + run: | + VERSION=${GITHUB_REF_NAME#v} + echo "version=$VERSION" >> $GITHUB_OUTPUT + echo "Publishing version: $VERSION" + + - name: Verify package version matches tag + run: | + PACKAGE_VERSION=$(node -p "require('./package.json').version") + TAG_VERSION="${{ steps.version.outputs.version }}" + echo "Package version: $PACKAGE_VERSION" + echo "Tag version: $TAG_VERSION" + if [ "$PACKAGE_VERSION" != "$TAG_VERSION" ]; then + echo "Error: Package version ($PACKAGE_VERSION) does not match tag version ($TAG_VERSION)" + exit 1 + fi + + - name: Install npm dependencies + run: npm ci + + - name: Publish to npm + run: npm publish + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/publish-nuget.yml b/.github/workflows/publish-nuget.yml index b78023b92aa5..9de042d10068 100644 --- a/.github/workflows/publish-nuget.yml +++ b/.github/workflows/publish-nuget.yml @@ -1,4 +1,4 @@ -name: Publish NuGet Packages +name: Publish NuGet package on: release: @@ -8,13 +8,14 @@ permissions: contents: read jobs: - package-nuget: + publish-nuget: runs-on: windows-latest if: ${{ github.repository == 'twbs/bootstrap' && startsWith(github.event.release.tag_name, 'v') }} env: GITHUB_REF_NAME: ${{ github.ref_name }} steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - name: Clone repository + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false diff --git a/.github/workflows/release-notes.yml b/.github/workflows/release-notes.yml deleted file mode 100644 index d37d5e84120c..000000000000 --- a/.github/workflows/release-notes.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: Release notes - -on: - push: - branches: - - main - workflow_dispatch: - -permissions: - contents: read - -jobs: - update_release_draft: - permissions: - # allow release-drafter/release-drafter to create GitHub releases and add labels to PRs - contents: write - pull-requests: write - runs-on: ubuntu-latest - if: github.repository == 'twbs/bootstrap' - steps: - - uses: release-drafter/release-drafter@b1476f6e6eb133afa41ed8589daba6dc69b4d3f5 # v6.1.0 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}