Create azure-webapps-node.yml #2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # This workflow will build and push a node.js application to an Azure Web App when a commit is pushed to your default branch. | ||
| # | ||
| # This workflow assumes you have already created the target Azure App Service web app. | ||
| # For instructions see https://docs.microsoft.com/en-us/azure/app-service/quickstart-nodejs?tabs=linux&pivots=development-environment-cli | ||
| # | ||
| # To configure this workflow: | ||
| # | ||
| # 1. Download the Publish Profile for your Azure Web App. You can download this file from the Overview page of your Web App in the Azure Portal. | ||
| # For more information: https://docs.microsoft.com/en-us/azure/app-service/deploy-github-actions?tabs=applevel#generate-deployment-credentials | ||
| # | ||
| # 2. Create a secret in your repository named AZURE_WEBAPP_PUBLISH_PROFILE, paste the publish profile contents as the value of the secret. | ||
| # For instructions on obtaining the publish profile see: https://docs.microsoft.com/azure/app-service/deploy-github-actions#configure-the-github-secret | ||
| # | ||
| # 3. Change the value for the AZURE_WEBAPP_NAME. Optionally, change the AZURE_WEBAPP_PACKAGE_PATH and NODE_VERSION environment variables below. | ||
| # | ||
| # For more information on GitHub Actions for Azure: https://github.com/Azure/Actions | ||
| # For more information on the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy | ||
| # For more samples to get started with GitHub Action workflows to deploy to Azure: https://github.com/Azure/actions-workflow-samples | ||
| on: | ||
| push: | ||
| branches: [ "main" ] | ||
| workflow_dispatch: | ||
| env: | ||
| AZURE_WEBAPP_NAME: your-app-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 | ||
| NODE_VERSION: '20.x' # set this to the node version to use | ||
| permissions: | ||
| contents: read | ||
| jobs: | ||
| build: | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: actions/checkout@v4 | ||
| - name: Set up Node.js | ||
| uses: actions/setup-node@v4 | ||
| with: | ||
| node-version: ${{ env.NODE_VERSION }} | ||
| cache: 'npm' | ||
| - name: npm install, build, and test | ||
| run: | | ||
| npm install | ||
| npm run build --if-present | ||
| npm run test --if-present | ||
| - name: Upload artifact for deployment job | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: node-app | ||
| path: . | ||
| deploy: | ||
| permissions: | ||
| contents: none | ||
| runs-on: ubuntu-latest | ||
| needs: build | ||
| environment: | ||
| name: 'Development' | ||
| url: ${{ steps.deploy-to-webapp.outputs.webapp-url }} | ||
| steps: | ||
| - name: Download artifact from build job | ||
| uses: actions/download-artifact@v4 | ||
| with: | ||
| name: node-app | ||
| - name: 'Deploy to Azure WebApp' | ||
| id: deploy-to-webapp | ||
| uses: azure/webapps-deploy@v2 | ||
| with: | ||
| app-name: ${{ env.AZURE_WEBAPP_NAME }} | ||
| publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }} | ||
| package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }} | ||
| - name: Cache | ||
| uses: actions/cache@v5.0.4 | ||
| with: | ||
| # A list of files, directories, and wildcard patterns to cache and restore | ||
| path: | ||
| # An explicit key for restoring and saving the cache | ||
| key: | ||
| # An ordered multiline string listing the prefix-matched keys, that are used for restoring stale cache if no cache hit occurred for key. Note `cache-hit` returns false in this case. | ||
| restore-keys: # optional | ||
| # The chunk size used to split up large files during upload, in bytes | ||
| upload-chunk-size: # optional | ||
| # An optional boolean when enabled, allows windows runners to save or restore caches that can be restored or saved respectively on other platforms | ||
| enableCrossOsArchive: # optional, default is false | ||
| # Fail the workflow if cache entry is not found | ||
| fail-on-cache-miss: # optional, default is false | ||
| # Check if a cache entry exists for the given input(s) (key, restore-keys) without downloading the cache | ||
| lookup-only: # optional, default is false | ||
| # Run the post step to save the cache even if another step before fails | ||
| save-always: # optional, default is false | ||
| - name: Setup Node.js environment | ||
| uses: actions/setup-node@v6.3.0 | ||
| with: | ||
| # Version Spec of the version to use. Examples: 12.x, 10.15.1, >=10.15.0. | ||
| node-version: # optional | ||
| # File containing the version Spec of the version to use. Examples: package.json, .nvmrc, .node-version, .tool-versions. | ||
| node-version-file: # optional | ||
| # Target architecture for Node to use. Examples: x86, x64. Will use system architecture by default. | ||
| architecture: # optional | ||
| # Set this option if you want the action to check for the latest available version that satisfies the version spec. | ||
| check-latest: # optional | ||
| # Optional registry to set up for auth. Will set the registry in a project level .npmrc and .yarnrc file, and set up auth to read in from env.NODE_AUTH_TOKEN. | ||
| registry-url: # optional | ||
| # Optional scope for authenticating against scoped registries. Will fall back to the repository owner when using the GitHub Packages registry (https://npm.pkg.github.com/). | ||
| scope: # optional | ||
| # Used to pull node distributions from node-versions. Since there's a default, this is typically not supplied by the user. When running this action on github.com, the default value is sufficient. When running on GHES, you can pass a personal access token for github.com if you are experiencing rate limiting. | ||
| token: # optional, default is ${{ github.server_url == 'https://github.com' && github.token || '' }} | ||
| # Used to specify a package manager for caching in the default directory. Supported values: npm, yarn, pnpm. | ||
| cache: # optional | ||
| # Set to false to disable automatic caching. By default, caching is enabled when either devEngines.packageManager or the top-level packageManager field in package.json specifies npm as the package manager. | ||
| package-manager-cache: # optional, default is true | ||
| # Used to specify the path to a dependency file: package-lock.json, yarn.lock, etc. Supports wildcards or a list of file names for caching multiple dependencies. | ||
| cache-dependency-path: # optional | ||
| # Used to specify an alternative mirror to download Node.js binaries from | ||
| mirror: # optional | ||
| # The token used as Authorization header when fetching from the mirror | ||
| mirror-token: # optional | ||
| - name: Download a Build Artifact | ||
| uses: actions/download-artifact@v3.1.0 | ||
| with: | ||
| # Artifact name | ||
| name: # optional | ||
| # Destination path | ||
| path: # optional | ||
| - name: Setup Go environment | ||
| uses: actions/setup-go@v6.4.0 | ||
| with: | ||
| # The Go version to download (if necessary) and use. Supports semver spec and ranges. Be sure to enclose this option in single quotation marks. | ||
| go-version: # optional | ||
| # Path to the go.mod, go.work, .go-version, or .tool-versions file. | ||
| go-version-file: # optional | ||
| # Set this option to true if you want the action to always check for the latest available version that satisfies the version spec | ||
| check-latest: # optional | ||
| # Used to pull Go distributions from go-versions. Since there's a default, this is typically not supplied by the user. When running this action on github.com, the default value is sufficient. When running on GHES, you can pass a personal access token for github.com if you are experiencing rate limiting. | ||
| token: # optional, default is ${{ github.server_url == 'https://github.com' && github.token || '' }} | ||
| # Used to specify whether caching is needed. Set to true, if you'd like to enable caching. | ||
| cache: # optional, default is true | ||
| # Used to specify the path to a dependency file (e.g., go.mod, go.sum) | ||
| cache-dependency-path: # optional | ||
| # Target architecture for Go to use. Examples: x86, x64. Will use system architecture by default. | ||
| architecture: # optional | ||
| # Custom base URL for downloading Go distributions. Use this to download Go from a mirror or custom source. Defaults to "https://go.dev/dl". Can also be set via the GO_DOWNLOAD_BASE_URL environment variable. The input takes precedence over the environment variable. | ||
| go-download-base-url: # optional | ||
| - name: First interaction | ||
| uses: actions/first-interaction@v1.3.0 | ||
| with: | ||
| # Token for the repository. Can be passed in using {{ secrets.GITHUB_TOKEN }} | ||
| repo-token: | ||
| # Comment to post on an individual's first issue | ||
| issue-message: # optional | ||
| # Comment to post on an individual's first pull request | ||
| pr-message: # optional | ||