为圈子CI配置yaml文件,包括Angular项目的环境变量

时间:2018-12-18 05:47:10

标签: angular circleci circleci-2.0

我正在尝试构建一个项目,但是我的.api-keys文档被忽略了。

因此,我将密钥作为环境变量添加到了循环CI上的项目中。

我的问题是我不确定在哪里/如何让我的Yaml配置脚本知道它们是什么:

旧的配置脚本:

version: 2.1
orbs:
  cypress: cypress-io/cypress@1.0.1
workflows:
  build:
    jobs:
      - cypress/install:
          build: 'npm run build'
      - cypress/run:
          requires:
            - cypress/install
          start: 'npm start'

我要添加的行(我认为吗?):

environment: 
    masterFirebaseConfig: $masterFirebaseConfig

这是正确的做法吗?这行在上面的yaml中应该放在哪里?

非常感谢您提供任何提示!

2018年12月29日更新:

我将api-keys.ts文件更新为此:

export var masterFirebaseConfig = {apiKey: $fireBaseApiKey, authDomain: 'dataJitsu.firebaseapp.com',databaseURL: 'https://datajitsu.firebaseio.com',storageBucket: '',messagingSenderId: '495992924984'};
export var masterStripeConfig = {publicApiTestKey: $masterStripePublicApiKey,secretApiTestKey: $masterStripeSecretApiKey,publicApiKey: '',secretApiKey: ''};

其中$ fireBaseApiKey,$ masterStripePublicApiKey和$ masterStripeSecretApiKey是我添加到项目中的环境变量。

这似乎也不起作用:

  src / app / api-keys.ts(1,44)中的

ERROR:错误TS2304:找不到名称   '$ fireBaseApiKey'。 src / app / api-keys.ts(2,52):错误TS2304:无法   找到名称“ $ masterStripePublicApiKey”。 src / app / api-keys.ts(2,96):   错误TS2304:找不到名称'$ masterStripeSecretApiKey'。

2 个答案:

答案 0 :(得分:4)

如果您已经将密钥添加为CircleCI中的环境变量,则它们已可用于您的构建作业。只需按名称引用即可(例如$MY_PRECIOUS_KEY)。

如果您要覆盖现有值或设置新值,则只需set an environment variable in your config script

答案 1 :(得分:2)

我在VSTS上为我的角度项目实现了这种CI-CD,并通过以下方式进行部署。

这是 build.yaml 文件的配置

resources:
- repo: self
queue:
  name: Hosted VS2017
  condition: succeeded()
  demands: npm

steps:
- task: Npm@1
  displayName: npm install
  inputs:
    verbose: false

- task: Npm@1
  displayName: npm custom
  inputs:
    command: custom
    verbose: false
    customCommand: 'run build'

- task: ArchiveFiles@2
  displayName: Archive dist
  inputs:
    rootFolderOrFile: dist
    includeRootFolder: false

- task: PublishBuildArtifacts@1
  displayName: Publish Artifact: drop
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'

我专门创建了部署文件环境,如下所示。这是一个质量检查实例。

apiVersion: v1
kind: Service
metadata:
  name: portal
  labels:
    app: portal
spec:
  loadBalancerIP: 104.210.66.49
  type: LoadBalancer
  ports:
  - port: 80
    name: http
  selector:
    app: portal
---
apiVersion: apps/v1 
kind: Deployment
metadata:
  name: portal
spec:
  selector:
    matchLabels:
      app: portal
  replicas: 1 
  template: 
    metadata:
      labels:
        app: portal
    spec:
      containers:
      - name: portal
        image: yourdomain.azurecr.io/portal
        ports:
        - containerPort: 80
        env:
        - name: IdentityServerAuthentication__Authority
          value: http://id.qa.yourdomain.com  # Identity URL
        - name: env
          value: qa
      imagePullSecrets:
        - name:  projectqaregistry  # Registry file name
---

To setup a build for Circle CI you can take a reference from here