Azure Devops Angular Environment Variables

后端 未结 2 2003
我寻月下人不归
我寻月下人不归 2021-01-03 02:22

At this point, when a commit happens to the Master branch, a build pipeline will generate an artifact based on \"ng build --prod\", so this artifact uses the production conf

相关标签:
2条回答
  • 2021-01-03 02:55

    There are many ways. I am doing it using "Tokens" My production environment looks like this

    export const environment = {
      production: true,
      host: 'https://#{{FLYMARK_MAIN_DOMAIN}}#',
      stripeKey: '#{{STRIPE_KEY}}'
    };
    

    So when I build my version is not usable because instead of variables i have tokens.

    Then when I do release I do have step to replace tokens. this need to run before you deploy scripts (just modify to your needs)

    steps:
    - task: qetza.replacetokens.replacetokens-task.replacetokens@2
      displayName: 'Replace tokens in **/Scripts/widgets/**/*.js'
      inputs:
        targetFiles: '**/Scripts/widgets/**/*.js'
        actionOnMissing: fail
        tokenPrefix: '#{{'
        tokenSuffix: '}}#'
    

    This task will find my release variables like FLYMARK_MAIN_DOMAIN, STRIPE_KEY and replace in my js files.

    Main benefit is that you build once and can deploy to anywhere just need to replace tokens

    PS. Lets say you have dev, staging, prod. Now To dev you deploy after build which is triggered by new push to master, to staging you release when its approved (azure pipeline support that)

    So now lets say you have in dev version 100, you decided to push it into staging and your team start testing. After 3 days your development team pushed to master lots of new stuff so on dev you have version 123, but in staging you still have version 100. After team tested in staging you will push same version to production because you are confident, if you will use separate builds for environment when you are ready to deploy to production you have lots of new stuff in master and maybe you are not confident to push it to production. Again each case is different and there is many ways to do it, I just like this way of doing because it suits my projects.

    0 讨论(0)
  • 2021-01-03 02:56

    You can add your azure repo as the artifacts to your release pipeline and then move your build pipeline tasks to the test and prod stages in release pipeline to build and deploy your app respectively. Check below steps.

    1, Go the release pipeline edit page and click Add in Artifacts part, TO add your azure repo to the release pipeline as artifacts

    2, Click Continuous deployment trigger in Artifacts part to enable Continuous deployment trigger and set the branch filter.

    3, Create stage Test and stage Prod.

    4, Copy your build pipeline tasks to Prod stage. And run ng build env=prod --prod to build your app. And then deploy your app to prod environment.

    .

    5,Copy your build pipeline tasks to Test stage. And run ng build env=test --prod to build your app. And then deploy your app to test environment.

    Hope above helps.

    0 讨论(0)
提交回复
热议问题