chore: fixed remaining ci problems #16
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: typescript | |
on: | |
push: | |
branches: '**' | |
paths-ignore: | |
- '.github/!(workflows)/**' | |
- 'solutions/rust/**' | |
- 'solutions/python/**' | |
pull_request: | |
branches: '**' | |
paths-ignore: | |
- '.github/!(workflows)/**' | |
- 'solutions/rust/**' | |
- 'solutions/python/**' | |
env: | |
TURBO_TOKEN: ${{ secrets.VERCEL_TOKEN }} | |
TURBO_TEAM: ${{ vars.TURBO_TEAM }} | |
TURBO_REMOTE_ONLY: true | |
BUILD_REASON: 'publish' # publint would like to see the .d.ts files | |
permissions: | |
contents: read | |
pages: write | |
id-token: write | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }} | |
cancel-in-progress: true | |
jobs: | |
lint: | |
name: lint:${{ matrix.lint-kind }} | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: [20.x] | |
lint-kind: [tsc, es, md, format, style, svelte, depcheck] | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 1 | |
- name: setup node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- name: pnpm setup | |
uses: pnpm/action-setup@v2 | |
with: | |
run_install: false | |
- name: get pnpm store directory | |
id: pnpm-cache | |
run: | | |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT | |
- name: cache | |
id: cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
${{ steps.pnpm-cache.outputs.STORE_PATH }} | |
.cache | |
key: ${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }} | |
restore-keys: | | |
${{ runner.os }}- | |
- name: install | |
run: pnpm install | |
- name: lint:${{ matrix.lint-kind }} | |
run: pnpm run lint:${{ matrix.lint-kind }} | |
typedoc: | |
name: typedoc | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: [20.x] | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
if: vars.PAGES_DEPLOY_ARTIFACT_BUILDING_JOB == 'typedoc' | |
with: | |
fetch-depth: 1 | |
- name: setup node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v3 | |
if: vars.PAGES_DEPLOY_ARTIFACT_BUILDING_JOB == 'typedoc' | |
with: | |
node-version: ${{ matrix.node-version }} | |
- name: pnpm setup | |
uses: pnpm/action-setup@v2 | |
if: vars.PAGES_DEPLOY_ARTIFACT_BUILDING_JOB == 'typedoc' | |
with: | |
run_install: false | |
- name: get pnpm store directory | |
id: pnpm-cache | |
if: vars.PAGES_DEPLOY_ARTIFACT_BUILDING_JOB == 'typedoc' | |
run: | | |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT | |
- name: cache | |
id: cache | |
if: vars.PAGES_DEPLOY_ARTIFACT_BUILDING_JOB == 'typedoc' | |
uses: actions/cache@v3 | |
with: | |
path: | | |
${{ steps.pnpm-cache.outputs.STORE_PATH }} | |
.cache | |
key: ${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }} | |
restore-keys: | | |
${{ runner.os }}- | |
- name: install | |
if: vars.PAGES_DEPLOY_ARTIFACT_BUILDING_JOB == 'typedoc' | |
run: pnpm install | |
- name: typedoc | |
if: vars.PAGES_DEPLOY_ARTIFACT_BUILDING_JOB == 'typedoc' | |
run: pnpm run typedoc | |
- name: prepare pages (use index.html as 404.html) | |
if: | | |
vars.PAGES_DEPLOY_ARTIFACT_BUILDING_JOB == 'typedoc' && | |
vars.PAGES_DEPLOY_ARTIFACT_DIR != '' && | |
github.ref_name == github.event.repository.default_branch && | |
github.event_name != 'pull_request' | |
run: | | |
cp ${{ vars.PAGES_DEPLOY_ARTIFACT_DIR }}/index.html ${{ vars.PAGES_DEPLOY_ARTIFACT_DIR }}/404.html | |
- name: setup pages | |
uses: actions/configure-pages@v3 | |
if: | | |
vars.PAGES_DEPLOY_ARTIFACT_BUILDING_JOB == 'typedoc' && | |
vars.PAGES_DEPLOY_ARTIFACT_DIR != '' && | |
github.ref_name == github.event.repository.default_branch && | |
github.event_name != 'pull_request' | |
- name: upload artifact | |
uses: actions/upload-pages-artifact@v2 | |
if: | | |
vars.PAGES_DEPLOY_ARTIFACT_BUILDING_JOB == 'typedoc' && | |
vars.PAGES_DEPLOY_ARTIFACT_DIR != '' && | |
github.ref_name == github.event.repository.default_branch && | |
github.event_name != 'pull_request' | |
with: | |
path: ${{ vars.PAGES_DEPLOY_ARTIFACT_DIR }} | |
test: | |
name: test | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: [20.x] | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 1 | |
- name: setup node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- name: pnpm setup | |
uses: pnpm/action-setup@v2 | |
with: | |
run_install: false | |
- name: get pnpm store directory | |
id: pnpm-cache | |
run: | | |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT | |
- name: cache | |
id: cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
${{ steps.pnpm-cache.outputs.STORE_PATH }} | |
.cache | |
key: ${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }} | |
restore-keys: | | |
${{ runner.os }}- | |
- name: install | |
run: pnpm install | |
- name: test | |
run: pnpm run test | |
- name: upload coverage result to codacy | |
uses: codacy/codacy-coverage-reporter-action@v1 | |
with: | |
project-token: ${{ secrets.CODACY_PROJECT_TOKEN }} | |
coverage-reports: coverage/lcov.info | |
language: ${{ vars.CODACY_REPORT_LANGUAGE }} | |
- name: upload coverage result to codecov | |
uses: codecov/codecov-action@v3 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
directory: coverage | |
- name: prepare pages (use index.html as 404.html) | |
if: | | |
vars.PAGES_DEPLOY_ARTIFACT_BUILDING_JOB == 'test' && | |
vars.PAGES_DEPLOY_ARTIFACT_DIR != '' && | |
github.ref_name == github.event.repository.default_branch && | |
github.event_name != 'pull_request' | |
run: | | |
cp ${{ vars.PAGES_DEPLOY_ARTIFACT_DIR }}/index.html ${{ vars.PAGES_DEPLOY_ARTIFACT_DIR }}/404.html | |
- name: setup pages | |
uses: actions/configure-pages@v3 | |
if: | | |
vars.PAGES_DEPLOY_ARTIFACT_BUILDING_JOB == 'test' && | |
vars.PAGES_DEPLOY_ARTIFACT_DIR != '' && | |
github.ref_name == github.event.repository.default_branch && | |
github.event_name != 'pull_request' | |
- name: upload artifact | |
uses: actions/upload-pages-artifact@v2 | |
if: | | |
vars.PAGES_DEPLOY_ARTIFACT_BUILDING_JOB == 'test' && | |
vars.PAGES_DEPLOY_ARTIFACT_DIR != '' && | |
github.ref_name == github.event.repository.default_branch && | |
github.event_name != 'pull_request' | |
with: | |
path: ${{ vars.PAGES_DEPLOY_ARTIFACT_DIR }} | |
build: | |
name: build | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: [20.x] | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 1 | |
- name: setup node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- name: pnpm setup | |
uses: pnpm/action-setup@v2 | |
with: | |
run_install: false | |
- name: get pnpm store directory | |
id: pnpm-cache | |
run: | | |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT | |
- name: cache | |
id: cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
${{ steps.pnpm-cache.outputs.STORE_PATH }} | |
.cache | |
key: ${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }} | |
restore-keys: | | |
${{ runner.os }}- | |
- name: install | |
run: pnpm install | |
- name: build | |
env: | |
BASE_HREF: '/${{ github.event.repository.name }}' | |
PLATFORM: 'github-pages' | |
run: pnpm run build | |
- name: publint | |
run: pnpm run publint | |
- name: prepare pages (use index.html as 404.html) | |
if: | | |
vars.PAGES_DEPLOY_ARTIFACT_BUILDING_JOB == 'build' && | |
vars.PAGES_DEPLOY_ARTIFACT_DIR != '' && | |
github.ref_name == github.event.repository.default_branch && | |
github.event_name != 'pull_request' | |
run: | | |
cp ${{ vars.PAGES_DEPLOY_ARTIFACT_DIR }}/index.html ${{ vars.PAGES_DEPLOY_ARTIFACT_DIR }}/404.html | |
- name: setup pages | |
uses: actions/configure-pages@v3 | |
if: | | |
vars.PAGES_DEPLOY_ARTIFACT_BUILDING_JOB == 'build' && | |
vars.PAGES_DEPLOY_ARTIFACT_DIR != '' && | |
github.ref_name == github.event.repository.default_branch && | |
github.event_name != 'pull_request' | |
- name: upload artifact | |
uses: actions/upload-pages-artifact@v2 | |
if: | | |
vars.PAGES_DEPLOY_ARTIFACT_BUILDING_JOB == 'build' && | |
vars.PAGES_DEPLOY_ARTIFACT_DIR != '' && | |
github.ref_name == github.event.repository.default_branch && | |
github.event_name != 'pull_request' | |
with: | |
path: ${{ vars.PAGES_DEPLOY_ARTIFACT_DIR }} | |
deploy-github-pages: | |
name: deploy github pages | |
if: | | |
github.ref_name == github.event.repository.default_branch && | |
github.event_name != 'pull_request' && | |
vars.PAGES_DEPLOY_ARTIFACT_DIR && ( | |
vars.PAGES_DEPLOY_ARTIFACT_BUILDING_JOB == 'build' || | |
vars.PAGES_DEPLOY_ARTIFACT_BUILDING_JOB == 'test' || | |
vars.PAGES_DEPLOY_ARTIFACT_BUILDING_JOB == 'typedoc' | |
) | |
runs-on: ubuntu-latest | |
needs: [build, test, lint, typedoc] | |
environment: | |
name: github-pages | |
url: ${{ steps.deployment.outputs.page_url }} | |
steps: | |
- name: deploy to github pages | |
uses: actions/deploy-pages@v1 | |
id: deployment | |
collect: | |
runs-on: ubuntu-latest | |
outputs: | |
non_published_packages: | |
${{ steps.collect_packages.outputs.non_published_packages }} | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 1 | |
- name: collect public packages | |
id: collect_packages | |
uses: AlexAegis/collect-public-packages@v1 | |
release: | |
name: | | |
release ${{ matrix.package.package_name }}@${{ matrix.package.package_version }} | |
if: | | |
needs.collect.outputs.non_published_packages && | |
github.ref_name == github.event.repository.default_branch && | |
github.event_name != 'pull_request' | |
runs-on: ubuntu-latest | |
needs: [collect, build, test, lint, typedoc] | |
strategy: | |
matrix: | |
package: ${{ fromJSON(needs.collect.outputs.non_published_packages) }} | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
- name: setup node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
registry-url: 'https://registry.npmjs.org' | |
- name: pnpm setup | |
uses: pnpm/action-setup@v2 | |
with: | |
run_install: false | |
- name: get pnpm store directory | |
id: pnpm-cache | |
run: | | |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT | |
- name: cache | |
id: cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
${{ steps.pnpm-cache.outputs.STORE_PATH }} | |
.cache | |
key: ${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }} | |
restore-keys: | | |
${{ runner.os }}- | |
- name: install | |
run: pnpm install | |
- name: | | |
build ${{ matrix.package.package_name }}@${{ matrix.package.package_version }} | |
run: | | |
npx turbo run build-lib_ --force --filter="${{ matrix.package.package_name }}" --concurrency 16 --cache-dir=.cache/turbo | |
- name: | | |
publint ${{ matrix.package.package_name }}@${{ matrix.package.package_version }} | |
run: | | |
npx turbo run publint_ --filter="${{ matrix.package.package_name }}" --concurrency 16 --cache-dir=.cache/turbo | |
- name: | | |
release ${{ matrix.package.package_name }}@${{ matrix.package.package_version }} on npm | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
run: | | |
pnpm publish --access public --provenance ${{ matrix.package.package_path_from_root_package }}/dist/ |