Skip to content

work not done #56

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 4 commits into
base: dotnet
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .github/actionlint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
self-hosted-runner:
# Labels of self-hosted runner in array of strings.
labels: []
# Configuration variables in array of strings defined in your repository or
# organization. `null` means disabling configuration variables check.
# Empty array means no configuration variable is allowed.
config-variables:
- AGENT_DIR
- AGENT_TOOLS_DIRECTORY
- GH_RUNNER_VERSION
- CHOWN_USER
- LATEST_RELEASE
- IMAGE_NAME
- BASE_IMAGE_SUFFIX
- IMAGE_TAG_PREFIX
39 changes: 21 additions & 18 deletions .github/actions/build-docker/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,29 +7,35 @@ branding:
color: 'blue'

inputs:
full_tag:
description: 'full_tag'
gh_runner_version:
description: 'gh_runner_version'
required: true
repository_owner:
description: 'repository_owner'
agent_dir:
description: 'agent_dir'
required: true
release_image_name:
description: 'release_image_name'
agent_tools_directory:
description: 'agent_tools_directory'
required: true
base_build_name:
description: 'base_build_name'
chown_user:
description: 'chown_user'
required: true
image_name:
description: 'image_name'
required: true
base_image_suffix:
description: 'base_image_suffix'
required: true
base_build_image:
description: 'base_build_image'
image_tag_prefix:
description: 'image_tag_prefix'
required: true
revision:
description: 'revision'
run_number:
description: 'run_number'
required: true
tag_prefix:
description: 'tag_prefix'
run_attempt:
description: 'run_attempt'
required: true
dockerfile:
description: 'dockerfile'
description: 'Dockerfile'
required: true
matrix_distro:
description: 'matrix_distro'
Expand All @@ -43,9 +49,6 @@ inputs:
matrix_docker_codename:
description: 'matrix_docker_codename'
required: true
chown_user:
description: 'chown_user'
required: true
docker_user:
description: 'Secret'
required: true
Expand Down
108 changes: 108 additions & 0 deletions .github/actions/complex-build-docker/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
name: 'Action complex build image'
description: "Number of steps to build and deploy image"
author: "DerSkythe"
branding:
icon: 'layers'
color: 'blue'

inputs:
gh_runner_version:
description: 'gh_runner_version'
required: true
agent_dir:
description: 'agent_dir'
required: true
agent_tools_directory:
description: 'agent_tools_directory'
required: true
chown_user:
description: 'chown_user'
required: true
image_name:
description: 'image_name'
required: true
base_image_suffix:
description: 'base_image_suffix'
required: true
image_tag_prefix:
description: 'image_tag_prefix'
required: true
run_number:
description: 'run_number'
required: true
run_attempt:
description: 'run_attempt'
required: true
dockerfile:
description: 'Dockerfile'
required: true
docker_user:
description: 'secret'
required: true
docker_token:
description: 'Secret'
required: true
gh_token:
description: 'Secret'
required: true
runs:
using: "composite"
steps:
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to DockerHub
uses: docker/login-action@v2
with:
username: ${{ inputs.docker_user }}
password: ${{ inputs.docker_token }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ inputs.docker_user }}
password: ${{ inputs.gh_token }}
- name: Docker meta
id: meta
uses: docker/metadata-action@v4
with:
labels: |
org.opencontainers.image.name=${{ inputs.release_image_name }}
org.opencontainers.image.version=${{ inputs.full_tag }}
org.opencontainers.image.base.name=${{ inputs.base_build_image }}
org.opencontainers.image.revision=${{ inputs.revision }}
org.opencontainers.image.licenses=MIT
images: ${{ inputs.image_list }}
flavor: |
latest=false
prefix=
suffix=
tags: |
type=raw,value=${{ inputs.full_tag }},enable=true
type=raw,value=${{ inputs.tag_prefix }},enable=true

- name: Build and push
if: ${{ success() }}
uses: docker/build-push-action@v4
with:
context: .
file: ./Dockerfiles/${{ inputs.dockerfile }}
provenance: true
sbom: true
pull: true
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: |
BUILD_IMAGE=${{ inputs.base_build_image }}
CHOWN_USER=${{ inputs.chown_user }}
LSB_RELEASE_CODENAME=${{ inputs.matrix_docker_codename }}
DOCKER_CODENAME=${{ inputs.matrix_docker_codename }}
DISTRO=${{ inputs.matrix_distro }}
DISTRO_VERSION=${{ inputs.matrix_version }}
VERSION=${{ env.DOCKER_METADATA_OUTPUT_VERSION }}
REVISION=${{ inputs.revision }}
platforms: ${{ inputs.platforms }}
cache-from: type=gha
cache-to: type=gha,mode=max
129 changes: 129 additions & 0 deletions .github/workflow-templates/starter-build-workflow.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
name: "Builder CI"

on:
push:
branches: [ $default-branch ]
branches-ignore: [ 'dev', 'builder' ]
pull:
branches: [ $default-branch ]
branches-ignore: [ 'dev', 'builder' ]
workflow_dispatch:

concurrency:
group: base-builder-${{ github.ref == format('refs/heads/{0}', github.event.repository.default_branch) || github.event_name == 'workflow_dispatch' }}
cancel-in-progress: true

env:
GH_RUNNER_VERSION: ${{ vars.GH_RUNNER_VERSION }}
AGENT_DIR: ${{ vars.AGENT_DIR }}
AGENT_TOOLS_DIRECTORY: ${{ vars.AGENT_TOOLS_DIRECTORY }}
CHOWN_USER: ${{ vars.CHOWN_USER }}
BASE_IMAGE_NAME: ${{ format('{0}:{1}', matrix.distro, matrix.codename) }}
RELEASE_IMAGE_NAME: ${{ format ('{0}-{1}', vars.IMAGE_NAME, vars.BASE_IMAGE_SUFFIX) }}
BASE_BUILD_IMAGE: ${{ format('{0}:{1}', matrix.distro, matrix.codename) }}
TAG_PREFIX: ${{ format('{0}-{1}', vars.IMAGE_TAG_PREFIX, matrix.os) }}
REVISION: ${{ github.RUN_NUMBER }}.${{ github.RUN_ATTEMPT }}
FULL_TAG: ${{ format('{0}-{1}-{2}.{3}', vars.IMAGE_TAG_PREFIX, matrix.os, github.RUN_NUMBER, github.RUN_ATTEMPT) }}
REPOSITORY_OWNER: ${{ github.repository_owner }}
DOCKER_FILE: ${{ format('Dockerfile.{0}-{1}', vars.BASE_IMAGE_SUFFIX, vars.IMAGE_TAG_PREFIX) }}
# All Dockerfiles must be in ./Dockerfiles/

jobs:
base-make:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
strategy:
fail-fast: false
matrix:
os:
[ ubuntu-jammy, ubuntu-focal, ubuntu-bionic, debian-bullseye, debian-sid ]
include:
- os: ubuntu-jammy
distro: ubuntu
codename: jammy
docker-codename: jammy
distro-version: 22.04
- os: ubuntu-focal
distro: ubuntu
codename: focal
docker-codename: focal
distro-version: 20.04
- os: ubuntu-bionic
distro: ubuntu
codename: bionic
docker-codename: bionic
distro-version: 18.04
- os: debian-bullseye
distro: debian
codename: bullseye
docker-codename: bullseye
distro-version: 11
- os: debian-sid
distro: debian
codename: sid
docker-codename: bullseye
distro-version: 10
environment:
name: Builder
env:
AGENT_DIR: ${{ vars.AGENT_DIR }}
AGENT_TOOLS_DIRECTORY: ${{ vars.AGENT_TOOLS_DIRECTORY }}
CHOWN_USER: ${{ vars.CHOWN_USER }}
BASE_IMAGE_NAME: ${{ format('{0}:{1}', matrix.distro, matrix.codename) }}
RELEASE_IMAGE_NAME: ${{ format ('{0}-{1}', vars.IMAGE_NAME, vars.BASE_IMAGE_SUFFIX) }}
BASE_BUILD_IMAGE: ${{ format('{0}:{1}', matrix.distro, matrix.codename) }}
TAG_PREFIX: ${{ format('{0}-{1}', vars.IMAGE_TAG_PREFIX, matrix.os) }}
REVISION: ${{ github.RUN_NUMBER }}.${{ github.RUN_ATTEMPT }}
FULL_TAG: ${{ format('{0}-{1}-{2}.{3}', vars.IMAGE_TAG_PREFIX, matrix.os, github.RUN_NUMBER, github.RUN_ATTEMPT) }}
REPOSITORY_OWNER: ${{ github.repository_owner }}
DOCKER_FILE: ${{ format('Dockerfile.{0}-{1}', vars.BASE_IMAGE_SUFFIX, vars.IMAGE_TAG_PREFIX) }}
# All Dockerfiles must be in ./Dockerfiles/
steps:
- name: Copy Repo Files
uses: actions/checkout@v3

- name: BUILD ${{ env.RELEASE_IMAGE_NAME }}
if: ${{ env.RELEASE_IMAGE_NAME != '-' }}
uses: ./.github/actions/build-docker
with:
full_tag: ${{ env.FULL_TAG }}
repository_owner: ${{ env.REPOSITORY_OWNER }}
release_image_name: ${{ env.RELEASE_IMAGE_NAME }}
base_name: ${{ env.BASE_IMAGE_NAME }}
base_build_image: ${{ env.BASE_BUILD_IMAGE }}
revision: ${{ env.REVISION }}
tag_prefix: ${{ env.TAG_PREFIX }}
dockerfile: ${{ env.DOCKER_FILE }}
matrix_distro: ${{ matrix.distro }}
matrix_codename: ${{matrix.codename}}
matrix_version: ${{ matrix.distro-version }}
matrix_docker_codename: ${{ matrix.docker-codename}}
chown_user: ${{env.CHOWN_USER }}
docker_user: ${{ secrets.DOCKER_USER }}
docker_token: ${{ secrets.DOCKER_TOKEN }}
gh_token: ${{ secrets.GITHUB_TOKEN }}
platforms: linux/amd64,linux/arm64
image_list: |
${{ env.REPOSITORY_OWNER }}/${{ env.RELEASE_IMAGE_NAME }}
ghcr.io/${{ env.REPOSITORY_OWNER }}/${{ env.RELEASE_IMAGE_NAME }}

update-dockerhub-info:
runs-on: ubuntu-latest
needs: base-make
environment:
name: Builder
env:
REPOSITORY_OWNER: ${{ github.repository_owner }}
if: ${{ success() }}
steps:
- name: Docker Hub Description
uses: peter-evans/dockerhub-description@v3
with:
username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_TOKEN }}
repository: ${{ github.repository }}
short-description: ${{ github.event.repository.description }}
readme-filepath: './README_BUILD.md'
#EOF
Loading