title | intro | versions | type | topics | redirect_from | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Deploying PHP to Azure App Service |
You can deploy your PHP project to Azure App Service as part of your continuous deployment (CD) workflows. |
|
tutorial |
|
|
{% data reusables.actions.enterprise-github-hosted-runners %}
This guide explains how to use {% data variables.product.prodname_actions %} to build and deploy a PHP project to Azure App Service.
Note
{% data reusables.actions.about-oidc-short-overview %} and AUTOTITLE.
Before creating your {% data variables.product.prodname_actions %} workflow, you will first need to complete the following setup steps:
{% data reusables.actions.create-azure-app-plan %}
-
Create a web app.
For example, you can use the Azure CLI to create an Azure App Service web app with a PHP runtime:
az webapp create \ --name MY_WEBAPP_NAME \ --plan MY_APP_SERVICE_PLAN \ --resource-group MY_RESOURCE_GROUP \ --runtime "php|7.4"
In the command above, replace the parameters with your own values, where
MY_WEBAPP_NAME
is a new name for the web app.
{% data reusables.actions.create-azure-publish-profile %}
- Optionally, configure a deployment environment. {% data reusables.actions.about-environments %}
Once you've completed the prerequisites, you can proceed with creating the workflow.
The following example workflow demonstrates how to build and deploy a PHP project to Azure App Service when there is a push to the main
branch.
Ensure that you set AZURE_WEBAPP_NAME
in the workflow env
key to the name of the web app you created. If the path to your project is not the repository root, change AZURE_WEBAPP_PACKAGE_PATH
to the path to your project. If you use a version of PHP other than 8.x
, changePHP_VERSION
to the version that you use.
{% data reusables.actions.delete-env-key %}
{% data reusables.actions.actions-not-certified-by-gh.l7l.us.kgment %}
{% data reusables.actions.actions-use-sha-pinning-comment %}
name: Build and deploy PHP app to Azure Web App
env:
AZURE_WEBAPP_NAME: MY_WEBAPP_NAME # set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: '.' # set this to the path to your web app project, defaults to the repository root
PHP_VERSION: '8.x' # set this to the PHP version to use
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: {% data reusables.actions.action-checkout %}
- name: Setup PHP
uses: shivammathur/setup-php@1f2e3d4c5b6a7f8e9d0c1b2a3e4f5d6c7b8a9e0f
with:
php-version: {% raw %}${{ env.PHP_VERSION }}{% endraw %}
- name: Check if composer.json exists
id: check_files
uses: andstor/file-existence-action@2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b
with:
files: 'composer.json'
- name: Get Composer Cache Directory
id: composer-cache
if: steps.check_files.outputs.files_exists == 'true'
run: |
echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Set up dependency caching for faster installs
uses: {% data reusables.actions.action-cache %}
if: steps.check_files.outputs.files_exists == 'true'
with:
path: {% raw %}${{ steps.composer-cache.outputs.dir }}{% endraw %}
key: {% raw %}${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}{% endraw %}
restore-keys: |
{% raw %}${{ runner.os }}-composer-{% endraw %}
- 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: Upload artifact for deployment job
uses: {% data reusables.actions.action-upload-artifact %}
with:
name: php-app
path: .
deploy:
runs-on: ubuntu-latest
needs: build
environment:
name: 'production'
url: {% raw %}${{ steps.deploy-to-webapp.outputs.webapp-url }}{% endraw %}
steps:
- name: Download artifact from build job
uses: {% data reusables.actions.action-download-artifact %}
with:
name: php-app
- name: 'Deploy to Azure Web App'
id: deploy-to-webapp
uses: azure/webapps-deploy@85270a1854658d167ab239bce43949edb336fa7c
with:
app-name: {% raw %}${{ env.AZURE_WEBAPP_NAME }}{% endraw %}
publish-profile: {% raw %}${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}{% endraw %}
package: .
The following resources may also be useful:
- For the original workflow template, see
azure-webapps-php.yml
in the {% data variables.product.prodname_actions %}starter-workflows
repository. - The action used to deploy the web app is the official Azure
Azure/webapps-deploy
action. - For more examples of GitHub Action workflows that deploy to Azure, see the actions-workflow-samples repository.