尝试通过 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/ 移动到生产分支,并将文件从那里推送到服务器。但出现错误。有谁知道怎么解决吗
看起来你在行动中混合了意图。这三行看起来是问题的一部分。
git checkout -B production
git rm -rf *
git checkout main "build/web/*"
特别是
git rm -rf *
线。如果您已经在主分支上构建了代码,为什么要签出然后重置所有内容,然后签出另一个分支?
理想情况下,在发布过程中,您可以确定一个分支,您的代码将发送到该分支进行构建和部署。在这种情况下,它可能是
production
分支。
如果您想在生产分支上构建代码,您应该将更改提交到该分支,然后该分支将在那里运行您的部署操作。这样你就知道了:
这确保了您的操作的可重复性。如果这符合您的目标,或者我在这里严重错过了目标,请在评论中进一步讨论。