Deploy to Huawei OBS #22
This file contains hidden or 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 to Huawei OBS | |
| on: | |
| push: | |
| tags: | |
| - 'v*' | |
| paths: | |
| - 'template/tinyvue/**' | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 输入您将要发布的版本号(默认使用 template/tinyvue/package.json 中的版本号),例如:`0.1.0`。 | |
| required: false | |
| type: string | |
| env: | |
| # 在 GitHub 项目源码仓库 → 项目的 Settings → Secrets(Actions 里的 Repository secrets) 里提前建好以下变量 | |
| HUAWEI_CLOUD_AK: ${{ secrets.HUAWEI_CLOUD_AK }} | |
| HUAWEI_CLOUD_SK: ${{ secrets.HUAWEI_CLOUD_SK }} | |
| HUAWEI_CLOUD_ENDPOINT: ${{ secrets.HUAWEI_CLOUD_ENDPOINT }} | |
| HUAWEI_CLOUD_BUCKET: ${{ secrets.HUAWEI_CLOUD_BUCKET }} | |
| permissions: | |
| contents: read | |
| pages: write | |
| id-token: write | |
| jobs: | |
| # Build job | |
| build: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| version: ${{ steps.ver.outputs.value }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v3 | |
| with: | |
| version: 9 | |
| - name: Install deps | |
| run: pnpm i --no-frozen-lockfile | |
| - name: Get version | |
| id: ver | |
| run: | | |
| # 优先用手动输入的版本号 | |
| if [ -n "${{ inputs.version }}" ]; then | |
| VERSION="${{ inputs.version }}" | |
| else | |
| VERSION="$(node -p "require('./template/tinyvue/package.json').version")" | |
| fi | |
| echo "version: $VERSION" | |
| echo "value=$VERSION" >> $GITHUB_OUTPUT | |
| - name: Build site | |
| run: | | |
| export NODE_OPTIONS="--max-old-space-size=8192" | |
| pnpm -F tiny-pro-vue build | |
| env: | |
| VITE_BASE: //res-static.opentiny.design/tiny-pro-vue/${{ steps.ver.outputs.value }}/vue-pro/pages/ | |
| VITE_OUT_DIR: ../dist/vue-pro/pages | |
| VITE_CONTEXT: /vue-pro/pages/ | |
| VITE_BASE_API: /tiny-pro-vue/api | |
| VITE_MOCK_SERVER_HOST: /tiny-pro-vue/api/mock | |
| # 是否启用设计器 | |
| VITE_LOWCODE_DESIGNER_ENABLED: true | |
| # 配置设计器链接,部署后使用相对路径 /designer | |
| VITE_LOWCODE_DESIGNER_URL: https://ai.opentiny.design/designer/ | |
| - name: Build lowcode-designer | |
| run: | | |
| export NODE_OPTIONS="--max-old-space-size=8192" | |
| cd template/lowcode-designer | |
| pnpm build | |
| env: | |
| # 配置设计器的 base 路径,部署到 /designer/ 目录下 | |
| VITE_DESIGNER_BASE: /designer/ | |
| - name: Copy lowcode-designer to vue-pro/designer | |
| run: | | |
| # 将 lowcode-designer 的构建产物放入 vue-pro/designer 目录下 | |
| mkdir -p ./template/tinyvue/dist/vue-pro/designer | |
| cp -r ./template/lowcode-designer/dist/* ./template/tinyvue/dist/vue-pro/designer/ | |
| - name: Copy files | |
| run: | | |
| cp ./template/tinyvue/dist/vue-pro/pages/index.html ./template/tinyvue/dist/vue-pro/pages/404.html | |
| - name: Upload build artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: dist-artifact | |
| path: template/tinyvue/dist/ | |
| # Deploy job | |
| deploy: | |
| needs: build | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Download build artifact | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: dist-artifact | |
| path: template/tinyvue/dist/ | |
| - name: Show version | |
| run: | | |
| echo "Deploying version: ${{ needs.build.outputs.version }}" | |
| # ===== 下载 obsutil ===== | |
| - name: Install obsutil | |
| run: | | |
| curl -o obsutil.tar.gz https://obs-community.obs.cn-north-1.myhuaweicloud.com/obsutil/current/obsutil_linux_amd64.tar.gz | |
| tar -xzf obsutil.tar.gz | |
| chmod +x obsutil_linux_amd64_*/obsutil | |
| sudo mv obsutil_linux_amd64_*/obsutil /usr/local/bin/obsutil | |
| # ===== 配置并上传 ===== | |
| - name: Upload to OBS | |
| run: | | |
| # 一次性配置 AK/SK/endpoint | |
| obsutil config -i=${{ env.HUAWEI_CLOUD_AK }} \ | |
| -k=${{ env.HUAWEI_CLOUD_SK }} \ | |
| -e=${{ env.HUAWEI_CLOUD_ENDPOINT }} | |
| # 把本地 dist/ 目录整站同步到桶根目录 | |
| echo "needs.build.outputs.version: ${{ needs.build.outputs.version }}" | |
| mv template/tinyvue/dist ${{ needs.build.outputs.version }} | |
| obsutil cp ${{ needs.build.outputs.version }} obs://${{ env.HUAWEI_CLOUD_BUCKET }}/tiny-pro-vue/ -r -f |