## CD交付流水线 ## - 部署到Github Pages ## - 部署到Vercel托管平台 ## - 发布新的Github Release ## 参考资料:https://v2.vuepress.vuejs.org/zh/guide/deployment.html#github-pages name: CD on: push: branches: - next workflow_dispatch: ## vercel 环境变量 env: VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} jobs: ## 部署到Github-Pages deploy-github: name: "部署到Github-Pages" runs-on: ubuntu-latest if: github.repository == '142vip/408CSFamily' steps: - name: Checkout Code uses: actions/checkout@v4 with: persist-credentials: false # “最近更新时间” 等 git 日志相关信息,需要拉取全部提交记录 fetch-depth: 0 ## 安装PNPM - name: PNPM Install uses: pnpm/action-setup@v2 with: version: 8 ## 安装Node环境 - name: Install Node.js uses: actions/setup-node@v3 with: node-version: 18.18.0 ## 淘宝镜像加速 registry-url: 'https://registry.npmmirror.com' ## 缓存 cache: 'pnpm' ## 下载依赖,并执行初始化脚本:钩子函数、思维导图构建 - name: Install Dependencies run: | ./scripts/ci # 运行构建脚本 - name: Build VuePress Site run: | ./scripts/bundle build_proxy # 将README.md同步,利于github pages分支展示 - name: Add Readme.md To Dist run: | cp -f README.md docs/.vuepress/dist - name: Check GitHub Pages status uses: crazy-max/ghaction-github-status@v3 with: pages_threshold: major_outage ## 获取Git提交信息 - name: Get Commit Info id: gitInfo run: | echo "version=$(node -p "require('./package.json').version")" >> $GITHUB_OUTPUT echo "author=$(git log -1 --pretty=%an)" >> $GITHUB_OUTPUT echo "email=$(git log -1 --pretty=%ae)" >> $GITHUB_OUTPUT ## 参考:https://github.com/marketplace/actions/github-pages - name: Deploy To GitHub Page uses: crazy-max/ghaction-github-pages@v3 with: target_branch: pages/github build_dir: docs/.vuepress/dist commit_message: chore(sync) v${{steps.gitInfo.outputs.version}} committer: ${{steps.gitInfo.outputs.author}}<${{steps.gitInfo.outputs.email}}> author: Mr·Sync env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} ## 部署到vercel平台 deploy-vercel: name: "部署到Vercel平台" runs-on: ubuntu-latest if: github.repository == '142vip/408CSFamily' steps: - name: Checkout Code uses: actions/checkout@v4 with: persist-credentials: false # “最近更新时间” 等 git 日志相关信息,需要拉取全部提交记录 fetch-depth: 0 ## 注意: 这里的操作时间vercel平台配置的命令拉取下来,执行 - name: Pull Vercel Environment Information run: npm i -g vercel && vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }} ## 执行vercel平台配置的命令 - name: Build Project Artifacts run: vercel build --prod --token=${{ secrets.VERCEL_TOKEN }} ## dist文件同步到vercel平台 - name: Deploy Project Artifacts to Vercel run: vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }} ## 版本发布 release: name: "Github版本发布" runs-on: ubuntu-latest ## 主库master、next且执行release更新时执行 if: github.repository == '142vip/408CSFamily' && startsWith(github.event.head_commit.message, 'chore(release):') steps: - name: Checkout Code uses: actions/checkout@v4 with: persist-credentials: false # “最近更新时间” 等 git 日志相关信息,需要拉取全部提交记录 fetch-depth: 0 ### 打成压缩包 - name: Create Zip Package run: | zip -r 408CSFamily.zip . \ -x "node_modules/*" # 提取版本号 - name: Get New Version Number id: releaseVersion run: | echo "version=$(node -p "require('./package.json').version")" >> $GITHUB_OUTPUT # 创建发布版本 - name: Create New Release id: createRelease uses: actions/create-release@latest env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: v${{ steps.releaseVersion.outputs.version }} release_name: v${{ steps.releaseVersion.outputs.version }} body: | Release ${{ steps.releaseVersion.outputs.version }} ### Features ### Bug Fixes ## 更新资源 - name: Upload Resource Assets uses: actions/upload-release-asset@latest env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.createRelease.outputs.upload_url }} asset_path: ./408CSFamily.zip asset_name: 408CSFamily.zip asset_content_type: application/zip # Deploy-ESC: # name: "部署到ESC服务器" # needs: install-init # runs-on: ubuntu-latest # ## 主库master、next且执行release更新时执行 # if: github.repository == '142vip/408CSFamily' && startsWith(github.event.head_commit.message, 'chore(release):') # # steps: # - name: Checkout repository # uses: actions/checkout@v4 # # - name: Get Current Version # id: version # uses: ashley-taylor/read-json-property-action@v1.0 # with: # path: ./package.json # property: version # # # 拉取镜像,更新服务 # - name: Pull Image And Update ESC # uses: appleboy/ssh-action@master # with: # host: ${{ secrets.SERVER_HOST }} # port: ${{ secrets.SERVER_PORT }} # username: ${{ secrets.SERVER_USERNAME }} # password: ${{ secrets.SERVER_PASSWORD }} # script: | # docker images # echo "-----------正在运行的服务--------" # docker ps # cd /service_env/ && git reset --hard && git pull origin main # bash ./scripts/book_doc.deploy.sh jsc ${{steps.version.outputs.value}}