mirror of
https://github.com/jellyfin/jellyfin-vue.git
synced 2024-10-07 11:33:40 +00:00
221 lines
7.5 KiB
YAML
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"
|