|
@@ -0,0 +1,104 @@
|
|
|
+name: Build and Deploy
|
|
|
+on:
|
|
|
+ push:
|
|
|
+ branches: [ "master"]
|
|
|
+ pull_request:
|
|
|
+ branches: [ "master" ]
|
|
|
+
|
|
|
+jobs:
|
|
|
+
|
|
|
+ ensure-toolchain:
|
|
|
+ runs-on: ubuntu-latest
|
|
|
+ steps:
|
|
|
+ - uses: actions/checkout@v3
|
|
|
+
|
|
|
+ - name: Setup Node.js environment
|
|
|
+ uses: actions/setup-node@v3.7.0
|
|
|
+ with:
|
|
|
+ node-version: "20.11.0"
|
|
|
+
|
|
|
+ - name: Cache dependencies
|
|
|
+ id: cache-node-modules
|
|
|
+ uses: actions/cache@v3
|
|
|
+ env:
|
|
|
+ cache-name: cache-node-modules
|
|
|
+ with:
|
|
|
+ path: ./node_modules
|
|
|
+ key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('package.json') }}
|
|
|
+
|
|
|
+ - name: echo node version
|
|
|
+ run: node -v
|
|
|
+
|
|
|
+ - if: ${{ steps.cache-node-modules.outputs.cache-hit != 'true' }}
|
|
|
+ name: Install dependencies
|
|
|
+ continue-on-error: true
|
|
|
+ run: |
|
|
|
+ sudo apt update && sudo apt install -y build-essential
|
|
|
+ source ~/.bashrc
|
|
|
+ npm install
|
|
|
+
|
|
|
+ build:
|
|
|
+ runs-on: ubuntu-latest
|
|
|
+ needs: [ensure-toolchain]
|
|
|
+ steps:
|
|
|
+ - uses: actions/checkout@v3
|
|
|
+
|
|
|
+ - name: Cache dependencies
|
|
|
+ id: cache-node-modules
|
|
|
+ uses: actions/cache@v3
|
|
|
+ env:
|
|
|
+ cache-name: cache-node-modules
|
|
|
+ with:
|
|
|
+ path: ./node_modules
|
|
|
+ key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('package.json') }}
|
|
|
+
|
|
|
+ - name: Setup Node.js environment
|
|
|
+ uses: actions/setup-node@v3.7.0
|
|
|
+ with:
|
|
|
+ node-version: "20.11.0"
|
|
|
+
|
|
|
+ - name: echo node version
|
|
|
+ run: node -v
|
|
|
+
|
|
|
+ - name: Build
|
|
|
+ run: npm run docs:build
|
|
|
+
|
|
|
+ deploy:
|
|
|
+ runs-on: ubuntu-latest
|
|
|
+ needs: [ensure-toolchain]
|
|
|
+ environment:
|
|
|
+ name: github-pages
|
|
|
+ steps:
|
|
|
+ - name: Check github secrets
|
|
|
+ run: sh -c 'if [ -z "${{ secrets.ACTIONS_DEPLOY_KEY }}" ]; then
|
|
|
+ echo "GitHub Actions deploy key is missing";
|
|
|
+ exit 1;
|
|
|
+ fi'
|
|
|
+
|
|
|
+ - uses: actions/checkout@v3
|
|
|
+
|
|
|
+ - name: Cache dependencies
|
|
|
+ id: cache-node-modules
|
|
|
+ uses: actions/cache@v3
|
|
|
+ env:
|
|
|
+ cache-name: cache-node-modules
|
|
|
+ with:
|
|
|
+ path: ./node_modules
|
|
|
+ key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('package.json') }}
|
|
|
+
|
|
|
+ - name: Setup Node.js environment
|
|
|
+ uses: actions/setup-node@v3.7.0
|
|
|
+ with:
|
|
|
+ node-version: "20.11.0"
|
|
|
+
|
|
|
+ - name: Build
|
|
|
+ run: npm run docs:build
|
|
|
+
|
|
|
+ - name: Set CNAME
|
|
|
+ run: echo 'community.dragonos.org' > ./.vuepress/dist/CNAME
|
|
|
+
|
|
|
+ - name: Deploy
|
|
|
+ uses: peaceiris/actions-gh-pages@v3
|
|
|
+ with:
|
|
|
+ deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }}
|
|
|
+ publish_dir: ./.vuepress/dist
|