All Projects → Azure → Ng Deploy Azure

Azure / Ng Deploy Azure

Licence: mit
Deploy Angular apps to Azure using the Angular CLI

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to Ng Deploy Azure

Altium Library
Open source Altium Database Library with over 147,000 high quality components and full 3d models.
Stars: ✭ 875 (+1132.39%)
Mutual labels:  azure, schematics
Smilr
Microservices reference app showcasing a range of technologies, platforms & methodologies
Stars: ✭ 68 (-4.23%)
Mutual labels:  azure
Ng Toolkit
⭐️ Angular tool-box! Start your PWA in two steps! Add Serverless support for existing projects and much more
Stars: ✭ 1,116 (+1471.83%)
Mutual labels:  schematics
Aspnetcore.identity.documentdb
A Cosmos DB / DocumentDB Storage Provider for ASP.NET Core Identity
Stars: ✭ 64 (-9.86%)
Mutual labels:  azure
Private Aks Cluster
This sample shows how to create a private AKS cluster in a virtual network along with a jumpbox virtual machine.
Stars: ✭ 63 (-11.27%)
Mutual labels:  azure
React Deploy S3
Deploy create react app's in AWS S3
Stars: ✭ 66 (-7.04%)
Mutual labels:  deploy
Azure password harvesting
Plaintext Password harvesting from Azure Windows VMs
Stars: ✭ 61 (-14.08%)
Mutual labels:  azure
Serverless Graphql Workshop
GraphQL and Serverless workshop
Stars: ✭ 70 (-1.41%)
Mutual labels:  azure
Xxamarin
Repositório com ✨ 141 Exemplos de Implementações e 📦 13 Pacotes de Xamarin
Stars: ✭ 68 (-4.23%)
Mutual labels:  azure
Terraform Security Scan
Run a security scan on your terraform with the very nice https://github.com/liamg/tfsec
Stars: ✭ 64 (-9.86%)
Mutual labels:  azure
Aspnetcoreid4external
external OpenID Connect Login to IdentityServer4 with AAD
Stars: ✭ 63 (-11.27%)
Mutual labels:  azure
70 535 Architecting Microsoft Azure Solutions Exam Notes
Exam Notes 70-535: Architecting Microsoft Azure Solutions
Stars: ✭ 63 (-11.27%)
Mutual labels:  azure
Spel
STIG-Partitioned Enterprise Linux (spel)
Stars: ✭ 66 (-7.04%)
Mutual labels:  azure
Ha Sap Terraform Deployments
Automated SAP/HA Deployments in Public/Private Clouds
Stars: ✭ 61 (-14.08%)
Mutual labels:  azure
Elastic Beanstalk Terraform Setup
🎬 Playbook for setting up & deploying AWS Beanstalk Applications on Docker with 1 command
Stars: ✭ 69 (-2.82%)
Mutual labels:  deploy
Aspnetboilerplate Core Ng
Tutorial for ASP.NET Boilerplate Core + Angular
Stars: ✭ 61 (-14.08%)
Mutual labels:  azure
Cyberduck
Cyberduck is a libre FTP, SFTP, WebDAV, Amazon S3, Backblaze B2, Microsoft Azure & OneDrive and OpenStack Swift file transfer client for Mac and Windows.
Stars: ✭ 1,080 (+1421.13%)
Mutual labels:  azure
Laravel Schematics
A Laravel package making a diagram of your models, relations and the ability to build them with it
Stars: ✭ 1,137 (+1501.41%)
Mutual labels:  schematics
The forge
Our groundbreaking, lightning fast PWA CLI tool
Stars: ✭ 70 (-1.41%)
Mutual labels:  deploy
Meteor Azure
Automate Meteor deployments on Azure App Service
Stars: ✭ 69 (-2.82%)
Mutual labels:  azure

@azure/ng-deploy

npm version Build Status The MIT License

Deploy Angular apps to Azure using the Angular CLI

@azure/ng-deploy helps you deploy your Angular app to Azure Static Hosting using the Angular CLI.

Quick-start

  1. Install the Angular CLI (v8.3.0 or greater) and create a new Angular project.

    npm install -g @angular/cli
    ng new hello-world --defaults
    cd hello-world
    
  2. Add ng-deploy to your project and create your Azure blob storage resources.

    ng add @azure/ng-deploy
    
  3. You may be prompted you to sign in to Azure, providing a link to open in your browser and a code to paste in the login page.

  4. Deploy your project to Azure.

    ng run hello-world:deploy
    

    The project will be built with the production configuration (like running ng build --prod).

You will see output similar to the following. Browse to the link and view your site running in Azure blob storage!

see your deployed site at https://helloworldstatic52.z22.web.core.windows.net/

Requirements

You will need the Angular CLI, an Angular project, and an Azure Subscription to deploy to Azure. Details of these requirements are in this section.

Azure

If you don't have an Azure subscription, create your Azure free account from this link.

Angular CLI

  1. Install the Angular CLI (v8 or greater).

    npm install -g @angular/cli
    
  2. Run ng --version, make sure you have angular CLI version v8.0.0 or greater.

  3. If need instructions to update the CLI, follow these upgrade instructions.

  4. Update your project using the command:

    ng update @angular/cli @angular/core
    

An Angular App Created by the Angular CLI

You will need an Angular app created and managed by the Angular CLI. For help getting started with a new Angular app, check out the Angular CLI.

A simple app can be created with ng new hello-world --defaults

Verify you have TypeScript version 3.4.5 or greater in your package.json file of your angular project

Details of ng-azure-deploy

How to add and configure @azure/ng-deploy

Add @azure/ng-deploy to your project by running:

ng add @azure/ng-deploy

This command will install the package to your project.

Once done, it will prompt you to sign in to Azure, providing a link to open in your browser and a code to paste in the login page.

After you sign in, it will create the needed resources in your Azure account (resource group and storage account) and configure them for static hosting. To manually configure the resources that will be used, refer to [additional options](#additional options).

Note: If you have several Azure subscriptions you will be asked to choose one.

The command will create the file azure.json with the deployment configuration and modify angular.json with the deploy commands.

Note: at the moment, the command will fail if an azure.json file already exists. Please remove the file before running the command.

deploy

You can deploy your application to the selected storage account by running the following command.

ng deploy

By default, the project will be built with the production option (similar to running ng build --prod). The files will be taken from the path configured in the build command in angular.json.

Follow these instructions if you want to set up a different path and/or build target.

You may be asked to sign in to Azure again. Then, the project will be deployed to the storage account specified in azure.json. The link to the deployed app will be presented.

Logging out from Azure

To clear the cached credentials run:

ng run <project-name>:azureLogout

This command is available only after signing in to Azure.

Data/Telemetry

This project collects usage data and sends it to Microsoft to help improve our products and services.

Read Microsoft's privacy statement to learn more.

To turn off telemetry, add the telemetry flag (--telemetry or -t) with the false value when running ng add, like this:

ng add ng-deploy-azure --telemetry=false

or

ng add ng-deploy-azure -t=false

Additional options

Manual configurations

To manually select and/or create the resources needed for deployment, use the --manual (or -m) option:

ng add @azure/ng-deploy --manual

You will be prompted to select or create the resource group and the storage account in which the app will be deployed. If you choose to create a resource group you will be asked to select the geographical location.

Passing configuration options

You can pass the names of the resources you'd like to use when running the command. Resources that don't already exist will be created. If using --manual you will be prompted to select the remaining configuration options. Otherwise, defaults will be used.

The available options are:

  • --subscriptionId (-i) - subscription ID under which to select and/or create new resources
  • --subscriptionName (-n) - subscription name under which to select and/or create new resources
  • --resourceGroup (-g) - name of the Azure Resource Group to deploy to
  • --account (-a) - name of the Azure Storage Account to deploy to
  • --location (-l) - location where to create storage account e.g. "West US" or westus
  • --telemetry (-t) - see Data/Telemetry

Example:

ng add @azure/ng-deploy -m -l="East US" -a=myangularapp

Name validation

When creating a new storage account, the provided name will be validated.

The requirements for these names are:

  • between 3 and 24 characters
  • lower case letters and numbers only
  • unique across Azure

If the validation fails, the tool will suggest a valid name. You will be able to select it or try another one.

Changing the build target

By default, the project is built using the build target with the production configuration, as configured in angular.json.

You can change this by editing the target and/or configuration in azure.json (after completing @azure/ng-add). Change it to a target that exists for the project in angular.json and optionally with one of its configurations. Make sure the target specifies an outputPath.

For example, if one of the targets under projects.hello-world.architect in angular.json is special-build with an optional configuration named staging, you can specify it as the target this way:

// azure.json
{
  "hosting": [
    {
      "app": {
        "project": "hello-world",
        "target": "special-build",
        "configuration": "staging"
      },
      "azureHosting": {
        ...
      }
    }
  ]
}

Another option is to skip build, and deploy directly from a specific location. To do this, delete the target and configuration from azure.json, and provide a path with a value relative to the root of the project.

For example, if the files you with to deploy exist in public/static/hello-world, change the configuration this way:

// azure.json
{
  "hosting": [
    {
      "app": {
        "project": "hello-world",
        "path": "public/static/hello-world"
      },
      "azureHosting": {
        ...
      }
    }
  ]
}

In the future we'll add an option to change this through the command line.

Continuous Integration Mode

When deploying from a CI environement, we switch to a non-interactive login process that requires you to provide Service Principal credentials as environment variables. A Service Principal is an application within Azure Active Directory that we can use to perform unattended resource and service level operations.

Creating a Service Principal

In order to create and get the Service Principal application credentials, you can either use the Azure Portal or use the Azure CLI.

We recommend using the Azure CLI and running the following command:

AZURE_SUBSCRIPTION_ID="<a valid subscription ID>"
SP_NAME='<a principal service name>'
az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/$AZURE_SUBSCRIPTION_ID" --name="$SP_NAME"

This command will output the following values:

{
  "appId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "displayName": "<the principal service name>",
  "name": "http://<the principal service name>",
  "password": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "tenant": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

You can use the Azure CLI to test that these values work and you can log in:

az login --service-principal -u $CLIENT_ID -p $CLIENT_SECRET --tenant $TENANT_ID

Configuring the environment variables

We will need to set the following environment variables BEFORE adding @azure/ng-deploy or running the deploy command:

  • CI: this must be set to 1. This will enable the CI mode.
  • CLIENT_ID: is the appId created above.
  • CLIENT_SECRET: is the password created above.
  • TENANT_ID: is the tenant created above.
  • AZURE_SUBSCRIPTION_ID: is your valid subscription ID.

Here is a simple shell example:

export CI=1
export CLIENT_ID='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
export CLIENT_SECRET='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
export TENANT_ID='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
export AZURE_SUBSCRIPTION_ID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
ng run <project-name>:deploy

For security reasons, we highly recommend to create and provide these environment variables through a different method, eg. Github Secrets or Azure DevOps Secrets.

Reporting Security Issues

Security issues and bugs should be reported privately, via email, to the Microsoft Security Response Center (MSRC) at [email protected]. You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Further information, including the MSRC PGP key, can be found in the Security TechCenter.

Contributing

Please refer to CONTRIBUTING for CLA guidance.

Thank You

  • Minko Gechev for guiding us through the new Angular CLI Architect API, which enables adding commands.

  • Brian Holt for creating azez, which provided us an (az)easy start.

  • John Papa for guiding through and supporting the development, publish and release.

Related Resources

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].