通过 GitHub Actions 构建和部署 Flutter Web 应用程序时出错

问题描述 投票:0回答:1

尝试通过 GitHub Actions 构建和部署 Flutter Web 应用程序时,出现以下错误:

error: pathspec 'build/web/*' did not match any file(s) known to git

这是来自 .github/workflows 的 YML 代码:

name: Deploy

on:
  push:
    branches:
      - main

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Set up Flutter
        uses: subosito/flutter-action@v2
        with:
          flutter-version: '3.24.3'

      - name: Install dependencies
        run: flutter pub get

      - name: Build Flutter web
        run: |
          echo "SUPABASE_URL=${{ secrets.SUPABASE_URL }}" >> .env
          echo "SUPABASE_ANON_KEY=${{ secrets.SUPABASE_ANON_KEY }}" >> .env
          flutter build web

      - name: Deploy to production branch
        run: |
          git config --local user.email "my email"
          git config --local user.name "my name"
          
          if [ -d "build/web" ]; then
            echo "Build directory exists, proceeding with deployment."
          else
            echo "Build directory does not exist. Build might have failed."
            exit 1
          fi

          echo "Listing contents of build/web:"
          ls -la build/web
          
          git checkout -B production
      
          git rm -rf *
          
          git checkout main "build/web/*"

          echo "Listing contents of production branch after copying:"
          ls -la

          git add .
          git commit -m "Deploy to production"
          git push origin production
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

  deploy-to-server:
    runs-on: ubuntu-latest
    needs: build-and-deploy
    steps:
      - uses: actions/checkout@v2

      - run: set -eu
      - run: mkdir "$HOME/.ssh"
      - run: echo "${{ secrets.SSH_KEY }}" > "$HOME/.ssh/key"
      - run: chmod 600 "$HOME/.ssh/key"

      - run: |
          rsync -e "ssh -p 20022 -i $HOME/.ssh/key -o StrictHostKeyChecking=no" \
          --archive --compress --delete \
          ./build/web/ HERE IS MY SITE

在这段代码中,当我更改主分支时,我尝试构建 Flutter 项目,将构建的文件从 build/web/ 移动到生产分支,并将文件从那里推送到服务器。但出现错误。有谁知道怎么解决吗

flutter github github-actions cicd
1个回答
0
投票

看起来你在行动中混合了意图。这三行看起来是问题的一部分。

    git checkout -B production
    git rm -rf *
    git checkout main "build/web/*"

特别是

git rm -rf *
线。如果您已经在主分支上构建了代码,为什么要签出然后重置所有内容,然后签出另一个分支?

理想情况下,在发布过程中,您可以确定一个分支,您的代码将发送到该分支进行构建和部署。在这种情况下,它可能是

production
分支。

如果您想在生产分支上构建代码,您应该将更改提交到该分支,然后该分支将在那里运行您的部署操作。这样你就知道了:

  1. 每次将代码推送到生产环境时
  2. 它已构建并提交
  3. 切换分支不会丢失构建的二进制文件/文件夹

这确保了您的操作的可重复性。如果这符合您的目标,或者我在这里严重错过了目标,请在评论中进一步讨论。

© www.soinside.com 2019 - 2024. All rights reserved.