…
|
||
---|---|---|
.. | ||
Dockerfile | ||
README.md | ||
action.yml | ||
entrypoint.sh |
README.md
GitHub Action for generating a Dockerfile to build and run Azure Web Apps
With the Azure App Service Actions for GitHub, you can automate your workflow to deploy Azure Web Apps using GitHub Actions.
Get started today with a free Azure account!
This repository contains the GitHub Action for generating a Dockerfile to build and run Azure Web Apps using the Oryx build system. Currently, the following platforms can be built using this GitHub Action:
- .NET Core
- Node
- PHP
- Python
The generated Dockerfile follows a template similar to the following:
ARG RUNTIME=<PLATFORM_NAME>:<PLATFORM_VERSION>
FROM mcr.microsoft.com/oryx/build:<BUILD_TAG> as build
WORKDIR /app
COPY . .
RUN oryx build /app
FROM mcr.microsoft.com/oryx/${RUNTIME}
COPY --from=build /app /app
RUN cd /app && oryx
ENTRYPOINT ["/app/run.sh"]
Once this Dockerfile is produced, it can be built and pushed to a registry, such as Azure Container Registry, and used at a later time to deploy the Azure Web App.
If you are looking for a GitHub Action to build your Azure Web App, consider using azure/appservice-build
.
If you are looking for a GitHub Action to deploy your Azure Web App, consider using azure/webapps-deploy
.
The definition of this GitHub Action is in action.yml
.
End-to-End Sample Workflows
Dependencies on other GitHub Actions
actions/checkout
- Checkout your Git repository content into the GitHub Actions agent
Other GitHub Actions
azure/login
- Authenticate the current workflow to build, test, package, release and deploy to Azure
azure/docker-login
- Log in to a private container registry, such as Azure Container registry
azure/webapps-container-deploy
- Deploy a web app container to Azure
Sample workflow to push an image using Azure CLI
The following is an end-to-end sample of generating the Dockerfile, building the image, and pushing it to Azure Container Registry using Azure CLI whenever a commit is pushed:
on: push
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: Cloning repository
uses: actions/checkout@v1
- name: Running Oryx to generate a Dockerfile
uses: microsoft/oryx/actions/oryx-dockerfile@master
id: oryx
- name: Azure authentication
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Building image and pushing to ACR
run: |
az acr build -t <IMAGE_NAME>:<TAG> \
-r <ACR_NAME> \
-f {{ steps.oryx.outputs.dockerfile-path }} \
.
The following variables should be replaced in your workflow .yaml
file:
<ACR_NAME>
- Name of the Azure Container Registry that you are pushing to
<IMAGE_NAME>
- Name of the image that will be pushed to your registry
<TAG>
- Name of the image tag
The following variables should be set in the GitHub repository's secrets store:
AZURE_CREDENTIALS
- Used to authenticate calls to Azure; for more information on setting this secret, please see the
azure/actions/login
action
- Used to authenticate calls to Azure; for more information on setting this secret, please see the
Sample workflow to push an image using Docker
The following is an end-to-end sample of generating the Dockerfile, building the image, and pushing it to a registry using Docker whenever a commit is pushed:
on: push
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: Cloning repository
uses: actions/checkout@v1
- name: Running Oryx to generate a Dockerfile
uses: microsoft/oryx/actions/oryx-dockerfile@master
id: oryx
- name: Logging into registry
uses: azure/docker-login@master
with:
login-server: <REGISTRY_NAME>
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- name: Building image and pushing to registry using Docker
run: |
docker build . -t <REGISTRY_NAME>/<IMAGE_NAME>:<TAG> -f {{ steps.oryx.outputs.dockerfile-path }}
docker push <REGISTRY_NAME>/<IMAGE_NAME>:<TAG>
The following variables should be replaced in your workflow:
<REGISTRY_NAME>
- Name of the registry that you are pushing to
<IMAGE_NAME>
- Name of the image that will be pushed to your registry
<TAG>
- Name of the image tag
The following variables should be set in the GitHub repository's secrets store:
REGISTRY_USERNAME
- The username for the container registry; for more information on setting this secret, please see the
azure/container-actions/docker-login
action
- The username for the container registry; for more information on setting this secret, please see the
REGISTRY_PASSWORD
- The password for the container registry; for more information on setting this secret, please see the
azure/container-actions/docker-login
action
- The password for the container registry; for more information on setting this secret, please see the
Sample workflow to deploy an Azure Web App Container
The following is an end-to-end sample of generating the Dockerfile, building the image, pushing it to a registry using Docker, and deploying the web app to Azure whenever a commit is pushed:
on: push
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Cloning repository
uses: actions/checkout@v1
- name: Running Oryx to generate a Dockerfile
uses: microsoft/oryx/actions/oryx-dockerfile@master
id: oryx
- name: Logging into Azure
uses: azure/login@master
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Logging into registry
uses: azure/docker-login@master
with:
login-server: <REGISTRY_NAME>
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- name: Building image and pushing to registry using Docker
run: |
docker build . -t <REGISTRY_NAME>/<IMAGE_NAME>:<TAG> -f {{ steps.oryx.outputs.dockerfile-path }}
docker push <REGISTRY_NAME>/<IMAGE_NAME>:<TAG>
- name: Deploying container web app to Azure
uses: azure/webapps-container-deploy@v1
with:
app-name: <WEB_APP_NAME>
images: <REGISTRY_NAME>/<IMAGE_NAME>:<TAG>
The following variables should be replaced in your workflow:
<REGISTRY_NAME>
- Name of the registry that you are pushing to
<IMAGE_NAME>
- Name of the image that will be pushed to your registry
<TAG>
- Name of the image tag
<WEB_APP_NAME>
- Name of the web app that's being deployed
The following variables should be set in the GitHub repository's secrets store:
AZURE_CREDENTIALS
- Used to authenticate calls to Azure; for more information on setting this secret, please see the
azure/actions/login
action
- Used to authenticate calls to Azure; for more information on setting this secret, please see the
REGISTRY_USERNAME
- The username for the container registry; for more information on setting this secret, please see the
azure/container-actions/docker-login
action
- The username for the container registry; for more information on setting this secret, please see the
REGISTRY_PASSWORD
- The password for the container registry; for more information on setting this secret, please see the
azure/container-actions/docker-login
action
- The password for the container registry; for more information on setting this secret, please see the