# 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: Node.js CI on: push: branches: [ "master", "dev" ] paths: ["version"] 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=$(cat version) 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' - name: Install dependencies run: npm install # Actions构建 - name: Build run: npm run actions --tag=${{ env.version }} # 上传构建产物zip - name: Upload artifacts uses: actions/upload-artifact@v4 with: name: halo-theme-dream2.0-plus path: dist # 如果是master分支,创建Release - name: Create Release if: ${{ env.branch_type == 'master' }} 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: false # 如果是master分支,创建Release Asset - name: Upload Release Asset if: ${{ env.branch_type == 'master' }} uses: dwenegar/upload-release-assets@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: release_id: ${{ steps.create_release.outputs.id }} assets_path: | ./releases/