There are a few approaches. At our company we have an ARM template just to create the staging slot (one time) and we use azure app service deploy tasks to deploy the web deployment packages to the staging slot. Afterwards, the swap can be executed. ALlALL is configured in Azure DevOps pipelines.
More info can be found here: https://blog.baslijten.com/how-to-deploy-sitecore-web-deploy-packages-using-the-vsts-azure-app-service-task/