Azure 网络应用程序中的 Symfony cache:clear,具有 GitHub 个操作

Symfony cache:clear in Azure web app with GitHub Actions

我正在将 symfony 应用程序部署到 Azure Linux PHP 7.4 网络应用程序。我使用 How to archive files in artifact for github workflow actions in order to fix this warning? 中建议的方法来简化部署。

所以一切都很好,但偶尔网站会失败。我追踪到一个陈旧的缓存。要解决这个问题,我必须通过 SSH 连接到 Web 应用程序并使用

清除缓存
$ php bin/console cache:clear

详细查看 Github 操作构建和部署日志,我看到 cache:clear 在构建 VM 上执行,这没有帮助。

我正在使用标准 php 构建和部署脚本,添加了 zip/unzip 步骤...

# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
# More GitHub Actions for Azure: https://github.com/Azure/actions

name: Build and deploy PHP app to Azure Web App - xxx

on:
  push:
    branches:
      - master
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: '7.4'

      - name: Check if composer.json exists
        id: check_files
        uses: andstor/file-existence-action@v1
        with:
          files: 'composer.json'

      - name: Run composer install if composer.json exists
        if: steps.check_files.outputs.files_exists == 'true'
        run: composer validate --no-check-publish && composer install --prefer-dist --no-progress

      - name: Zip artifact for deployment
        run: zip -r release.zip * .env .htaccess public/.htaccess

      - name: Upload artifact for deployment job
        uses: actions/upload-artifact@v2
        with:
          name: php-app
          path: release.zip

  deploy:
    runs-on: ubuntu-latest
    needs: build
    environment:
      name: 'staging'
      url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}

    steps:
      - name: Download artifact from build job
        uses: actions/download-artifact@v2
        with:
          name: php-app

      - name: Unzip artifact for deployment
        run: unzip release.zip
        
      - name: 'Deploy to Azure Web App'
        uses: azure/webapps-deploy@v2
        id: deploy-to-webapp
        with:
          app-name: 'xxxx'
          slot-name: 'staging'
          publish-profile: ${{ secrets.AZUREAPPSERVICE_xxxxx }}
          package: .

部署到 Web 应用程序后如何使清除缓存命令生效?

根据上述问题陈述,我们了解到您希望清除 Web 应用缓存 post 部署。

为了实现这一点,您可以添加一个应用设置 WEBSITE_LOCAL_CACHE_OPTION=Always 来帮助您清除网络应用的本地缓存。

对于任何应用服务,其相关内容(代码文件、资源等)都托管在共享内容文件夹中,以便提供应用服务的所有功能,如负载平衡等。因此,如果有2 个 VM 配置为负载平衡,然后只有一个共享位置托管应用服务的所有内容。

当这些 Web 应用程序引用内容文件夹时,可能会出现延迟问题(尽管 Azure 会处理其中的大部分问题),这可能会稍微降低网站的性能。在这样的 Performance-critical 应用程序中,我们可以利用“Azure App Service Local Cache”的功能。

有关详细信息,请参阅 Azure App Service Local Cache & this 博客 post 上的此 Azure 文档。

对...

原来清除缓存的方法很简单。使用缓存清除命令作为“启动命令”

所以我部署并通过 SSH 连接到 Web 应用程序并检查 /home/site/wwwroot/var/cache/staging 瞧!所有文件都是新创建的!

一开始我也有过这种想法,但看起来确实很麻烦。我真的想要一种更简洁的方法来做到这一点。我尝试将启动命令添加到部署脚本但出现此错误...

所以我无法添加启动命令,因为有一个发布配置文件。

那么为什么这么简单的问题花了这么长时间才在 SO 上回答?不止一个完全不相关的建议答案。所有这些答案都与我的问题有共同点,比如“缓存”和“php”。