【问题标题】:Azure Linux App Service : Installing packages after deploy from Devops pipelineAzure Linux 应用服务:从 Devops 管道部署后安装包
【发布时间】:2022-01-21 20:31:55
【问题描述】:

我目前正在 Azure Devops 中设置 CI/CD 管道,以便在 linux 托管应用服务(不是 VM)上部署 NodeJS 应用。

我的构建和部署都很顺利,但是我需要确保在应用部署后在环境中安装了一些包。

问题是:无论我在部署后创建什么 apt-get 脚本,我都必须手动运行它们才能真正生效。不过,在管道日志中,它们似乎已被执行。

这是我负责部署的 yaml 代码的一部分,我错过了什么吗?

- stage: Deploy
  displayName: Deploy stage
  dependsOn: Build
  condition: succeeded()
  jobs:
  - deployment: Deploy
    displayName: Deploy
    environment: $(environmentName)
    pool:
      vmImage: $(vmImageName)
    workspace:
      clean: all
    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureWebApp@1
            displayName: 'Azure Web App Deploy:'
            inputs:
              azureSubscription: $(azureSubscription)
              appType: webAppLinux
              appName: $(webAppName)
              runtimeStack: 'NODE|16-lts'
              package: $(Pipeline.Workspace)/drop/drop$(Build.BuildNumber).zip
              startUpCommand: 'pm2 start index.js --no-daemon'
        on:
         success:
           steps:
           - script: sudo apt-get update
             displayName: apt update
           - script: sudo apt-get -y [SOME LIBS] 
             displayName: try install dependencies

谢谢!

【问题讨论】:

  • 为什么要在部署应用后尝试安装依赖项?
  • 因为有linux包,环境中默认没有,但是需要运行一些npm包。例如,它是 puppeteer,只有在我执行此命令后才有效:“apt-get -y install libglib2.0-0 libgconf-2-4 libatk1.0-0 libatk-bridge2.0-0 libgdk-pixbuf2.0-0 libgtk-3-0 libgbm-dev libnss3-dev libxss-dev libasound2" 由于每次部署都会重置环境,因此我需要在部署应用程序后运行它,最好不要手动运行。
  • 为简单起见,您可以在 startUpCommand 中添加这些命令。此外,您可以使用 docker 容器。 Docker 会给你更多的灵活性

标签: linux azure yaml azure-web-app-service devops


【解决方案1】:

现在,我在每次部署后手动运行一个“startup.sh”文件。不过稍后会通过 docker

【讨论】:

    猜你喜欢
    • 2020-04-16
    • 2021-06-06
    • 1970-01-01
    • 2019-09-28
    • 2020-10-22
    • 2019-10-19
    • 1970-01-01
    • 2022-06-16
    • 1970-01-01
    相关资源
    最近更新 更多