Bump xunit.runner.visualstudio from 2.8.0 to 2.8.1 #493
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and push docker images | |
on: | |
push: | |
branches: [ main, develop ] | |
pull_request: | |
branches: [ main, develop ] | |
workflow_dispatch: | |
schedule: | |
- cron: '0 2 * * MON' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
# Test | |
test: | |
name: Test | |
runs-on: ubuntu-latest | |
steps: | |
# Install .NET SDK | |
# https://github.com/marketplace/actions/setup-net-core-sdk | |
- name: Setup .NET SDK | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: "8.x" | |
# Checkout code | |
# https://github.com/marketplace/actions/checkout | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
# Run Unit Tests | |
# https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-test | |
- name: Run unit tests | |
run: dotnet test ./PlexCleanerTests/PlexCleanerTests.csproj | |
# Get version information | |
version: | |
name: Version | |
runs-on: ubuntu-latest | |
needs: test | |
outputs: | |
SemVer2: ${{ steps.nbgv.outputs.SemVer2 }} | |
AssemblyVersion: ${{ steps.nbgv.outputs.AssemblyVersion }} | |
AssemblyFileVersion: ${{ steps.nbgv.outputs.AssemblyFileVersion }} | |
AssemblyInformationalVersion: ${{ steps.nbgv.outputs.AssemblyInformationalVersion }} | |
steps: | |
# Checkout code | |
# https://github.com/marketplace/actions/checkout | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
# Get all history for version calculation | |
fetch-depth: 0 | |
# Run Nerdbank.GitVersioning | |
# https://github.com/marketplace/actions/nerdbank-gitversioning | |
- name: Run Nerdbank.GitVersioning tool | |
id: nbgv | |
uses: dotnet/nbgv@master | |
# Build and push docker images | |
buildpush: | |
name: Build and push | |
runs-on: ubuntu-latest | |
needs: version | |
strategy: | |
# Keep building even if one job fails, helps with troubleshooting when there are multiple errors | |
fail-fast: false | |
# Limit number of concurrent builds | |
# Error: buildx failed with: ERROR: failed to solve: error writing layer blob: maximum timeout reached | |
max-parallel: 4 | |
# https://docs.github.com/en/actions/using-jobs/using-a-matrix-for-your-jobs | |
matrix: | |
include: | |
# Debian Stable: | |
- file: ./Docker/Debian.Stable.Dockerfile | |
platforms: linux/amd64,linux/arm64,linux/arm/v7 | |
cache-scope: debian | |
secrets: SAVOURY_PPA_AUTH | |
tags: | | |
docker.io/ptr727/plexcleaner:${{ endsWith(github.ref, 'refs/heads/main') && 'debian' || 'debian-develop' }} | |
# Debian Testing: | |
- file: ./Docker/Debian.Testing.Dockerfile | |
platforms: linux/amd64,linux/arm64,linux/arm/v7 | |
cache-scope: debian-testing | |
secrets: SAVOURY_PPA_AUTH | |
tags: | | |
docker.io/ptr727/plexcleaner:${{ endsWith(github.ref, 'refs/heads/main') && 'debian-testing' || 'debian-testing-develop' }} | |
# TODO: No Alpine stable until 3.20 is released | |
# Alpine Stable: | |
# - file: ./Docker/Alpine.Stable.Dockerfile | |
# platforms: linux/amd64,linux/arm64 | |
# cache-scope: alpine | |
# secrets: SAVOURY_PPA_AUTH | |
# tags: | | |
# docker.io/ptr727/plexcleaner:${{ endsWith(github.ref, 'refs/heads/main') && 'alpine' || 'alpine-develop' }} | |
# Alpine Edge: | |
- file: ./Docker/Alpine.Edge.Dockerfile | |
platforms: linux/amd64,linux/arm64 | |
cache-scope: alpine-edge | |
secrets: SAVOURY_PPA_AUTH | |
tags: | | |
docker.io/ptr727/plexcleaner:${{ endsWith(github.ref, 'refs/heads/main') && 'alpine-edge' || 'alpine-edge-develop' }} | |
# Ubuntu Savoury: | |
- file: ./Docker/Ubuntu.Savoury.Dockerfile | |
platforms: linux/amd64 | |
cache-scope: savoury | |
secrets: SAVOURY_PPA_AUTH | |
tags: | | |
docker.io/ptr727/plexcleaner:${{ endsWith(github.ref, 'refs/heads/main') && 'savoury' || 'savoury-develop' }} | |
# Ubuntu Rolling: | |
- file: ./Docker/Ubuntu.Rolling.Dockerfile | |
platforms: linux/amd64,linux/arm64,linux/arm/v7 | |
cache-scope: ubuntu | |
secrets: SAVOURY_PPA_AUTH | |
# Also tag with latest and version number | |
tags: | | |
docker.io/ptr727/plexcleaner:${{ endsWith(github.ref, 'refs/heads/main') && 'ubuntu' || 'ubuntu-develop' }} | |
docker.io/ptr727/plexcleaner:${{ endsWith(github.ref, 'refs/heads/main') && 'latest' || 'develop' }} | |
docker.io/ptr727/plexcleaner:${{ needs.version.outputs.SemVer2 }} | |
# Ubuntu Devel: | |
- file: ./Docker/Ubuntu.Devel.Dockerfile | |
platforms: linux/amd64,linux/arm64,linux/arm/v7 | |
cache-scope: ubuntu-devel | |
secrets: SAVOURY_PPA_AUTH | |
tags: | | |
docker.io/ptr727/plexcleaner:${{ endsWith(github.ref, 'refs/heads/main') && 'ubuntu-devel' || 'ubuntu-devel-develop' }} | |
steps: | |
# Checkout code | |
# https://github.com/marketplace/actions/checkout | |
- name: Checkout | |
uses: actions/checkout@v4 | |
# Setup QEMU for multi architecture builds | |
# https://github.com/marketplace/actions/docker-setup-qemu | |
- name: Setup QEMU | |
uses: docker/setup-qemu-action@v3 | |
with: | |
platforms: linux/amd64,linux/arm64,linux/arm/v7 | |
# Setup docker build | |
# https://github.com/marketplace/actions/docker-setup-buildx | |
- name: Setup Buildx | |
uses: docker/setup-buildx-action@v3 | |
with: | |
platforms: linux/amd64,linux/arm64,linux/arm/v7 | |
# Login to Docker Hub | |
# https://github.com/marketplace/actions/docker-login | |
- name: Login to Docker Hub | |
# Skip pull requests | |
if: ${{ github.event_name != 'pull_request' }} | |
uses: docker/login-action@v3 | |
with: | |
registry: docker.io | |
username: ${{ secrets.DOCKER_HUB_USERNAME }} | |
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} | |
# Docker build and push | |
# https://github.com/marketplace/actions/build-and-push-docker-images | |
# https://docs.docker.com/build/ci/github-actions/cache/ | |
# https://github.com/moby/buildkit#github-actions-cache-experimental | |
# Matrix build | |
- name: Docker build and push | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
# GitHub cache is as unreliable as posting to GHCR, broken pipe errors | |
# cache-from: type=gha,scope=${{ matrix.cache-scope }} | |
# cache-to: type=gha,mode=max,scope=${{ matrix.cache-scope }} | |
file: ${{ matrix.file }} | |
# Do not push on pull requests | |
push: ${{ (github.event_name != 'pull_request') }} | |
# TODO: How to test for secret not null and avoid "null= is not a valid secret" | |
secrets: ${{ matrix.secrets }}=${{ secrets[matrix.secrets] }} | |
tags: ${{ matrix.tags }} | |
platforms: ${{ matrix.platforms }} | |
build-args: | | |
LABEL_VERSION=${{ needs.version.outputs.SemVer2 }} | |
BUILD_CONFIGURATION=${{ endsWith(github.ref, 'refs/heads/main') && 'Release' || 'Debug' }} | |
BUILD_VERSION=${{ needs.version.outputs.AssemblyVersion }} | |
BUILD_FILE_VERSION=${{ needs.version.outputs.AssemblyFileVersion }} | |
BUILD_ASSEMBLY_VERSION=${{ needs.version.outputs.AssemblyFileVersion }} | |
BUILD_INFORMATION_VERSION=${{ needs.version.outputs.AssemblyInformationalVersion }} | |
BUILD_PACKAGE_VERSION=${{ needs.version.outputs.SemVer2 }} | |
# Get tool versions from image | |
toolversions: | |
name: Tool versions | |
runs-on: ubuntu-latest | |
needs: buildpush | |
# Skip pull requests | |
if: ${{ github.event_name != 'pull_request' }} | |
strategy: | |
# https://docs.github.com/en/actions/using-jobs/using-a-matrix-for-your-jobs | |
matrix: | |
include: | |
- tag: ${{ endsWith(github.ref, 'refs/heads/main') && 'debian' || 'debian-develop' }} | |
file: debian.ver | |
- tag: ${{ endsWith(github.ref, 'refs/heads/main') && 'debian-testing' || 'debian-testing-develop' }} | |
file: debian-testing.ver | |
# TODO: No Alpine stable until 3.20 is released | |
# - tag: ${{ endsWith(github.ref, 'refs/heads/main') && 'alpine' || 'alpine-develop' }} | |
# file: alpine.ver | |
- tag: ${{ endsWith(github.ref, 'refs/heads/main') && 'alpine-edge' || 'alpine-edge-develop' }} | |
file: alpine-edge.ver | |
- tag: ${{ endsWith(github.ref, 'refs/heads/main') && 'ubuntu' || 'ubuntu-develop' }} | |
file: ubuntu.ver | |
- tag: ${{ endsWith(github.ref, 'refs/heads/main') && 'ubuntu-devel' || 'ubuntu-devel-develop' }} | |
file: ubuntu-devel.ver | |
- tag: ${{ endsWith(github.ref, 'refs/heads/main') && 'savoury' || 'savoury-develop' }} | |
file: savoury.ver | |
steps: | |
# Get image size | |
- name: Get image size | |
run: | | |
mkdir -p ${{ runner.temp }}/versions | |
touch ${{ runner.temp }}/versions/${{ matrix.file }} | |
echo Image: docker.io/ptr727/plexcleaner:${{ matrix.tag }} >> ${{ runner.temp }}/versions/${{ matrix.file }} | |
echo Size: $(docker manifest inspect -v docker.io/ptr727/plexcleaner:${{ matrix.tag }} | jq '.[] | select(.Descriptor.platform.architecture=="amd64") | [.OCIManifest.layers[].size] | add' | numfmt --to=iec) >> ${{ runner.temp }}/versions/${{ matrix.file }} | |
# Get tool versions in container | |
# https://github.com/marketplace/actions/docker-run-action | |
- name: Write tool versions to file | |
uses: addnab/docker-run-action@v3 | |
with: | |
image: docker.io/ptr727/plexcleaner:${{ matrix.tag }} | |
options: --volume ${{ runner.temp }}/versions:/versions | |
run: | | |
echo OS: $(. /etc/os-release; echo $PRETTY_NAME) >> /versions/${{ matrix.file }} | |
echo dotNET: $(dotnet --info) >> /versions/${{ matrix.file }} | |
echo PlexCleaner: $(/PlexCleaner/PlexCleaner --version) >> /versions/${{ matrix.file }} | |
echo HandBrakeCLI: $(HandBrakeCLI --version) >> /versions/${{ matrix.file }} | |
echo MediaInfo: $(mediainfo --version) >> /versions/${{ matrix.file }} | |
echo MkvMerge: $(mkvmerge --version) >> /versions/${{ matrix.file }} | |
echo FfMpeg: $(ffmpeg -version) >> /versions/${{ matrix.file }} | |
# Print version file contents | |
- name: Print versions | |
run: cat ${{ runner.temp }}/versions/${{ matrix.file }} | |
# https://github.com/marketplace/actions/upload-a-build-artifact | |
- name: Upload version artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: versions-${{ matrix.file }} | |
path: ${{ runner.temp }}/versions/${{ matrix.file }} | |
# Update Docker README.md | |
updatereadme: | |
name: Create Docker README.md | |
runs-on: ubuntu-latest | |
needs: toolversions | |
# Skip pull requests and only update on main branch | |
if: ${{ (github.event_name != 'pull_request') && (endsWith(github.ref, 'refs/heads/main')) }} | |
steps: | |
# https://github.com/marketplace/actions/checkout | |
- name: Checkout | |
uses: actions/checkout@v4 | |
# https://github.com/marketplace/actions/download-a-build-artifact | |
- name: Download version artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: versions-* | |
merge-multiple: true | |
path: ${{ runner.temp }}/versions | |
- name: Create README.md from README.m4 | |
run: m4 --include=${{ runner.temp }}/versions ./Docker/README.m4 > ${{ runner.temp }}/README.md | |
# https://github.com/marketplace/actions/docker-hub-description | |
- name: Update Docker Hub README.md | |
uses: peter-evans/dockerhub-description@v4 | |
with: | |
username: ${{ secrets.DOCKER_HUB_USERNAME }} | |
password: ${{ secrets.DOCKER_HUB_PASSWORD }} | |
repository: ptr727/plexcleaner | |
short-description: ${{ github.event.repository.description }} | |
readme-filepath: ${{ runner.temp }}/README.md | |
# Create a custom badge to report the build date | |
datebadge: | |
name: Date badge | |
runs-on: ubuntu-latest | |
needs: buildpush | |
# Skip pull requests and only update on main branch | |
if: ${{ (github.event_name != 'pull_request') && (endsWith(github.ref, 'refs/heads/main')) }} | |
steps: | |
# Get date from environment as a variable | |
- id: date | |
run: | | |
echo "date=$(date)" >> $GITHUB_OUTPUT | |
# Create badge | |
# https://github.com/marketplace/actions/bring-your-own-badge | |
- name: Build date badge | |
uses: RubbaBoy/BYOB@v1 | |
with: | |
name: lastbuild | |
label: "Last Build" | |
icon: "github" | |
status: ${{ steps.date.outputs.date }} | |
color: "blue" | |
github_token: ${{ secrets.GITHUB_TOKEN }} |