diff --git a/.ci/azure-pipelines-package.yml b/.ci/azure-pipelines-package.yml index d8319f021..fd5a2a6e9 100644 --- a/.ci/azure-pipelines-package.yml +++ b/.ci/azure-pipelines-package.yml @@ -1,6 +1,6 @@ jobs: -- job: Package - displayName: 'Package' +- job: BuildPackage + displayName: 'Build Packages' strategy: matrix: @@ -45,6 +45,53 @@ jobs: contents: '**' targetFolder: '/srv/repository/incoming/azure/$(Build.BuildNumber)/$(BuildConfiguration)' +- job: BuildDocker + displayName: 'Build Docker' + + pool: + vmImage: 'ubuntu-latest' + + steps: + - script: 'docker build -f deployment/Dockerfile.docker -t jellyfin-web-unstable .' + displayName: 'Build Dockerfile (unstable)' + condition: startsWith(variables['Build.SourceBranch'], 'refs/heads/package') + + - script: 'docker build -f deployment/Dockerfile.docker -t jellyfin-web-stable .' + displayName: 'Build Dockerfile (stable)' + condition: startsWith(variables['Build.SourceBranch'], 'refs/tags') + + - script: 'docker push "jellyfin-web-unstable":"$(Build.BuildNumber)-all"' + displayName: 'Push Docker image (unstable)' + condition: startsWith(variables['Build.SourceBranch'], 'refs/heads/package') + + - script: 'docker push "jellyfin-web-stable":"$( sed "s|^refs/tags/v||g" <<<"$(Build.SourceBranch)" )-all"' + displayName: 'Push Docker image (stable)' + condition: startsWith(variables['Build.SourceBranch'], 'refs/tags') + + - script: 'docker manifest create --amend "jellyfin-web-unstable":"$(Build.BuildNumber)" "jellyfin-web-unstable":"$(Build.BuildNumber)"' + displayName: 'Create Docker manifest (unstable)' + condition: startsWith(variables['Build.SourceBranch'], 'refs/heads/package') + + - script: 'docker manifest create --amend "jellyfin-web-stable":"$( sed "s|^refs/tags/v||g" <<<"$(Build.SourceBranch)" )" "jellyfin-web-stable":"$( sed "s|^refs/tags/v||g" <<<"$(Build.SourceBranch)" )-all"' + displayName: 'Create Docker manifest (stable, versioned)' + condition: startsWith(variables['Build.SourceBranch'], 'refs/tags') + + - script: 'docker manifest create --amend "jellyfin-web-stable":"latest" "jellyfin-web-stable":"$( sed "s|^refs/tags/v||g" <<<"$(Build.SourceBranch)" )-all"' + displayName: 'Create Docker manifest (stable, latest)' + condition: startsWith(variables['Build.SourceBranch'], 'refs/tags') + + - script: 'docker manifest push --purge "jellyfin-web-unstable":"$(Build.BuildNumber)"' + displayName: 'Push Docker manifest (unstable)' + condition: startsWith(variables['Build.SourceBranch'], 'refs/heads/package') + + - script: 'docker manifest push --purge "jellyfin-web-stable":"$( sed "s|^refs/tags/v||g" <<<"$(Build.SourceBranch)" )"' + displayName: 'Push Docker manifest (stable, versioned)' + condition: startsWith(variables['Build.SourceBranch'], 'refs/tags') + + - script: 'docker manifest push --purge "jellyfin-web-stable":"latest"' + displayName: 'Push Docker manifest (stable, latest)' + condition: startsWith(variables['Build.SourceBranch'], 'refs/tags') + - job: Collect displayName: 'Collect Artifacts' diff --git a/deployment/Dockerfile.docker b/deployment/Dockerfile.docker new file mode 100644 index 000000000..e0d0e4210 --- /dev/null +++ b/deployment/Dockerfile.docker @@ -0,0 +1,11 @@ +FROM node:alpine + +ARG SOURCE_DIR=/src +ARG ARTIFACT_DIR=/jellyfin-web + +RUN apk add autoconf g++ make libpng-dev gifsicle alpine-sdk automake libtool make gcc musl-dev nasm python + +WORKDIR ${SOURCE_DIR}/ +COPY . . + +RUN yarn install && mv dist ${ARTIFACT_DIR}