diff --git a/.github/release-please/.release-please-manifest.json b/.github/release-please/.release-please-manifest.json new file mode 100644 index 00000000..ef9487ea --- /dev/null +++ b/.github/release-please/.release-please-manifest.json @@ -0,0 +1,7 @@ +{ + "packages/core": "0.1.0-preview.0", + "packages/html": "0.1.0-preview.0", + "packages/react": "0.1.0-preview.0", + "packages/icons": "0.1.0-preview.0", + "packages/utils": "0.1.0-preview.0" +} diff --git a/.github/release-please/release-please-config.json b/.github/release-please/release-please-config.json new file mode 100644 index 00000000..fa2b7f2c --- /dev/null +++ b/.github/release-please/release-please-config.json @@ -0,0 +1,40 @@ +{ + "bump-minor-pre-major": true, + "bump-patch-for-minor-pre-major": false, + "tag-separator": "@", + "include-component-in-tag": true, + "include-v-in-tag": false, + "plugins": [ + { + "type": "node-workspace", + "merge": false + } + ], + "packages": { + "packages/core": { + "component": "@videojs/core", + "prerelease": true, + "versioning": "prerelease" + }, + "packages/html": { + "component": "@videojs/html", + "prerelease": true, + "versioning": "prerelease" + }, + "packages/icons": { + "component": "@videojs/icons", + "prerelease": true, + "versioning": "prerelease" + }, + "packages/react": { + "component": "@videojs/react", + "prerelease": true, + "versioning": "prerelease" + }, + "packages/utils": { + "component": "@videojs/utils", + "prerelease": true, + "versioning": "prerelease" + } + } +} diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml new file mode 100644 index 00000000..f427a674 --- /dev/null +++ b/.github/workflows/cd.yml @@ -0,0 +1,69 @@ +name: Deployment + +concurrency: production + +on: + push: + branches: + - main + +# To use Turborepo Remote Caching, set the following environment variables. +# env: +# TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} +# TURBO_TEAM: ${{ secrets.TURBO_TEAM }} + +jobs: + release: + runs-on: ubuntu-latest + environment: production + permissions: + contents: write + pull-requests: write + id-token: write + + steps: + - uses: googleapis/release-please-action@v4 + id: release + with: + config-file: .github/release-please/release-please-config.json + manifest-file: .github/release-please/.release-please-manifest.json + + - uses: actions/checkout@v5 + # these if statements ensure that a publication only occurs when + # a new release is created: + if: ${{ steps.release.outputs.releases_created == 'true' }} + with: + fetch-depth: 0 # Fetch all history for all tags and branches + + - name: Setup pnpm + uses: pnpm/action-setup@v4 + + - name: read node version from the .nvmrc file + if: ${{ steps.release.outputs.releases_created == 'true' }} + run: echo ::set-output name=NODE_VERSION::$(cat .nvmrc) + shell: bash + id: nvmrc + - uses: actions/setup-node@v5 + if: ${{ steps.release.outputs.releases_created == 'true' }} + with: + node-version: ${{steps.nvmrc.outputs.NODE_VERSION}} + # this line is required for the setup-node action to be able to run the npm publish below. + registry-url: 'https://registry.npmjs.org' + + - name: Install + if: ${{ steps.release.outputs.releases_created == 'true' }} + run: pnpm i --frozen-lockfile + + - name: Clean + if: ${{ steps.release.outputs.releases_created == 'true' }} + run: pnpm clean + + - name: Build + if: ${{ steps.release.outputs.releases_created == 'true' }} + run: pnpm build:packages + + - name: Publish + if: ${{ steps.release.outputs.releases_created == 'true' }} + run: pnpm -r publish --filter "./packages/**" publish --dry-run --access public --provenance --tag next --no-git-checks + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 47396599..19ce3473 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,4 +25,4 @@ jobs: run: pnpm install - name: Build - run: pnpm build:libs + run: pnpm build:packages diff --git a/CLAUDE.md b/CLAUDE.md index 56d4dec5..658e82ed 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -36,7 +36,7 @@ pnpm install pnpm build # Build only library packages (excludes examples) -pnpm build:libs +pnpm build:packages # Run tests across all packages pnpm test diff --git a/package.json b/package.json index 1e46b95b..a700b1ef 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ }, "scripts": { "prepare": "simple-git-hooks", - "build:libs": "turbo run build --filter=./packages/**", + "build:packages": "turbo run build --filter=./packages/**", "build:website": "turbo run build --filter=website", "build": "turbo run build", "clean": "turbo run clean",