Skip to content

Feel++ Env [/]

Feel++ Env [/] #161

Workflow file for this run

name: Feel++ Env
run-name: "Feel++ Env [${{ inputs.dist }}/${{ inputs.platforms }}]"
on:
push:
branches:
- master
paths:
- 'feelpp-env/**'
- '.github/workflows/feelpp-env.yml'
workflow_dispatch:
inputs:
dist:
description: 'Distribution codename'
required: true
default: 'noble'
type: string
flavor:
description: 'Flavor of the distribution'
required: true
default: 'ubuntu'
type: string
version:
description: 'Version of the distribution'
required: true
default: '24.04'
type: string
dockerfile:
description: 'Dockerfile to use'
required: false
default: 'Dockerfile'
type: string
platforms:
description: 'Platforms to build'
required: false
default: 'linux/amd64,linux/arm64'
type: string
jobs:
activate:
runs-on: ubuntu-latest
if: |
github.repository == 'feelpp/docker' &&
!startsWith(github.event.head_commit.message, 'Release ') &&
!contains(github.event.head_commit.message, 'ci skip')
steps:
- run: echo ok go
all_images:
if: ${{ github.event_name == 'push' && !contains(github.event.head_commit.message, 'all skip') }}
strategy:
fail-fast: true
max-parallel: 4
matrix:
# Auto-generated from: feelpp-env/factory.sh matrix --format yaml
# To update: cd feelpp-env && ./factory.sh matrix --format yaml
include:
- {service: feelpp-env, dist: trixie, flavor: debian, version: "13", tag: debian-13, experimental: false, platforms: "linux/amd64,linux/arm64", dockerfile: Dockerfile}
- {service: feelpp-env, dist: testing, flavor: debian, version: "testing", tag: debian-testing, experimental: true, platforms: "linux/amd64", dockerfile: Dockerfile}
- {service: feelpp-env, dist: sid, flavor: debian, version: "sid", tag: debian-sid, experimental: true, platforms: "linux/amd64,linux/arm64", dockerfile: Dockerfile}
- {service: feelpp-env, dist: noble, flavor: ubuntu, version: "24.04", tag: ubuntu-24.04, experimental: false, platforms: "linux/amd64,linux/arm64", dockerfile: Dockerfile}
- {service: feelpp-env, dist: oracular, flavor: ubuntu, version: "26.04", tag: ubuntu-26.04, experimental: true, platforms: "linux/amd64,linux/arm64", dockerfile: Dockerfile}
- {service: feelpp-env, dist: fedora-42, flavor: fedora, version: "42", tag: fedora-42, experimental: false, platforms: "linux/amd64", dockerfile: Dockerfile}
runs-on: self-docker
needs: activate
name: ${{ matrix.flavor }}-${{ matrix.version }}
continue-on-error: ${{ matrix.experimental }}
steps:
- uses: actions/checkout@v5
with:
submodules: recursive
- name: Setup Python factory
run: |
if [ -f "feelpp-env/factory.sh" ]; then
echo "Setting up Python factory environment..."
curl -LsSf https://astral.sh/uv/install.sh | sh
export PATH="$HOME/.local/bin:$PATH"
cd feelpp-env
uv venv .venv
source .venv/bin/activate
uv pip install -q pyyaml jinja2 click rich pydantic
./factory.sh validate || echo "Validation skipped"
fi
- name: generate
run: |
# Try Python factory first, fallback to bash script
if [ -x "./factory.sh" ] && [ -d "config" ]; then
echo "Using Python factory..."
./factory.sh generate --dist ${{ matrix.flavor }}:${{ matrix.version }}
dir="${{ matrix.flavor }}-${{ matrix.version }}-clang++"
else
echo "Using bash mkimg.sh..."
dir="$(bash mkimg.sh -f ${{ matrix.flavor }}:${{ matrix.version }} -t feelpp/${{ matrix.service }}:${{ matrix.tag }})"
fi
echo "context=feelpp-env/${dir}" >> "$GITHUB_OUTPUT"
ls -lrt
id: generate
working-directory: feelpp-env
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.CR_PAT }}
- name: Build ${{ matrix.service }}:${{ matrix.tag }}
uses: docker/build-push-action@v6
with:
context: ./${{ steps.generate.outputs.context }}
tags: ghcr.io/feelpp/${{ matrix.service }}:${{ matrix.tag }}
file: ./${{ steps.generate.outputs.context }}/${{ matrix.dockerfile }}
push: ${{ github.event_name != 'pull_request' }}
platforms: ${{ matrix.platforms }}
- name: Trigger build runner:${{ matrix.tag }}
uses: peter-evans/repository-dispatch@v2
with:
token: ${{ secrets.CR_PAT }}
repository: feelpp/runners
event-type: runner-update-baseimage
client-payload: '{"flavor":"${{ matrix.flavor }}","version":"${{ matrix.version }}"}'
one_image:
if: ${{ github.event_name == 'workflow_dispatch' }}
runs-on: self-docker
needs: activate
name: ${{ inputs.dist }}
env:
tag: ${{ inputs.flavor }}-${{ inputs.version }}
service: feelpp-env
steps:
- uses: actions/checkout@v5
with:
token: ${{ secrets.CR_PAT }}
submodules: recursive
- name: Setup Python factory
run: |
if [ -f "feelpp-env/factory.sh" ]; then
echo "Setting up Python factory environment..."
curl -LsSf https://astral.sh/uv/install.sh | sh
export PATH="$HOME/.local/bin:$PATH"
cd feelpp-env
uv venv .venv
source .venv/bin/activate
uv pip install -q pyyaml jinja2 click rich pydantic
./factory.sh validate || echo "Validation skipped"
fi
- name: generate
run: |
# Try Python factory first, fallback to bash script
if [ -x "./factory.sh" ] && [ -d "config" ]; then
echo "Using Python factory..."
./factory.sh generate --dist ${{ inputs.flavor }}:${{ inputs.version }}
dir="${{ inputs.flavor }}-${{ inputs.version }}-clang++"
else
echo "Using bash mkimg.sh..."
dir="$(bash mkimg.sh -f ${{ inputs.flavor }}:${{ inputs.version }} -t feelpp/${{ env.service }}:${{ env.tag }})"
fi
echo "context=feelpp-env/${dir}" >> "$GITHUB_OUTPUT"
ls -lrt
id: generate
working-directory: feelpp-env
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.CR_PAT }}
- name: Build ${{ env.service }}:${{ env.tag }}
uses: docker/build-push-action@v6
with:
context: ./${{ steps.generate.outputs.context }}
tags: ghcr.io/feelpp/${{ env.service }}:${{ env.tag }}
file: ./${{ steps.generate.outputs.context }}/${{ inputs.dockerfile }}
push: ${{ github.event_name != 'pull_request' }}
platforms: ${{ inputs.platforms }}
- name: Trigger build runner:${{ env.tag }}
uses: peter-evans/repository-dispatch@v2
with:
token: ${{ secrets.CR_PAT }}
repository: feelpp/runners
event-type: runner-update-baseimage
client-payload: '{"flavor":"${{ inputs.flavor }}","version":"${{ inputs.version }}"}'