Skip to content

Instantly share code, notes, and snippets.

@mpetuska
Created September 30, 2020 15:02
Show Gist options
  • Save mpetuska/d9e96147a7677f770950ca6f9a909ab3 to your computer and use it in GitHub Desktop.
Save mpetuska/d9e96147a7677f770950ca6f9a909ab3 to your computer and use it in GitHub Desktop.
parameters:
# Node
- name: workingDirectory
default: .
type: string
- name: packageManager
default: yarn
values:
- yarn
- npm
- name: isLib
type: boolean
default: 'false'
- name: pushVersionCommit
type: boolean
default: 'true'
- name: bundleDir
default: build/
# JFrog
- name: jfrogUser
type: string
default: ''
- name: jfrogToken
type: string
default: ''
# Docker
- name: dockerGroup
default: ''
- name: dockerBuildArgs
type: object
default: {}
- name: sonarQubeEndpoint
default: ''
- name: disableSonarQube
default: false
type: boolean
- name: extraBuildJobs
type: jobList
default: []
- name: extraPublishJobs
type: jobList
default: []
- name: suffix
type: string
default: ''
- name: isMonorepo
type: boolean
default: false
stages:
- stage: Build${{parameters.suffix}}
jobs:
- job: Node${{parameters.suffix}}
steps:
- template: ./build-node.template.yml
parameters:
workingDirectory: ${{parameters.workingDirectory}}
packageManager: ${{parameters.packageManager}}
bundleDir: ${{parameters.bundleDir}}
jfrogUser: ${{parameters.jfrogUser}}
jfrogToken: ${{parameters.jfrogToken}}
storybookBuildScript: ${{parameters.storybookBuildScript}}
storybookDir: ${{parameters.storybookDir}}
sonarQubeEndpoint: ${{ parameters.sonarQubeEndpoint }}
disableSonarQube: ${{ parameters.disableSonarQube }}
- ${{ each step in parameters.extraBuildJobs }}:
- ${{ each pair in step }}:
${{ pair.key }}: ${{ pair.value }}
- stage: Publish${{parameters.suffix}}
condition: |
and(
succeeded(),
or(
eq(variables['Build.SourceBranchName'], 'master'),
eq(variables['Build.Reason'], 'Manual'),
and(eq(variables['Build.Reason'], 'PullRequest'), ${{ eq(parameters.isLib, false) }})
)
)
jobs:
- ${{if eq(parameters.isLib, false) }}:
- job: Docker${{parameters.suffix}}
steps:
- template: ./build-docker.template.yml
parameters:
workingDirectory: ${{parameters.workingDirectory}}
dockerBuildArgs: ${{parameters.dockerBuildArgs}}
dockerGroup: ${{parameters.dockerGroup}}
bundleName: NodeBundle
bundleDir: ${{parameters.bundleDir}}
- template: ./publish-docker.template.yml
parameters:
workingDirectory: ${{parameters.workingDirectory}}
jfrogUser: ${{parameters.jfrogUser}}
jfrogToken: ${{parameters.jfrogToken}}
imagesToPush:
- '$(dockerImageTag)'
- ${{ if eq(variables['Build.SourceBranchName'], 'master') }}:
- template: ./publish-docker.template.yml
parameters:
workingDirectory: ${{parameters.workingDirectory}}
jfrogUser: ${{parameters.jfrogUser}}
jfrogToken: ${{parameters.jfrogToken}}
imagesToPush:
- '$(dockerImageRepository):latest'
- ${{ if eq(parameters.isLib, true) }}:
- job: Node${{parameters.suffix}}
condition: or(eq(variables['Build.SourceBranchName'], 'master'), eq(variables['Build.Reason'], 'Manual'))
steps:
- template: ./publish-node.template.yml
parameters:
jfrogUser: ${{parameters.jfrogUser}}
jfrogToken: ${{parameters.jfrogToken}}
nodeBundle: NodeBundle
bundleDir: ${{parameters.bundleDir}}
pushVersionCommit: ${{parameters.pushVersionCommit}}
workingDirectory: ${{parameters.workingDirectory}}
packageManager: ${{parameters.packageManager}}
isMonorepo: ${{parameters.isMonorepo}}
- ${{ each step in parameters.extraPublishJobs }}:
- ${{ each pair in step }}:
${{ pair.key }}: ${{ pair.value }}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment