2020-04-17 03:55:57 -07:00
|
|
|
name: $(Date:yyyyMMdd).$(Rev:r)
|
|
|
|
variables:
|
|
|
|
DOCKER_IMAGE_BASENAME: "jamesits/ripe-atlas"
|
|
|
|
|
|
|
|
trigger:
|
|
|
|
batch: true
|
|
|
|
branches:
|
|
|
|
include: [ "master" ]
|
|
|
|
paths:
|
|
|
|
include: [ "*" ]
|
|
|
|
exclude: [ "README.md" ]
|
|
|
|
|
|
|
|
pr:
|
|
|
|
autoCancel: true
|
|
|
|
branches:
|
|
|
|
include:
|
|
|
|
- master
|
|
|
|
paths:
|
|
|
|
exclude:
|
|
|
|
- README.md
|
|
|
|
|
|
|
|
schedules:
|
|
|
|
- cron: "0 3 * * *"
|
|
|
|
displayName: nightly build
|
|
|
|
always: true
|
|
|
|
branches:
|
|
|
|
include:
|
|
|
|
- master
|
|
|
|
|
|
|
|
jobs:
|
2022-05-12 01:10:54 -04:00
|
|
|
- job: build
|
|
|
|
displayName: "build"
|
2020-04-17 03:55:57 -07:00
|
|
|
pool:
|
|
|
|
vmImage: "ubuntu-latest"
|
|
|
|
workspace:
|
|
|
|
clean: all
|
2022-05-12 01:10:54 -04:00
|
|
|
variables:
|
|
|
|
ARTIFACTS_DIR: "/tmp/ripe-atlas-artifacts"
|
2020-05-07 21:02:27 +08:00
|
|
|
timeoutInMinutes: 60
|
2020-05-07 20:34:04 +08:00
|
|
|
|
|
|
|
strategy:
|
|
|
|
matrix:
|
2022-05-12 01:10:54 -04:00
|
|
|
arm64:
|
|
|
|
ARCH: "arm64"
|
|
|
|
DOCKER_IMAGE_TAG: "latest-arm64"
|
|
|
|
armel:
|
|
|
|
ARCH: "armel"
|
|
|
|
DOCKER_IMAGE_TAG: "latest-armel"
|
|
|
|
armhf:
|
|
|
|
ARCH: "armhf"
|
|
|
|
DOCKER_IMAGE_TAG: "latest-armv7l"
|
|
|
|
i386:
|
|
|
|
ARCH: "i386"
|
|
|
|
DOCKER_IMAGE_TAG: "latest-i386"
|
2020-05-07 20:34:04 +08:00
|
|
|
amd64:
|
|
|
|
ARCH: "amd64"
|
2022-05-12 01:10:54 -04:00
|
|
|
DOCKER_IMAGE_TAG: "latest-amd64"
|
|
|
|
maxParallel: 5
|
2020-04-17 03:55:57 -07:00
|
|
|
|
|
|
|
steps:
|
|
|
|
- checkout: self
|
|
|
|
clean: true
|
|
|
|
submodules: true
|
|
|
|
|
|
|
|
- bash: |
|
|
|
|
set -Eeuo pipefail
|
2020-04-17 05:31:58 -07:00
|
|
|
|
2022-05-12 01:10:54 -04:00
|
|
|
docker run --privileged --rm tonistiigi/binfmt --install=$(ARCH)
|
|
|
|
|
|
|
|
export DOCKER_BUILDKIT=1
|
|
|
|
|
|
|
|
docker build --platform=$(ARCH) --no-cache --rm=false -t ripe-atlas .
|
2020-04-17 03:55:57 -07:00
|
|
|
docker images --digests ripe-atlas
|
2020-04-17 05:31:58 -07:00
|
|
|
|
2022-05-12 01:10:54 -04:00
|
|
|
docker build --target=artifacts --platform=$(ARCH) --output=type=local,dest=$(ARTIFACTS_DIR) .
|
|
|
|
cp -r $(ARTIFACTS_DIR)/* ${BUILD_ARTIFACTSTAGINGDIRECTORY}
|
|
|
|
displayName: "build image and release artifacts"
|
2020-04-17 03:55:57 -07:00
|
|
|
|
2022-05-12 01:10:54 -04:00
|
|
|
- task: PublishPipelineArtifact@1
|
2020-04-17 03:55:57 -07:00
|
|
|
inputs:
|
2022-05-12 01:10:54 -04:00
|
|
|
targetPath: '$(Build.ArtifactStagingDirectory)'
|
2020-05-07 20:34:04 +08:00
|
|
|
artifactName: '$(ARCH)'
|
2020-04-17 03:55:57 -07:00
|
|
|
parallel: true
|
2020-04-17 04:31:28 -07:00
|
|
|
parallelCount: 20
|
2022-05-12 01:10:54 -04:00
|
|
|
|
|
|
|
- task: Docker@2
|
|
|
|
displayName: "docker login"
|
2020-04-17 03:55:57 -07:00
|
|
|
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'), ne(variables['Build.Reason'], 'PullRequest'))
|
|
|
|
inputs:
|
2022-05-12 01:10:54 -04:00
|
|
|
containerRegistry: 'Docker Hub: Jamesits'
|
|
|
|
command: 'login'
|
2020-04-17 03:55:57 -07:00
|
|
|
|
|
|
|
- bash: |
|
|
|
|
set -Eeuo pipefail
|
2020-05-07 20:34:04 +08:00
|
|
|
docker tag ripe-atlas $(DOCKER_IMAGE_BASENAME):$(DOCKER_IMAGE_TAG)
|
|
|
|
docker push $(DOCKER_IMAGE_BASENAME):$(DOCKER_IMAGE_TAG)
|
2020-04-17 03:55:57 -07:00
|
|
|
displayName: "Push image"
|
|
|
|
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'), ne(variables['Build.Reason'], 'PullRequest'))
|
|
|
|
|
2022-05-12 01:10:54 -04:00
|
|
|
- task: Docker@2
|
|
|
|
displayName: "docker logout"
|
2020-04-17 03:55:57 -07:00
|
|
|
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'), ne(variables['Build.Reason'], 'PullRequest'))
|
|
|
|
inputs:
|
2022-05-12 01:10:54 -04:00
|
|
|
containerRegistry: 'Docker Hub: Jamesits'
|
|
|
|
command: 'logout'
|
|
|
|
|
|
|
|
- job: manifest
|
|
|
|
displayName: "create docker manifest"
|
|
|
|
pool:
|
|
|
|
vmImage: "ubuntu-latest"
|
|
|
|
workspace:
|
|
|
|
clean: all
|
|
|
|
variables:
|
|
|
|
DOCKER_IMAGE_TAG: "latest"
|
|
|
|
timeoutInMinutes: 60
|
|
|
|
dependsOn:
|
|
|
|
- build
|
|
|
|
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'), ne(variables['Build.Reason'], 'PullRequest'))
|
|
|
|
|
|
|
|
steps:
|
|
|
|
- task: Docker@2
|
|
|
|
displayName: "Docker login"
|
|
|
|
inputs:
|
|
|
|
containerRegistry: 'Docker Hub: Jamesits'
|
|
|
|
command: 'login'
|
2020-05-07 06:41:53 -07:00
|
|
|
|
|
|
|
- bash: |
|
2022-05-12 01:10:54 -04:00
|
|
|
set -Eeuo pipefail
|
2020-05-07 06:41:53 -07:00
|
|
|
|
2022-05-12 01:10:54 -04:00
|
|
|
docker manifest create \
|
|
|
|
$(DOCKER_IMAGE_BASENAME):$(DOCKER_IMAGE_TAG) \
|
|
|
|
--amend $(DOCKER_IMAGE_BASENAME):latest-arm64 \
|
|
|
|
--amend $(DOCKER_IMAGE_BASENAME):latest-armel \
|
|
|
|
--amend $(DOCKER_IMAGE_BASENAME):latest-armv7l \
|
|
|
|
--amend $(DOCKER_IMAGE_BASENAME):latest-i386 \
|
|
|
|
--amend $(DOCKER_IMAGE_BASENAME):latest-amd64
|
2020-05-07 06:41:53 -07:00
|
|
|
|
2022-05-12 01:10:54 -04:00
|
|
|
docker manifest push $(DOCKER_IMAGE_BASENAME):$(DOCKER_IMAGE_TAG)
|
|
|
|
displayName: "create and push manifest"
|
|
|
|
|
|
|
|
- task: Docker@2
|
|
|
|
displayName: "docker logout"
|
|
|
|
inputs:
|
|
|
|
containerRegistry: 'Docker Hub: Jamesits'
|
|
|
|
command: 'logout'
|