Skip to content

Instantly share code, notes, and snippets.

@mpetuska
Last active September 30, 2020 14:57
Show Gist options
  • Save mpetuska/fd7de76341c90ff4c0a2f1415e15eaa7 to your computer and use it in GitHub Desktop.
Save mpetuska/fd7de76341c90ff4c0a2f1415e15eaa7 to your computer and use it in GitHub Desktop.
parameters:
- name: workingDirectory
default: .
type: string
- name: dockerGroup
default: ''
- name: tagLatest
default: true
- name: bundleDir
default: build/
- name: bundleName
default: ''
- name: dockerBuildArgs
type: object
default: {}
steps:
- ${{ if ne(parameters.bundleName, '') }}:
- task: DownloadPipelineArtifact@2
inputs:
artifact: ${{parameters.bundleName}}
path: $(Build.SourcesDirectory)/${{parameters.workingDirectory}}/${{parameters.bundleDir}}
- ${{ each pair in parameters.dockerBuildArgs }}:
- bash: echo "##vso[task.setVariable variable=DOCKER_BUILD_ARGS]$(DOCKER_BUILD_ARGS) --build-arg ${{pair.key}}='${{pair.value}}'"
displayName: Build Arg - ${{pair.key}}
workingDirectory: ${{parameters.workingDirectory}}
- template: ./dockerTagFromRepo.template.yml
parameters:
dockerGroup: ${{parameters.dockerGroup}}
- bash: docker build -t $(dockerImageTag) $(DOCKER_BUILD_ARGS) .
displayName: Docker Build
workingDirectory: ${{parameters.workingDirectory}}
- bash: |
mkdir -p $(System.DefaultWorkingDirectory)/DockerBundle
printf '%s' "$(dockerImageRepository)" > $(System.DefaultWorkingDirectory)/DockerBundle/repository
printf '%s' "$(Build.BuildNumber)" > $(System.DefaultWorkingDirectory)/DockerBundle/tag
displayName: Prepare DockerBundle
- publish: $(System.DefaultWorkingDirectory)/${{parameters.workingDirectory}}/DockerBundle
artifact: DockerBundle
displayName: Publish DockerBundle
- ${{if eq(parameters.tagLatest, true)}}:
- bash: docker image tag $(dockerImageTag) $(dockerImageRepository):latest
displayName: Tag as 'latest'
parameters:
- name: dockerGroup
default: ''
- name: repoVariable
default: dockerImageRepository
- name: tagVariable
default: dockerImageTag
steps:
- bash: |
branch_lowercases=$(echo $(Build.SourceBranch) | tr '[:upper:]' '[:lower:]' | tr -d - | tr -d _)
branch_ref=$branch_lowercases
prefix="refs/heads/"
removed_prefix=${branch_ref#"$prefix"}
echo "lower cases $branch_lowercases"
echo "##vso[task.setvariable variable=branch;isOutput=true]$removed_prefix"
displayName: 'Remove prefix'
name: removed_prefix
- bash: |
echo "repository name: $(Build.Repository.Name)"
repository_name=$(echo $(Build.Repository.Name) | tr '[:upper:]' '[:lower:]')
repo_name=$repository_name
prefix="mycompany/"
fixed_repo_name=${repo_name#"$prefix"}
echo "fixed repository name: $fixed_repo_name"
echo "##vso[task.setvariable variable=repo;isOutput=true]$fixed_repo_name"
echo "##vso[task.setvariable variable=dockerGroup]"
displayName: 'Fix repository name'
name: fixed_repo_name
- ${{ if ne(parameters.dockerGroup, '') }}:
- bash: echo "##vso[task.setvariable variable=dockerGroup]${{parameters.dockerGroup}}/"
displayName: Prepare Docker Group
- bash: echo "##vso[task.setVariable variable=${{ parameters.repoVariable }}]mycompany-docker-dev.jfrog.io/$(dockerGroup)$(fixed_repo_name.repo)/$(removed_prefix.branch)"
displayName: Push Image Repository Variable [${{ parameters.repoVariable }}]
- bash: echo "##vso[task.setVariable variable=${{ parameters.tagVariable }}]$(${{ parameters.repoVariable }}):$(build.buildNumber)"
displayName: Push Image Tag Variable [${{ parameters.tagVariable }}]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment