Deploy VitePress site to Server #4
Workflow file for this run
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: Deploy VitePress site to Server | |
on: | |
push: | |
tags: ["v*"] # 推送 tag(以v开头) 的时候才执行 | |
workflow_dispatch: | |
permissions: | |
contents: read | |
pages: write | |
id-token: write | |
concurrency: | |
group: pages | |
cancel-in-progress: false | |
jobs: | |
#### 构建流程 #### | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
# 安装 node 环境 | |
- name: Setup Node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
cache: npm | |
# 安装项目需要的依赖 | |
- name: Install dependencies | |
run: npm ci | |
# 执行打包 -> 压缩需要的文件 | |
- name: Build with VitePress | |
run: | | |
npm run docs:build | |
touch docs/.vitepress/dist/.nojekyll | |
tar -zcvf release.tar.gz run.sh docs/.vitepress/dist | |
# 发布 Release | |
- name: Create Release | |
id: create_release | |
uses: actions/create-release@master | |
env: | |
# 注意需要创建这个 Repository secrets 变量 | |
# 值就是 Github 的 Token: | |
GITHUB_TOKEN: ${{ secrets.TOKEN }} | |
with: | |
tag_name: ${{ github.ref }} | |
release_name: Release ${{ github.ref }} | |
draft: false | |
prerelease: false | |
# 上传打包结果到 Release | |
- name: Upload Release Asset | |
id: upload-release-asset | |
uses: actions/upload-release-asset@master | |
env: | |
GITHUB_TOKEN: ${{ secrets.TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./release.tar.gz | |
asset_name: release.tar.gz | |
asset_content_type: application/x-tgz | |
#### 部署到服务器流程 #### | |
deploy: | |
needs: build # 需要等待构建完成 | |
runs-on: ubuntu-latest # 运行在一个 unbuntu 服务器上 | |
name: Deploy | |
steps: | |
- name: Deploy to Server | |
id: deployment | |
uses: appleboy/ssh-action@master | |
with: | |
host: ${{ secrets.SERVER_ADDR }} | |
username: ${{ secrets.SERVER_USER }} | |
password: ${{ secrets.SERVER_PASS }} | |
port: ${{ secrets.SERVER_PORT }} | |
script: | | |
rm -rf ~/learn-github-actions-demo # 清除上次打包缓存 | |
mkdir -p ~/learn-github-actions-demo # 创建目录 | |
cd ~/learn-github-actions-demo # 进入目录 | |
# 下载打包结果 | |
# 注意这个链接: 必须是你自己的 github 账号名字 和 代码仓库名字 | |
wget https://github.com/lh5sa/learn-github-actions-demo/releases/latest/download/release.tar.gz -O release.tar.gz | |
tar -zxvf release.tar.gz # 解压 | |
# 运行部署脚本(也可以将上面的步骤写到这个脚本里, 然后直接运行) | |
chmod +x ./run.sh && ./run.sh |