jellyfin-vue/.ci/azure-pipelines-build.yml
2021-01-29 16:50:29 -07:00

221 lines
7.5 KiB
YAML

jobs:
- job: BuildSsr
displayName: "Build SSR"
pool:
vmImage: "ubuntu-latest"
steps:
- task: NodeTool@0
displayName: "Install Node"
inputs:
versionSpec: "12.x"
- task: Cache@2
displayName: "Check Cache"
inputs:
key: "yarn | yarn.lock"
path: "node_modules"
cacheHitVar: CACHE_RESTORED
- script: "yarn install --frozen-lockfile"
displayName: "Install Dependencies"
condition: ne(variables.CACHE_RESTORED, 'true')
- script: "yarn build --production --standalone"
displayName: "Build"
- task: PublishPipelineArtifact@1
displayName: "Publish Generated SSR build as Artifact"
inputs:
targetPath: $(System.DefaultWorkingDirectory)/.nuxt
artifactName: dist-ssr
- job: BuildStatic
displayName: "Build Static"
pool:
vmImage: "ubuntu-latest"
steps:
- task: NodeTool@0
displayName: "Install Node"
inputs:
versionSpec: "12.x"
- task: Cache@2
displayName: "Check Cache"
inputs:
key: "yarn | yarn.lock"
path: "node_modules"
cacheHitVar: CACHE_RESTORED
- script: "yarn install --frozen-lockfile"
displayName: "Install Dependencies"
condition: ne(variables.CACHE_RESTORED, 'true')
- script: "yarn build:static"
displayName: "Build"
- task: PublishPipelineArtifact@1
displayName: "Publish Generated Static Pages as Artifact"
inputs:
targetPath: $(System.DefaultWorkingDirectory)/dist
artifactName: dist-static
- job: BuildSsrDocker
displayName: "Build Docker Images (SSR)"
dependsOn: BuildSsr
condition: succeeded()
pool:
vmImage: "ubuntu-latest"
variables:
- name: DOCKER_CLI_EXPERIMENTAL
value: "enabled"
- name: Version
value: $[replace(variables['Build.SourceBranch'],'refs/tags/v','')]
steps:
- task: DownloadPipelineArtifact@2
displayName: "Download Artifact from Build Job"
inputs:
source: current
artifact: dist-ssr
path: $(System.DefaultWorkingDirectory)/dist
- task: Docker@2
displayName: "Login to Docker Hub"
condition: or(eq(variables['Build.SourceBranch'], 'refs/heads/master'), startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))
inputs:
command: login
containerRegistry: "Docker Hub"
- task: CmdLine@2
displayName: "Register Qemu Binfmt and Docker Buildx Builder"
inputs:
script: |
docker version
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker buildx create --name builder --driver docker-container
- task: CmdLine@2
displayName: "Build PR Docker Image"
condition: eq(variables['System.PullRequest.TargetBranch'], 'master')
inputs:
script: |
docker buildx use --builder builder
docker buildx build --file ./Dockerfile.ci --no-cache \
--platform linux/arm,linux/arm64,linux/amd64 \
--tag pr-$(System.PullRequest.PullRequestId)-ssr .
- task: CmdLine@2
displayName: "Build and Push Unstable Docker Image"
condition: eq(variables['Build.SourceBranch'], 'refs/heads/master')
inputs:
script: |
docker buildx use --builder builder
docker buildx build --file ./Dockerfile.ci --no-cache --push \
--platform linux/arm,linux/arm64,linux/amd64 \
--tag jellyfin/jellyfin-vue:unstable-ssr-$(Build.BuildNumber) \
--tag jellyfin/jellyfin-vue:unstable-ssr \
--tag jellyfin/jellyfin-vue:unstable .
- task: CmdLine@2
displayName: "Build and Push Stable Docker Image"
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags/v')
inputs:
script: |
docker buildx use --builder builder
docker buildx build --file ./Dockerfile.ci --no-cache --push \
--platform linux/arm,linux/arm64,linux/amd64 \
--tag jellyfin/jellyfin-vue:$(Version)-ssr \
--tag jellyfin/jellyfin-vue:stable-ssr \
--tag jellyfin/jellyfin-vue:latest .
- task: Docker@2
displayName: "Logout from Docker Hub"
condition: or(eq(variables['Build.SourceBranch'], 'refs/heads/master'), startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))
inputs:
command: logout
containerRegistry: "Docker Hub"
- job: BuildDocker
displayName: "Build Docker Images"
dependsOn: BuildStatic
condition: succeeded()
pool:
vmImage: "ubuntu-latest"
variables:
- name: DOCKER_CLI_EXPERIMENTAL
value: "enabled"
- name: Version
value: $[replace(variables['Build.SourceBranch'],'refs/tags/v','')]
steps:
- task: DownloadPipelineArtifact@2
displayName: "Download Artifact from Build Job"
inputs:
source: current
artifact: dist-static
path: $(System.DefaultWorkingDirectory)/dist
- task: Docker@2
displayName: "Login to Docker Hub"
condition: or(eq(variables['Build.SourceBranch'], 'refs/heads/master'), startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))
inputs:
command: login
containerRegistry: "Docker Hub"
- task: CmdLine@2
displayName: "Register Qemu Binfmt and Docker Buildx Builder"
inputs:
script: |
docker version
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker buildx create --name builder --driver docker-container
- task: CmdLine@2
displayName: "Build PR Docker Image"
condition: eq(variables['System.PullRequest.TargetBranch'], 'master')
inputs:
script: |
docker buildx use --builder builder
docker buildx build --file ./Dockerfile.static.ci --no-cache \
--platform linux/arm,linux/arm64,linux/amd64 \
--tag pr-$(System.PullRequest.PullRequestId)-static .
- task: CmdLine@2
displayName: "Build and Push Unstable Docker Image"
condition: eq(variables['Build.SourceBranch'], 'refs/heads/master')
inputs:
script: |
docker buildx use --builder builder
docker buildx build --file ./Dockerfile.static.ci --no-cache --push \
--platform linux/arm,linux/arm64,linux/amd64 \
--tag jellyfin/jellyfin-vue:unstable-static-$(Build.BuildNumber) \
--tag jellyfin/jellyfin-vue:unstable-static .
- task: CmdLine@2
displayName: "Build and Push Stable Docker Image"
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags/v')
inputs:
script: |
docker buildx use --builder builder
docker buildx build --file ./Dockerfile.static.ci --no-cache --push \
--platform linux/arm,linux/arm64,linux/amd64 \
--tag jellyfin/jellyfin-vue:$(Version)-static \
--tag jellyfin/jellyfin-vue:stable-static .
- task: Docker@2
displayName: "Logout from Docker Hub"
condition: or(eq(variables['Build.SourceBranch'], 'refs/heads/master'), startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))
inputs:
command: logout
containerRegistry: "Docker Hub"