Deployment
Our team has explored various deployment options, ultimately selecting the method detailed in this guide for its efficacy. Additionally, for demonstration purposes, you can refer to the Deployment to GitHub Pages section for alternative deployment strategies you can use to showcase your updates.
Deploying to Azure Web Apps (Windows) with IIS
This guide is crafted for individuals who already have access to the Azure subscription. It provides step-by-step instructions for setting up a new Azure Web App, specifically tailored for staging environments. Note that the process for setting up a production environment is similar, but requires a distinct web app name.
Deployments to Azure Web Apps are automated through GitHub Actions, forming an integral part of our Continuous Integration/Continuous Deployment (CI/CD) process. The CI/CD pipeline is configured to automatically trigger deployments upon merging changes into either the staging
or release
branches.
Note
The deployment process outlined here is already established and running, hosted on Azure and sponsored by the .NET Foundation. This guide serves primarily as a reference for maintainers in the event that a new deployment setup is required.
Setting up a new Azure Web App
Follow these instructions carefully to establish your Azure Web App in a staging environment. For deploying in a production environment, replicate these steps with an alternate web app name for differentiation.
- Navigate to the Azure Portal
- Select Create a resource
- Choose Create a Web App
- In the Basic Tab
- Choose your existing subscription and resource group
- Under Instance Details, enter:
- Name: stride-website-staging
- Publish: Code
- Runtime stack: ASP.NET V4.8
- OS: Windows
- Region: as the current web
- Pricing Plan - An existing App Service Plan should appear if the region and resource group match that of the existing web app. Currently we use Standard S1.
- Click Next
- In the Deployment Tab - This step can be completed later if preferred.
- Enable Continuous deployment
- Select account, organisation
Stride
, repositorystride-website
and branchstaging
- Click Next
- In the Monitoring Tab
- Leave all settings as default
- Click Next
- Monitoring Tab
- Disable Application Insights - This is not needed at this stage
- Click Next
- In the Tags Tab
- Leave this blank unless you wish to add tags
- Click Next
- In the Review Tab
- Review your settings
- Click Create
- The GitHub Action will be added to the repository and run automatically. It will fail at this stage, but this will be resolved in the subsequent steps.
Caution
If you have completed the Deployment Tab process, ensure that the deployment profile includes the DeleteExistingFiles property. This property may need to be set to False
or True
depending on the specific requirements of your deployment. For instance, Stride Docs deployment retains files from previous deployments, allowing multiple versions like 4.2
, 4.1
, etc., to be maintained. Adjust this setting based on your deployment needs.
Adjusting the Web App Configuration
- Proceed to the newly created Web App
- Click on Configuration
- Select General Settings
- Change the
Http version
to 2.0 - Change
Ftp state
to FTPS only - Change
HTTPS Only
to On - Click Save to apply the changes
Modifying the GitHub Action
The previous step will have added a GitHub Action to your repository, which might fail initially. To address this, you need to modify the GitHub Action:
- Navigate to the repository
- Select Actions
- You have the option to stop the currently running action
- Locate the new GitHub Action file (stride-website/blob/master/.github/workflows/some-file-name.yml) that was automatically generated by Azure Portal. We need to extract the
app-name
andpublish-profile
values from it and disable the push trigger.- To disable the push trigger, retain only workflow_dispatch (manual trigger) as shown below:
on: # push: # branches: # - staging workflow_dispatch:
- Open the
stride-website-staging-azure.yml
workflow and update it with the values obtained in the previous step. Save your changes. - This workflow might also need to be added to the
master
branch if it is not already present. - Execute the workflow
stride-website-staging-azure.yml
. Ensure you select the correct branchstaging
and click Run workflow. This action will deploy the website to the Azure Web App.
GitHub Actions
stride-website-github.yml
: Facilitates manual deployment to GitHub Pages in the forked repository, primarily used for showcasing updatesstride-website-release-azure.yml
: Automates deployment to production upon merging changes intorelease
branch, with a manual trigger option also availablestride-website-staging-azure.yml
: Enables automatic deployment to staging upon merging changes intostaging
branch, along with an option for manual triggeringstride-website-wiki.yml
: Automatically deploys to the GitHub Wiki when changes are pushed to thewiki
folder in themaster
branch, also includes a manual trigger feature
Deployment to GitHub Pages
To showcase your updates, especially helpful for design changes pending review, you can deploy the website either to your infrastructure or to GitHub Pages, a free hosting service. Once deployed, share the link with us for review.
Prerequisites
In your stride-website
repository:
- Navigate to Settings → Actions → General → Workflow Permissions
- Choose Read and write permissions
Run GitHub Action
- Go to Actions, select Build Stride Web for GitHub Staging
- Click Run workflow; you may optionally select a branch
- Monitor the build logs while the action is in progress
- Upon successful build, a
gh-pages
branch will be created - Navigate to Settings → Pages
- Choose the
gh-pages
branch with the root option and click Save
- Choose the
- After saving, an internal GitHub Action pages build and deployment is automatically created and triggered, deploying the content to the GitHub Pages website
- Initially, the website will be accessible at
https://[your-username].github.io/stride-website
but with broken styling
Add Custom Domain
- To resolve styling issues, deploy the site to a custom domain. This is necessary because the site isn't deployed at the root directory on GitHub Pages
- Go to Settings → Pages → Custom domain
- Enter your custom domain and follow the instructions for verification
- Upon saving, the pages build and deployment action is triggered again, adding a
CNAME
file containing your custom domain name to thegh-pages
branch - Your website should now be fully operational on your custom domain, for example,
https://stride-website.vaclavelias.com/
is hosted on GitHub Pages