Reputation: 5256
I am deploying a symfony application to an Azure Linux PHP 7.4 web app. I used the approach suggested in How to archive files in artifact for github workflow actions in order to fix this warning? to streamline the deployment.
So everything is working well, but occasionally the site fails. I tracked it down to a stale cache. To fix the problem I have to SSH into the web app and clear the cache using
$ php bin/console cache:clear
Looking in detail at the Github actions build and deploy log, I see that cache:clear is executed on the build VM, which is not helpful.
I am using the standard php build and deploy script with the zip/unzip steps added...
# 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: .
How do I get the clear cache command to work after deployment to the web app?
Upvotes: 0
Views: 744
Reputation: 5256
Right...
It turns out the way to clear the cache is very simple. Use the cache clear command as the "startup command"
So I deploy and SSH into the web app and check /home/site/wwwroot/var/cache/staging and voila! all the file are newly created!
This has occurred to me at the beginning, but it really seemed like a kluge. I really wanted a cleaner way to do this. I tried adding the startup command to the deployment script but got this error...
So I cannot add startup command because there is a publish profile.
So why did such a simple problem take so long to answer on SO? More than one suggested answers that were completely irrelevant. All these answers had in common with my issue were words like "cache" and "php".
Upvotes: 0
Reputation: 5526
Based on the above problem statement, we understood that you are looking to clear the web app cache post the deployment.
In order to achieve this, you can add an app settings WEBSITE_LOCAL_CACHE_OPTION=Always which help you in clearing the local cache of the web app.
for any App Service, its related contents (code files, resources etc.) are being hosted in a Shared Content Folder in order to provision all the features of the App Service like Load Balancing etc. So, if there are 2 VMs configure for Load Balancing then there would just one shared location where all the content of the App Service is hosted.
When these Web Apps refer to the Content Folder, there might be chances of Latency issues (although, Azure takes care of most of these issues) which might slow down the performance of the websites a bit. In such Performance-critical application, we can leverage the features of “Azure App Service Local Cache”.
For more information, you refer to this Azure documentation on Azure App Service Local Cache & this blog post as well .
Upvotes: -1