diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 693a844..4467f16 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,54 +1,75 @@ name: CI on: - push: - branches: - - master - tags-ignore: - - "**" - pull_request: - branches: - - "**" + push: + branches: + - master + - feature/publish-package + tags-ignore: + - '**' + pull_request: + branches: + - '**' jobs: - build: - name: Build - runs-on: ubuntu-latest + build: + name: Build + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [16.x, 18.x, 20.x] + steps: + - uses: actions/checkout@v4 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + cache: 'npm' + - run: npm ci + - if: github.event_name == 'pull_request' + name: Lint commit messages + run: npx commitlint --from $GITHUB_BASE_REF --to $GITHUB_HEAD_REF + - run: npm run format:check + - run: npm run lint + - run: npm run build + - run: npm run coverage + - if: matrix.node-version == '20.x' + uses: actions/upload-artifact@v4 + with: + name: Code coverage + path: coverage/ + - if: matrix.node-version == '20.x' + run: npm run docs + - if: matrix.node-version == '20.x' + uses: actions/upload-artifact@v4 + with: + name: Documentation + path: docs/ - strategy: - matrix: - node-version: [16.x, 18.x, 20.x] - - steps: - - uses: actions/checkout@v4 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node-version }} - cache: 'npm' - - run: npm ci - - if: github.event_name == 'pull_request' - name: Lint commit messages - run: npx commitlint --from $GITHUB_BASE_REF --to $GITHUB_HEAD_REF - - run: npm run format:check - - run: npm run lint - - run: npm run build - - run: npm run coverage - - if: matrix.node-version == '20.x' - uses: actions/upload-artifact@v4 - with: - name: Code coverage - path: coverage/ - - if: matrix.node-version == '20.x' - run: npm run docs - - if: matrix.node-version == '20.x' - uses: actions/upload-artifact@v4 - with: - name: Documentation - path: docs/ - - name: Deploy Docs - if: github.ref == 'refs/heads/master' && matrix.node-version == '20.x' - uses: peaceiris/actions-gh-pages@v4 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./docs + publish: + name: 'Publish' + needs: build + runs-on: ubuntu-latest + environment: npm_publish + # if: github.ref == 'refs/heads/master' + steps: + # - uses: actions/download-artifact@v4 + # with: + # name: Documentation + # path: docs/ + # - name: Deploy Docs + # uses: peaceiris/actions-gh-pages@v4 + # with: + # github_token: ${{ secrets.GITHUB_TOKEN }} + # publish_dir: ./docs + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 20.x + cache: 'npm' + - run: npm ci + - name: Publish new version + env: + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: npx semantic-release --dry-run diff --git a/package.json b/package.json index 8faa367..a021dd5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ilc-sdk", - "version": "5.2.1", + "version": "0.0.0", "description": "SDK for app development with Isomorphic Layout Composer", "main": "dist/server/index.js", "types": "dist/server/index.d.ts", diff --git a/release.config.js b/release.config.js index e1956c7..2e9c619 100644 --- a/release.config.js +++ b/release.config.js @@ -1,6 +1,43 @@ +const preset = 'conventional-commits'; + +/** + * semantic-release plugin to analyze commits with conventional-changelog + * https://github.com/semantic-release/commit-analyzer + */ +const commitAnalyzerConfig = { + preset +} + +/** + * semantic-release plugin to generate changelog content with conventional-changelog + * https://github.com/semantic-release/release-notes-generator + */ +const releaseNotesGeneratorConfig = { + preset, +}; + +/** + * semantic-release plugin to publish a GitHub release and comment on released Pull Requests/Issues. + * https://github.com/semantic-release/github + */ +const githubConfig = { + successComment: false, + failComment: false, + labels: false, + releasedLabels: false, + +} + /** * @type {import('semantic-release').GlobalConfig} */ module.exports = { branches: ['master', 'feature/publish-package'], + tagFormat: 'v${version}', + plugins: [ + ['@semantic-release/commit-analyzer', commitAnalyzerConfig], + ['@semantic-release/release-notes-generator', releaseNotesGeneratorConfig], + // ['@semantic-release/npm'], + ['@semantic-release/commit-analyzer/github', githubConfig] + ], };