Add documentation for Docker usage #214
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: CI | |
on: | |
push: | |
branches: | |
- main | |
- 'fix/*' | |
- 'feature/*' | |
- 'support/*' | |
paths: | |
- '**' | |
- '!docs/**' | |
pull_request: | |
branches: | |
- main | |
- 'support/*' | |
paths: | |
- '**' | |
- '!docs/**' | |
repository_dispatch: | |
types: [release] | |
env: | |
DOTNET_ROLL_FORWARD_ON_NO_CANDIDATE_FX: 2 | |
DOTNET_CLI_TELEMETRY_OPTOUT: 1 | |
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 | |
DOTNET_NOLOGO: 1 | |
ENABLED_DIAGNOSTICS: ${{ secrets.ENABLED_DIAGNOSTICS }} | |
permissions: | |
contents: read | |
packages: write | |
jobs: | |
prepare: | |
name: Prepare Build | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [windows-latest, ubuntu-latest, macos-latest] | |
fail-fast: false | |
steps: | |
- | |
name: Checkout | |
uses: actions/checkout@v3 | |
- | |
name: Cache cake frosting | |
id: cache-cake | |
uses: actions/[email protected] | |
with: | |
path: run | |
key: run-${{ runner.os }}-${{ hashFiles('./build/**') }} | |
- | |
name: Setup .NET SDK | |
uses: actions/[email protected] | |
with: | |
dotnet-version: '7.0.x' | |
dotnet-quality: 'preview' | |
- | |
name: '[Prepare]' | |
if: steps.cache-cake.outputs.cache-hit != 'true' | |
run: dotnet build build/CI.sln --configuration=Release | |
build: | |
name: Build code & Package | |
needs: [prepare] | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [windows-latest, ubuntu-latest, macos-latest] | |
fail-fast: false | |
steps: | |
- | |
name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- | |
name: Use cached cake frosting | |
id: cache-cake | |
uses: actions/[email protected] | |
with: | |
path: run | |
key: run-${{ runner.os }}-${{ hashFiles('./build/**') }} | |
- | |
name: Use cached tools | |
id: cache-tools | |
uses: actions/[email protected] | |
with: | |
path: tools | |
key: tools-${{ runner.os }}-${{ hashFiles('./build/**') }} | |
- | |
name: Setup .NET SDK | |
uses: actions/[email protected] | |
with: | |
dotnet-version: '7.0.x' | |
dotnet-quality: 'preview' | |
- | |
name: '[Build]' | |
shell: pwsh | |
run: dotnet run/build.dll --target=Package | |
- | |
name: 'Upload nuget packages' | |
uses: actions/upload-artifact@v3 | |
if: matrix.os == 'windows-latest' | |
with: | |
name: nuget | |
path: ${{ github.workspace }}/artifacts/packages/nuget | |
- | |
name: 'Upload native packages' | |
uses: actions/upload-artifact@v3 | |
if: matrix.os == 'windows-latest' | |
with: | |
name: native-${{ runner.os }} | |
path: ${{ github.workspace }}/artifacts/packages/native/*.zip | |
- | |
name: 'Upload native packages' | |
uses: actions/upload-artifact@v3 | |
if: matrix.os != 'windows-latest' | |
with: | |
name: native-${{ runner.os }} | |
path: ${{ github.workspace }}/artifacts/packages/native/*.tar.gz | |
unit_test: | |
name: Unit Test code | |
needs: [prepare] | |
runs-on: ${{ matrix.os }} | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
strategy: | |
matrix: | |
os: [windows-latest, ubuntu-latest, macos-latest] | |
targetFramework: [net48, net5.0, net6.0, netcoreapp3.1] | |
exclude: | |
- | |
os: 'ubuntu-latest' | |
targetFramework: net48 | |
- | |
os: 'macos-latest' | |
targetFramework: net48 | |
fail-fast: false | |
steps: | |
- | |
name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- | |
name: Use cached cake frosting | |
id: cache-cake | |
uses: actions/[email protected] | |
with: | |
path: run | |
key: run-${{ runner.os }}-${{ hashFiles('./build/**') }} | |
- | |
name: Use cached tools | |
id: cache-tools | |
uses: actions/[email protected] | |
with: | |
path: tools | |
key: tools-${{ runner.os }}-${{ hashFiles('./build/**') }} | |
- | |
name: Setup .NET SDK | |
uses: actions/[email protected] | |
with: | |
dotnet-version: '7.0.x' | |
dotnet-quality: 'preview' | |
- | |
name: '[Unit Test]' | |
shell: pwsh | |
run: dotnet run/build.dll --target=Test --dotnet_target=${{ matrix.targetFramework }} | |
# - | |
# name: Test Summary | |
# uses: test-summary/action@v1 | |
# with: | |
# paths: artifacts/test-results/*.results.xml | |
# if: always() | |
artifacts_windows_test: | |
name: Test artifacts on windows | |
needs: [build] | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
package: [ Executable, MsBuildFull ] | |
fail-fast: false | |
steps: | |
- | |
name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- | |
name: Use cached cake frosting | |
id: cache-cake | |
uses: actions/[email protected] | |
with: | |
path: run | |
key: run-${{ runner.os }}-${{ hashFiles('./build/**') }} | |
- | |
name: Use cached tools | |
id: cache-tools | |
uses: actions/[email protected] | |
with: | |
path: tools | |
key: tools-${{ runner.os }}-${{ hashFiles('./build/**') }} | |
- | |
uses: actions/download-artifact@v3 | |
name: Download nuget packages | |
with: | |
name: nuget | |
path: ${{ github.workspace }}/artifacts/packages/nuget | |
- | |
name: Setup .NET SDK | |
uses: actions/[email protected] | |
with: | |
dotnet-version: '7.0.x' | |
dotnet-quality: 'preview' | |
- | |
name: '[Test Artifacts]' | |
shell: pwsh | |
run: dotnet run/artifacts.dll --target=Artifacts${{ matrix.package }}Test | |
artifacts_linux_test: | |
name: Test artifacts in docker | |
needs: [build] | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
targetFramework: [ '3.1', '5.0', '6.0' ] | |
distro: [ alpine.3.12, alpine.3.13, alpine.3.14, centos.7, centos.8, debian.9, debian.10, debian.11, fedora.33, ubuntu.18.04, ubuntu.20.04 ] | |
fail-fast: false | |
steps: | |
- | |
name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- | |
name: Use cached cake frosting | |
id: cache-cake | |
uses: actions/[email protected] | |
with: | |
path: run | |
key: run-${{ runner.os }}-${{ hashFiles('./build/**') }} | |
- | |
name: Use cached tools | |
id: cache-tools | |
uses: actions/[email protected] | |
with: | |
path: tools | |
key: tools-${{ runner.os }}-${{ hashFiles('./build/**') }} | |
- | |
uses: actions/download-artifact@v3 | |
name: Download nuget packages | |
with: | |
name: nuget | |
path: ${{ github.workspace }}/artifacts/packages/nuget | |
- | |
uses: actions/download-artifact@v3 | |
name: Download native packages | |
with: | |
name: native-${{ runner.os }} | |
path: ${{ github.workspace }}/artifacts/packages/native | |
- | |
name: Setup QEMU | |
uses: docker/setup-qemu-action@v2 | |
- | |
name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
with: | |
install: true | |
- | |
name: Setup .NET SDK | |
uses: actions/[email protected] | |
with: | |
dotnet-version: '7.0.x' | |
dotnet-quality: 'preview' | |
- | |
name: '[Test Artifacts (amd64)]' | |
shell: pwsh | |
run: dotnet run/artifacts.dll --target=ArtifactsTest --arch amd64 --docker_dotnetversion=${{ matrix.targetFramework }} --docker_distro=${{ matrix.distro }} | |
- | |
name: '[Test Artifacts (arm64)]' | |
shell: pwsh | |
run: dotnet run/artifacts.dll --target=ArtifactsTest --arch arm64 --docker_dotnetversion=${{ matrix.targetFramework }} --docker_distro=${{ matrix.distro }} | |
docker_linux_images: | |
name: Build, Test and Publish Docker Images | |
needs: [build] | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
targetFramework: [ '3.1', '5.0', '6.0' ] | |
distro: [ alpine.3.12, alpine.3.13, alpine.3.14, centos.7, centos.8, debian.9, debian.10, debian.11, fedora.33, ubuntu.18.04, ubuntu.20.04 ] | |
fail-fast: false | |
steps: | |
- | |
name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- | |
name: Use cached cake frosting | |
id: cache-cake | |
uses: actions/[email protected] | |
with: | |
path: run | |
key: run-${{ runner.os }}-${{ hashFiles('./build/**') }} | |
- | |
name: Use cached tools | |
id: cache-tools | |
uses: actions/[email protected] | |
with: | |
path: tools | |
key: tools-${{ runner.os }}-${{ hashFiles('./build/**') }} | |
- | |
uses: actions/download-artifact@v3 | |
name: Download nuget packages | |
with: | |
name: nuget | |
path: ${{ github.workspace }}/artifacts/packages/nuget | |
- | |
name: Setup QEMU | |
uses: docker/setup-qemu-action@v2 | |
- | |
name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
with: | |
install: true | |
- | |
name: Setup .NET SDK | |
uses: actions/[email protected] | |
with: | |
dotnet-version: '7.0.x' | |
dotnet-quality: 'preview' | |
- | |
name: Login to DockerHub | |
if: success() && github.event_name != 'pull_request' && github.repository_owner == 'GitTools' | |
uses: docker/login-action@v2 | |
with: | |
username: ${{ secrets.DOCKER_USERNAME }} | |
password: ${{ secrets.DOCKER_PASSWORD }} | |
- | |
name: '[Docker Build/Test/Publish (amd64)] DockerHub' | |
if: success() && github.event_name != 'pull_request' && github.repository_owner == 'GitTools' | |
shell: pwsh | |
run: dotnet run/docker.dll --target=DockerPublish --arch amd64 --docker_dotnetversion=${{ matrix.targetFramework }} --docker_distro=${{ matrix.distro }} --docker_registry dockerhub | |
- | |
name: '[Docker Build/Test/Publish (arm64)] DockerHub' | |
if: success() && github.event_name != 'pull_request' && github.repository_owner == 'GitTools' | |
shell: pwsh | |
run: dotnet run/docker.dll --target=DockerPublish --arch arm64 --docker_dotnetversion=${{ matrix.targetFramework }} --docker_distro=${{ matrix.distro }} --docker_registry dockerhub | |
- | |
name: '[Docker Publish Manifest] DockerHub' | |
if: success() && github.event_name != 'pull_request' && github.repository_owner == 'GitTools' | |
shell: pwsh | |
run: dotnet run/docker.dll --target=DockerManifest --docker_dotnetversion=${{ matrix.targetFramework }} --docker_distro=${{ matrix.distro }} --docker_registry dockerhub | |
- | |
name: Login to GitHub Container Registry | |
if: success() && github.event_name != 'pull_request' && github.repository_owner == 'GitTools' | |
uses: docker/login-action@v2 | |
with: | |
registry: ghcr.io | |
username: ${{ github.repository_owner }} | |
password: ${{ secrets.DOCKER_GITHUB_TOKEN }} | |
- | |
name: '[Docker Build/Test/Publish (amd64)] GitHub Container Registry' | |
if: success() && github.event_name != 'pull_request' && github.repository_owner == 'GitTools' | |
shell: pwsh | |
run: dotnet run/docker.dll --target=DockerPublish --arch amd64 --docker_dotnetversion=${{ matrix.targetFramework }} --docker_distro=${{ matrix.distro }} --docker_registry github | |
- | |
name: '[Docker Build/Test/Publish (arm64)] GitHub Container Registry' | |
if: success() && github.event_name != 'pull_request' && github.repository_owner == 'GitTools' | |
shell: pwsh | |
run: dotnet run/docker.dll --target=DockerPublish --arch arm64 --docker_dotnetversion=${{ matrix.targetFramework }} --docker_distro=${{ matrix.distro }} --docker_registry github | |
- | |
name: '[Docker Publish Manifest] GitHub Container Registry' | |
if: success() && github.event_name != 'pull_request' && github.repository_owner == 'GitTools' | |
shell: pwsh | |
run: dotnet run/docker.dll --target=DockerManifest --docker_dotnetversion=${{ matrix.targetFramework }} --docker_distro=${{ matrix.distro }} --docker_registry github | |
publish: | |
name: Publish | |
needs: [artifacts_windows_test, artifacts_linux_test, docker_linux_images] | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
taskName: [NuGet, Chocolatey] | |
fail-fast: false | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }} | |
CHOCOLATEY_API_KEY: ${{ secrets.CHOCOLATEY_API_KEY }} | |
steps: | |
- | |
name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- | |
name: Use cached cake frosting | |
id: cache-cake | |
uses: actions/[email protected] | |
with: | |
path: run | |
key: run-${{ runner.os }}-${{ hashFiles('./build/**') }} | |
- | |
name: Use cached tools | |
id: cache-tools | |
uses: actions/[email protected] | |
with: | |
path: tools | |
key: tools-${{ runner.os }}-${{ hashFiles('./build/**') }} | |
- | |
uses: actions/download-artifact@v3 | |
name: Download nuget packages | |
with: | |
name: nuget | |
path: ${{ github.workspace }}/artifacts/packages/nuget | |
- | |
name: Setup .NET SDK | |
uses: actions/[email protected] | |
with: | |
dotnet-version: '7.0.x' | |
dotnet-quality: 'preview' | |
- | |
name: '[Publish]' | |
shell: pwsh | |
run: dotnet run/publish.dll --target=Publish${{ matrix.taskName }} | |
release: | |
name: Release | |
needs: [publish] | |
runs-on: windows-latest | |
env: | |
GITHUB_TOKEN: ${{ secrets.RELEASE_GITHUB_TOKEN }} | |
steps: | |
- | |
name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- | |
name: Use cached cake frosting | |
id: cache-cake | |
uses: actions/[email protected] | |
with: | |
path: run | |
key: run-${{ runner.os }}-${{ hashFiles('./build/**') }} | |
- | |
name: Use cached tools | |
id: cache-tools | |
uses: actions/[email protected] | |
with: | |
path: tools | |
key: tools-${{ runner.os }}-${{ hashFiles('./build/**') }} | |
- | |
uses: actions/download-artifact@v3 | |
name: Download native linux packages | |
with: | |
name: native-Linux | |
path: ${{ github.workspace }}/artifacts/packages/native | |
- | |
uses: actions/download-artifact@v3 | |
name: Download native windows packages | |
with: | |
name: native-Windows | |
path: ${{ github.workspace }}/artifacts/packages/native | |
- | |
uses: actions/download-artifact@v3 | |
name: Download native macos packages | |
with: | |
name: native-macOS | |
path: ${{ github.workspace }}/artifacts/packages/native | |
- | |
name: Setup .NET SDK | |
uses: actions/[email protected] | |
with: | |
dotnet-version: '7.0.x' | |
dotnet-quality: 'preview' | |
- | |
name: '[Release]' | |
shell: pwsh | |
run: dotnet run/release.dll --target=PublishRelease |