@@ -35,57 +35,35 @@ jobs:
3535 runs-on : ubuntu-latest
3636 outputs :
3737 python-versions : ${{ steps.config.outputs.python-versions }}
38- python-version : ${{ steps.config.outputs.default-python-version }}
38+ default- python-version : ${{ steps.config.outputs.default-python-version }}
3939 container-registry : ${{ steps.config.outputs.container-registry }}
4040 container-image : ${{ steps.config.outputs.container-image }}
4141 version : ${{ steps.config.outputs.version }}
4242 steps :
4343 - name : Checkout code
4444 uses : actions/checkout@v5
4545
46- - name : Get default Python version from project config
47- id : default-python-version
48- run : |
49- # Use project config directly with yq
50- DEFAULT_PYTHON_VERSION=$(yq '.python.default_version' .project.yml)
51- echo "default-python-version=$DEFAULT_PYTHON_VERSION" >> $GITHUB_OUTPUT
52- echo "Using Python version: $DEFAULT_PYTHON_VERSION"
53-
54- - name : Set up Python
55- uses : actions/setup-python@v5
56- with :
57- python-version : ${{ steps.default-python-version.outputs.default-python-version }}
58-
59- - name : Install uv
60- uses : astral-sh/setup-uv@v6
61- with :
62- enable-cache : true
63- cache-dependency-glob : " pyproject.toml.template"
46+ - name : Install yq
47+ uses : mikefarah/yq@master
6448
65- - name : Generate pyproject.toml
66- run : |
67- make generate-pyproject
68-
69- - name : Install dependencies with uv
70- run : |
71- make ci-install
72-
73- - name : Extract all configuration from Makefile
49+ - name : Get configuration from project config
7450 id : config
7551 run : |
76- PYTHON_VERSIONS_JSON =$(make print-json-PYTHON_VERSIONS )
77- DEFAULT_PYTHON_VERSION =$(yq '.python.default_version' .project.yml )
52+ DEFAULT_PYTHON_VERSION =$(make print-DEFAULT_PYTHON_VERSION )
53+ PYTHON_VERSIONS =$(make print-json-PYTHON_VERSIONS )
7854 CONTAINER_REGISTRY=$(make print-CONTAINER_REGISTRY)
7955 CONTAINER_IMAGE=$(make print-CONTAINER_IMAGE)
8056 VERSION=$(make print-VERSION)
81-
82- echo "python-versions=$PYTHON_VERSIONS_JSON" >> $GITHUB_OUTPUT
83- echo "default-python-version=$DEFAULT_PYTHON_VERSION" >> $GITHUB_OUTPUT
84- echo "container-registry=$CONTAINER_REGISTRY" >> $GITHUB_OUTPUT
85- echo "container-image=$CONTAINER_IMAGE" >> $GITHUB_OUTPUT
86- echo "version=$VERSION" >> $GITHUB_OUTPUT
87-
88- echo "Found Python versions: $(make print-PYTHON_VERSIONS)"
57+
58+ {
59+ echo "default-python-version=$DEFAULT_PYTHON_VERSION"
60+ echo "python-versions=$PYTHON_VERSIONS"
61+ echo "container-registry=$CONTAINER_REGISTRY"
62+ echo "container-image=$CONTAINER_IMAGE"
63+ echo "version=$VERSION"
64+ } >> "$GITHUB_OUTPUT"
65+
66+ echo "Found Python versions: $PYTHON_VERSIONS"
8967 echo "Default Python version: $DEFAULT_PYTHON_VERSION"
9068 echo "Container registry: $CONTAINER_REGISTRY"
9169 echo "Container image: $CONTAINER_IMAGE"
11391 - name : Set up Python
11492 uses : actions/setup-python@v5
11593 with :
116- python-version : ${{ needs.get-config.outputs.default- python-version }}
94+ python-version : ${{ matrix. python-version }}
11795
11896 - name : Install uv
11997 uses : astral-sh/setup-uv@v6
@@ -147,18 +125,19 @@ jobs:
147125 REGISTRY : ${{ needs.get-config.outputs.container-registry }}
148126 IMAGE_NAME : ${{ needs.get-config.outputs.container-image }}
149127 VERSION : ${{ needs.get-config.outputs.version }}
150- PYTHON_VERSION : ${{ matrix.default- python-version }}
128+ PYTHON_VERSION : ${{ matrix.python-version }}
151129 PLATFORMS : linux/amd64,linux/arm64
152130 PUSH : ${{ github.event_name != 'pull_request' && (github.ref == 'refs/heads/main' || github.event_name == 'release' || github.event.inputs.push_images == 'true') }}
153131 CACHE : true
154132 run : |
155- make docker-build
133+ make container-build
134+ continue-on-error : true
156135
157136 - name : Test container image
158- if : matrix.default- python-version == needs.get-config.outputs.default-python-version
137+ if : matrix.python-version == needs.get-config.outputs.default-python-version
159138 run : |
160139 # Test that the container starts and responds to health check
161- IMAGE_TAG="${{ needs.get-config.outputs.container-registry }}/${{ needs.get-config.outputs.container-image }}:${{ needs.get-config.outputs.version }}-python${{ matrix.default- python-version }}"
140+ IMAGE_TAG="${{ needs.get-config.outputs.container-registry }}/${{ needs.get-config.outputs.container-image }}:${{ needs.get-config.outputs.version }}-python${{ matrix.python-version }}"
162141
163142 echo "Testing container image: $IMAGE_TAG"
164143
@@ -179,6 +158,7 @@ jobs:
179158
180159 # Stop test container
181160 docker stop test-container
161+ continue-on-error : true
182162
183163 container-manifest :
184164 name : Create Multi-Architecture Manifests
@@ -200,33 +180,33 @@ jobs:
200180
201181 - name : Create and push manifests
202182 env :
203- PYTHON_VERSIONS : ${{ join(fromJSON(needs.get-config.outputs.default- python-versions), ' ') }}
183+ PYTHON_VERSIONS : ${{ join(fromJSON(needs.get-config.outputs.python-versions), ' ') }}
204184 DEFAULT_PYTHON_VERSION : ${{ needs.get-config.outputs.default-python-version }}
205185 REGISTRY : ${{ needs.get-config.outputs.container-registry }}
206186 IMAGE : ${{ needs.get-config.outputs.container-image }}
207187 VERSION : ${{ needs.get-config.outputs.version }}
208188 run : |
209189 if [ "${{ github.ref }}" = "refs/heads/main" ]; then
210190 # Create manifest for latest
211- MANIFEST_IMAGES=""
191+ MANIFEST_IMAGES=()
212192 for py_ver in $PYTHON_VERSIONS; do
213- MANIFEST_IMAGES="$MANIFEST_IMAGES $ REGISTRY/$IMAGE:$VERSION-python$py_ver"
193+ MANIFEST_IMAGES+=("$ REGISTRY/$IMAGE:$VERSION-python$py_ver")
214194 done
215195
216- echo "Creating manifest for latest with images: $MANIFEST_IMAGES"
217- docker manifest create $REGISTRY/$IMAGE:latest $ MANIFEST_IMAGES
218- docker manifest push $REGISTRY/$IMAGE:latest
196+ echo "Creating manifest for latest with images: ${ MANIFEST_IMAGES[*]} "
197+ docker manifest create " $REGISTRY/$IMAGE:latest" "${ MANIFEST_IMAGES[@]}"
198+ docker manifest push " $REGISTRY/$IMAGE:latest"
219199 fi
220200
221201 if [ "${{ github.event_name }}" = "release" ]; then
222202 # Create manifest for release version
223203 RELEASE_VERSION=${GITHUB_REF#refs/tags/}
224- MANIFEST_IMAGES=""
204+ MANIFEST_IMAGES=()
225205 for py_ver in $PYTHON_VERSIONS; do
226- MANIFEST_IMAGES="$MANIFEST_IMAGES $ REGISTRY/$IMAGE:$RELEASE_VERSION-python$py_ver"
206+ MANIFEST_IMAGES+=("$ REGISTRY/$IMAGE:$RELEASE_VERSION-python$py_ver")
227207 done
228208
229- echo "Creating manifest for $RELEASE_VERSION with images: $MANIFEST_IMAGES"
230- docker manifest create $REGISTRY/$IMAGE:$RELEASE_VERSION $ MANIFEST_IMAGES
231- docker manifest push $REGISTRY/$IMAGE:$RELEASE_VERSION
209+ echo "Creating manifest for $RELEASE_VERSION with images: ${ MANIFEST_IMAGES[*]} "
210+ docker manifest create " $REGISTRY/$IMAGE:$RELEASE_VERSION" "${ MANIFEST_IMAGES[@]}"
211+ docker manifest push " $REGISTRY/$IMAGE:$RELEASE_VERSION"
232212 fi
0 commit comments