73 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
name: Build and Test
 | 
						|
 | 
						|
on:
 | 
						|
  pull_request:
 | 
						|
    branches:
 | 
						|
      - v4
 | 
						|
  push:
 | 
						|
    branches:
 | 
						|
      - v4
 | 
						|
  workflow_dispatch:
 | 
						|
 | 
						|
jobs:
 | 
						|
  build-and-test:
 | 
						|
    if: ${{ github.repository == 'jackyzha0/quartz' }}
 | 
						|
    strategy:
 | 
						|
      matrix:
 | 
						|
        os: [windows-latest, macos-latest, ubuntu-latest]
 | 
						|
    runs-on: ${{ matrix.os }}
 | 
						|
    permissions:
 | 
						|
      contents: write
 | 
						|
    steps:
 | 
						|
      - uses: actions/checkout@v4
 | 
						|
        with:
 | 
						|
          fetch-depth: 0
 | 
						|
 | 
						|
      - name: Setup Node
 | 
						|
        uses: actions/setup-node@v4
 | 
						|
        with:
 | 
						|
          node-version: 20
 | 
						|
 | 
						|
      - name: Cache dependencies
 | 
						|
        uses: actions/cache@v4
 | 
						|
        with:
 | 
						|
          path: ~/.npm
 | 
						|
          key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
 | 
						|
          restore-keys: |
 | 
						|
            ${{ runner.os }}-node-
 | 
						|
 | 
						|
      - run: npm ci
 | 
						|
 | 
						|
      - name: Check types and style
 | 
						|
        run: npm run check
 | 
						|
 | 
						|
      - name: Test
 | 
						|
        run: npm test
 | 
						|
 | 
						|
      - name: Ensure Quartz builds, check bundle info
 | 
						|
        run: npx quartz build --bundleInfo
 | 
						|
 | 
						|
  publish-tag:
 | 
						|
    if: ${{ github.repository == 'jackyzha0/quartz' && github.ref == 'refs/heads/v4' }}
 | 
						|
    runs-on: ubuntu-latest
 | 
						|
    permissions:
 | 
						|
      contents: write
 | 
						|
    steps:
 | 
						|
      - uses: actions/checkout@v4
 | 
						|
        with:
 | 
						|
          fetch-depth: 0
 | 
						|
      - name: Setup Node
 | 
						|
        uses: actions/setup-node@v4
 | 
						|
        with:
 | 
						|
          node-version: 20
 | 
						|
      - name: Get package version
 | 
						|
        run: node -p -e '`PACKAGE_VERSION=${require("./package.json").version}`' >> $GITHUB_ENV
 | 
						|
      - name: Create release tag
 | 
						|
        uses: pkgdeps/git-tag-action@v3
 | 
						|
        with:
 | 
						|
          github_token: ${{ secrets.GITHUB_TOKEN }}
 | 
						|
          github_repo: ${{ github.repository }}
 | 
						|
          version: ${{ env.PACKAGE_VERSION }}
 | 
						|
          git_commit_sha: ${{ github.sha }}
 | 
						|
          git_tag_prefix: "v"
 |