Skip to content

Commit e410ef6

Browse files
authored
Merge pull request #49 from arturcic/main
CI workflows refactoring
2 parents 02ebe73 + c92f9cc commit e410ef6

19 files changed

+562
-347
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
name: 'Build Deps Manifest'
2+
description: 'Docker Build Deps Images Manifest'
3+
inputs:
4+
docker_distro:
5+
description: 'Linux Distro'
6+
required: true
7+
docker_registry:
8+
description: 'Docker Registry'
9+
required: true
10+
docker_registry_name:
11+
description: 'Docker Registry Name'
12+
required: true
13+
docker_registry_username:
14+
description: 'Docker Registry Username'
15+
required: true
16+
docker_registry_password:
17+
description: 'Docker Registry Password'
18+
required: true
19+
20+
runs:
21+
using: 'composite'
22+
steps:
23+
- name: Login to ${{ inputs.docker_registry }}
24+
if: ${{ env.PUSH_IMAGES == 'true' }}
25+
uses: docker/login-action@v3
26+
with:
27+
registry: ${{ inputs.docker_registry }}
28+
username: ${{ inputs.docker_registry_username }}
29+
password: ${{ inputs.docker_registry_password }}
30+
- name: '[Build Docker Deps manifest] ${{ inputs.docker_registry }}'
31+
shell: pwsh
32+
run: |
33+
dotnet run/build.dll `
34+
--target=DockerBuildDepsManifest `
35+
--docker_distro=${{ inputs.docker_distro }} --docker_registry=${{ inputs.docker_registry_name }} `
36+
--push_images=${{ env.PUSH_IMAGES }} --verbosity=diagnostic

.github/actions/build-deps/action.yml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
name: 'Build Deps'
2+
description: 'Docker Build Deps Images'
3+
inputs:
4+
arch:
5+
description: 'OS architecture'
6+
required: true
7+
docker_distro:
8+
description: 'Linux Distro'
9+
required: true
10+
docker_registry:
11+
description: 'Docker Registry'
12+
required: true
13+
docker_registry_name:
14+
description: 'Docker Registry Name'
15+
required: true
16+
docker_registry_username:
17+
description: 'Docker Registry Username'
18+
required: true
19+
docker_registry_password:
20+
description: 'Docker Registry Password'
21+
required: true
22+
23+
runs:
24+
using: 'composite'
25+
steps:
26+
- name: Login to ${{ inputs.docker_registry }}
27+
if: ${{ env.PUSH_IMAGES == 'true' }}
28+
uses: docker/login-action@v3
29+
with:
30+
registry: ${{ inputs.docker_registry }}
31+
username: ${{ inputs.docker_registry_username }}
32+
password: ${{ inputs.docker_registry_password }}
33+
- name: '[Build Docker Deps] ${{ inputs.docker_registry }}'
34+
shell: pwsh
35+
run: |
36+
dotnet run/build.dll `
37+
--target=DockerBuildDeps --arch=${{ inputs.arch }} `
38+
--docker_distro=${{ inputs.docker_distro }} --docker_registry=${{ inputs.docker_registry_name }} `
39+
--push_images=${{ env.PUSH_IMAGES }} --verbosity=diagnostic
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: 'Build Images Manifest'
2+
description: 'Docker Build Images Manifest'
3+
inputs:
4+
dotnet_version:
5+
description: '.net version'
6+
required: true
7+
dotnet_variant:
8+
description: '.net variant'
9+
required: true
10+
docker_distro:
11+
description: 'Linux Distro'
12+
required: true
13+
docker_registry:
14+
description: 'Docker Registry'
15+
required: true
16+
docker_registry_name:
17+
description: 'Docker Registry Name'
18+
required: true
19+
docker_registry_username:
20+
description: 'Docker Registry Username'
21+
required: true
22+
docker_registry_password:
23+
description: 'Docker Registry Password'
24+
required: true
25+
26+
runs:
27+
using: 'composite'
28+
steps:
29+
- name: Login to ${{ inputs.docker_registry }}
30+
if: ${{ env.PUSH_IMAGES == 'true' }}
31+
uses: docker/login-action@v3
32+
with:
33+
registry: ${{ inputs.docker_registry }}
34+
username: ${{ inputs.docker_registry_username }}
35+
password: ${{ inputs.docker_registry_password }}
36+
- name: '[Build Docker images manifest] ${{ inputs.docker_registry }}'
37+
shell: pwsh
38+
run: |
39+
dotnet run/build.dll `
40+
--target=DockerBuildImagesManifest `
41+
--dotnet_version=${{ inputs.dotnet_version }} --dotnet_variant=${{ inputs.dotnet_variant }} `
42+
--docker_distro=${{ inputs.docker_distro }} --docker_registry=${{ inputs.docker_registry_name }} `
43+
--push_images=${{ env.PUSH_IMAGES }} --verbosity=diagnostic
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
name: 'Build Images'
2+
description: 'Docker Build Images'
3+
inputs:
4+
arch:
5+
description: 'OS architecture'
6+
required: true
7+
dotnet_version:
8+
description: '.net version'
9+
required: true
10+
dotnet_variant:
11+
description: '.net variant'
12+
required: true
13+
docker_distro:
14+
description: 'Linux Distro'
15+
required: true
16+
docker_registry:
17+
description: 'Docker Registry'
18+
required: true
19+
docker_registry_name:
20+
description: 'Docker Registry Name'
21+
required: true
22+
docker_registry_username:
23+
description: 'Docker Registry Username'
24+
required: true
25+
docker_registry_password:
26+
description: 'Docker Registry Password'
27+
required: true
28+
29+
runs:
30+
using: 'composite'
31+
steps:
32+
- name: Login to ${{ inputs.docker_registry }}
33+
if: ${{ env.PUSH_IMAGES == 'true' }}
34+
uses: docker/login-action@v3
35+
with:
36+
registry: ${{ inputs.docker_registry }}
37+
username: ${{ inputs.docker_registry_username }}
38+
password: ${{ inputs.docker_registry_password }}
39+
- name: '[Build Docker images] ${{ inputs.docker_registry }}'
40+
shell: pwsh
41+
run: |
42+
dotnet run/build.dll `
43+
--target=DockerBuildImages --arch=${{ inputs.arch }} `
44+
--dotnet_version=${{ inputs.dotnet_version }} --dotnet_variant=${{ inputs.dotnet_variant }} `
45+
--docker_distro=${{ inputs.docker_distro }} --docker_registry=${{ inputs.docker_registry_name }} `
46+
--push_images=${{ env.PUSH_IMAGES }} --verbosity=diagnostic
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
name: 'Docker Setup'
2+
description: 'Setups the docker engine'
3+
4+
runs:
5+
using: 'composite'
6+
steps:
7+
- name: Set up Docker
8+
uses: docker/setup-docker-action@v4
9+
with:
10+
daemon-config: '{ "features": { "containerd-snapshotter": true } }'
11+
- name: Setup Docker Buildx
12+
uses: docker/setup-buildx-action@v3
13+
with:
14+
version: 'latest'
15+
driver-opts: 'image=moby/buildkit:buildx-stable-1'
16+
install: true

.github/dependabot.yml

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
11
version: 2
22
updates:
3-
- package-ecosystem: dotnet-sdk
4-
labels:
5-
- "dependencies"
6-
commit-message:
7-
prefix: "(deps)"
8-
directory: "/build"
9-
schedule:
10-
interval: daily
11-
- package-ecosystem: nuget
12-
labels:
13-
- "dependencies"
14-
commit-message:
15-
prefix: "(deps)"
16-
directory: "/build"
17-
schedule:
18-
interval: daily
19-
open-pull-requests-limit: 10
20-
- package-ecosystem: github-actions
21-
labels:
22-
- "dependencies"
23-
commit-message:
24-
prefix: "(build deps)"
25-
directory: "/"
26-
schedule:
27-
interval: daily
3+
- package-ecosystem: dotnet-sdk
4+
labels:
5+
- "dependencies"
6+
commit-message:
7+
prefix: "(deps)"
8+
directory: "/build"
9+
schedule:
10+
interval: daily
11+
- package-ecosystem: nuget
12+
labels:
13+
- "dependencies"
14+
commit-message:
15+
prefix: "(deps)"
16+
directory: "/build"
17+
schedule:
18+
interval: daily
19+
open-pull-requests-limit: 10
20+
- package-ecosystem: github-actions
21+
labels:
22+
- "dependencies"
23+
commit-message:
24+
prefix: "(build deps)"
25+
directory: "/"
26+
schedule:
27+
interval: daily

.github/mergify.yml

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
pull_request_rules:
2-
- name: Automatic approve on dependabot PR
3-
conditions:
4-
- author~=^dependabot(|-preview)\[bot\]$
5-
actions:
6-
review:
7-
type: APPROVE
8-
- name: Automatic merge on dependabot PR after success CI
9-
conditions:
10-
- author~=^dependabot(|-preview)\[bot\]$
11-
- '#commits-behind=0' # Only merge up to date pull requests
12-
- repository-full-name=GitTools/build-images # Don't auto-merge PRs in forks
13-
actions:
14-
merge:
15-
- name: Thank contributor
16-
conditions:
17-
- merged
18-
- -author~=^dependabot(|-preview)\[bot\]$
19-
actions:
20-
comment:
21-
message: "Thank you @{{author}} for your contribution!"
2+
- name: Automatic approve on dependabot PR
3+
conditions:
4+
- author~=^dependabot(|-preview)\[bot\]$
5+
actions:
6+
review:
7+
type: APPROVE
8+
- name: Automatic merge on dependabot PR after success CI
9+
conditions:
10+
- author~=^dependabot(|-preview)\[bot\]$
11+
- '#commits-behind=0' # Only merge up to date pull requests
12+
- repository-full-name=GitTools/build-images # Don't auto-merge PRs in forks
13+
actions:
14+
merge:
15+
- name: Thank contributor
16+
conditions:
17+
- merged
18+
- -author~=^dependabot(|-preview)\[bot\]$
19+
actions:
20+
comment:
21+
message: "Thank you @{{author}} for your contribution!"
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
on:
2+
workflow_call:
3+
inputs:
4+
docker_distros:
5+
required: true
6+
type: string
7+
env:
8+
DOTNET_INSTALL_DIR: "./.dotnet"
9+
DOTNET_ROLL_FORWARD: "Major"
10+
PUSH_IMAGES: ${{ github.event_name != 'pull_request' && github.repository_owner == 'GitTools' }}
11+
12+
jobs:
13+
build_deps_manifests:
14+
name: ${{ matrix.docker_distro }}
15+
runs-on: ubuntu-24.04
16+
strategy:
17+
fail-fast: false
18+
matrix:
19+
docker_distro: ${{ fromJson(inputs.docker_distros) }}
20+
steps:
21+
- name: Checkout
22+
uses: actions/checkout@v4
23+
- name: Use cached cake frosting
24+
id: cache-cake
25+
uses: actions/cache@v4
26+
with:
27+
path: run
28+
key: run-${{ runner.os }}-${{ hashFiles('./build/**') }}
29+
- name: Setup .NET SDK
30+
uses: actions/setup-dotnet@v4
31+
with:
32+
global-json-file: build/global.json
33+
- name: Set up Docker
34+
uses: ./.github/actions/docker-setup
35+
- name: Publish image manifest to DockerHub
36+
uses: ./.github/actions/build-deps-manifest
37+
with:
38+
docker_distro: ${{ matrix.docker_distro }}
39+
docker_registry: docker.io
40+
docker_registry_name: dockerhub
41+
docker_registry_username: ${{ secrets.DOCKER_USERNAME }}
42+
docker_registry_password: ${{ secrets.DOCKER_PASSWORD }}
43+
- name: Publish image manifest to GitHub
44+
uses: ./.github/actions/build-deps-manifest
45+
with:
46+
docker_distro: ${{ matrix.docker_distro }}
47+
docker_registry: ghcr.io
48+
docker_registry_name: github
49+
docker_registry_username: ${{ github.repository_owner }}
50+
docker_registry_password: ${{ secrets.DOCKER_GITHUB_TOKEN }}

.github/workflows/_build-deps.yml

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
on:
2+
workflow_call:
3+
inputs:
4+
runner:
5+
required: true
6+
type: string
7+
arch:
8+
required: true
9+
type: string
10+
docker_distros:
11+
required: true
12+
type: string
13+
env:
14+
DOTNET_INSTALL_DIR: "./.dotnet"
15+
DOTNET_ROLL_FORWARD: "Major"
16+
PUSH_IMAGES: ${{ github.event_name != 'pull_request' && github.repository_owner == 'GitTools' }}
17+
18+
jobs:
19+
build_deps:
20+
name: ${{ matrix.docker_distro }}
21+
runs-on: ${{ inputs.runner }}
22+
strategy:
23+
fail-fast: false
24+
matrix:
25+
docker_distro: ${{ fromJson(inputs.docker_distros) }}
26+
steps:
27+
- name: Checkout
28+
uses: actions/checkout@v4
29+
- name: Use cached cake frosting
30+
id: cache-cake
31+
uses: actions/cache@v4
32+
with:
33+
path: run
34+
key: run-${{ runner.os }}-${{ hashFiles('./build/**') }}
35+
- name: Setup .NET SDK
36+
uses: actions/setup-dotnet@v4
37+
with:
38+
global-json-file: build/global.json
39+
- name: Set up Docker
40+
uses: ./.github/actions/docker-setup
41+
- name: Publish image to DockerHub
42+
uses: ./.github/actions/build-deps
43+
with:
44+
arch: ${{ inputs.arch }}
45+
docker_distro: ${{ matrix.docker_distro }}
46+
docker_registry: docker.io
47+
docker_registry_name: dockerhub
48+
docker_registry_username: ${{ secrets.DOCKER_USERNAME }}
49+
docker_registry_password: ${{ secrets.DOCKER_PASSWORD }}
50+
- name: Publish image to GitHub
51+
uses: ./.github/actions/build-deps
52+
with:
53+
arch: ${{ inputs.arch }}
54+
docker_distro: ${{ matrix.docker_distro }}
55+
docker_registry: ghcr.io
56+
docker_registry_name: github
57+
docker_registry_username: ${{ github.repository_owner }}
58+
docker_registry_password: ${{ secrets.DOCKER_GITHUB_TOKEN }}

0 commit comments

Comments
 (0)