# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs name: halo-theme-dream2.0-plus CI on: push: branches: [ "master", "dev" ] paths: ["theme.yaml"] workflow_dispatch: jobs: build: runs-on: ubuntu-latest strategy: matrix: node-version: [20.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: # 迁出代码 - uses: actions/checkout@v4 # 确定构建分支类型 - name: Determine Branch Type id: determine_branch_type run: | branch_type=unknown if [[ $GITHUB_REF == refs/heads/master ]]; then branch_type=master elif [[ $GITHUB_REF == refs/heads/dev ]]; then branch_type=dev fi echo "branch_type=$branch_type" >> $GITHUB_ENV shell: bash # 确定构建版本 - name: version id: version run: | version=$(grep 'version:' theme.yaml | sed 's/.*:\s*//') echo "version=$version" >> $GITHUB_ENV - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: 'npm' registry-url: https://registry.npmjs.org/ - name: Install dependencies run: npm install # Actions构建 - name: Build-Dev if: ${{ env.branch_type != 'master' }} run: npm run release --tag=${{ env.version }} - name: Build-Master if: ${{ env.branch_type == 'master' }} run: npm run release --tag=${{ env.version }} env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} # 如果是master分支,创建latest的Release,否则创建 预览版 - name: Create Release id: create_release uses: actions/create-release@latest env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ env.version }} release_name: ${{ env.version }} body: ${{ github.event.commits[0].message }} draft: false prerelease: ${{ env.branch_type != 'master' }} # 创建Release Asset - name: Upload Release Asset id: upload_asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ./dist/halo-theme-dream2.0-plus.zip asset_name: halo-theme-dream2.0-plus-V${{ env.version }}.zip asset_content_type: application/zip