This commit is contained in:
2025-09-19 22:21:45 +02:00
parent 487aac79dc
commit 3991301d43

View File

@@ -14,8 +14,12 @@ jobs:
strategy: strategy:
matrix: matrix:
# Używamy oficjalnych nazw obrazów, które znalazłeś # --- ZMIANA 1: Rozbudowujemy matrix o dodatkowe zmienne ---
arch: [arm32v7, arm32v6] include:
- arch_name: arm32v7
platform: linux/arm/v7
- arch_name: arm32v6
platform: linux/arm/v6
steps: steps:
- name: Pobieranie kodu - name: Pobieranie kodu
@@ -27,50 +31,45 @@ jobs:
- name: Zbuduj paczkę w emulowanym kontenerze - name: Zbuduj paczkę w emulowanym kontenerze
id: build-step id: build-step
run: | run: |
# Definiujemy nazwy dla ułatwienia # Definiujemy nazwy, korzystając ze zmiennych z matrixa
VERSION="${{ github.event.inputs.version }}" VERSION="${{ github.event.inputs.version }}"
ARCHITECTURE="${{ matrix.arch }}" ARCH_NAME="${{ matrix.arch_name }}"
CONTAINER_NAME="builder-${ARCHITECTURE//\//-}" # Zastępujemy '/' w nazwie, aby była poprawna PLATFORM="${{ matrix.platform }}"
FILENAME="HAIERPI-${VERSION}-${ARCHITECTURE//\//-}.tar.gz" CONTAINER_NAME="builder-${ARCH_NAME//\//-}"
IMAGE_NAME="${ARCHITECTURE}/python:3.9-slim-bullseye" FILENAME="HAIERPI-${VERSION}-${ARCH_NAME//\//-}.tar.gz"
IMAGE_NAME="${ARCH_NAME}/python:3.9-slim-bullseye"
echo "Start budowania dla architektury: ${ARCHITECTURE}" echo "Start budowania dla architektury: ${ARCH_NAME}"
echo "Używany obraz Docker: ${IMAGE_NAME}" echo "Używany obraz Docker: ${IMAGE_NAME}"
echo "Flaga platformy: ${PLATFORM}"
# 1. Uruchom kontener budujący w tle # --- ZMIANA 2: Dodajemy flagę --platform do docker run ---
echo "Uruchamiam kontener budujący: ${CONTAINER_NAME}" echo "Uruchamiam kontener budujący: ${CONTAINER_NAME}"
docker run -d --name "${CONTAINER_NAME}" "${IMAGE_NAME}" tail -f /dev/null docker run -d --name "${CONTAINER_NAME}" --platform "${PLATFORM}" "${IMAGE_NAME}" tail -f /dev/null
# 2. Utwórz katalog docelowy w kontenerze # Reszta skryptu pozostaje bez zmian, bo korzysta z tych samych zmiennych
echo "Tworzę katalog /app wewnątrz kontenera..." echo "Tworzę katalog /app wewnątrz kontenera..."
docker exec "${CONTAINER_NAME}" mkdir -p /app docker exec "${CONTAINER_NAME}" mkdir -p /app
# 3. Skopiuj plik z zależnościami do kontenera
echo "Kopiuję requirements.txt do kontenera..." echo "Kopiuję requirements.txt do kontenera..."
docker cp requirements.txt "${CONTAINER_NAME}:/app/" docker cp requirements.txt "${CONTAINER_NAME}:/app/"
# 4. Zainstaluj zależności wewnątrz kontenera
echo "Instaluję zależności wewnątrz kontenera..." echo "Instaluję zależności wewnątrz kontenera..."
docker exec "${CONTAINER_NAME}" /bin/bash -c "cd /app && python -m venv venv && source venv/bin/activate && pip install -r requirements.txt" docker exec "${CONTAINER_NAME}" /bin/bash -c "cd /app && python -m venv venv && source venv/bin/activate && pip install -r requirements.txt"
# 5. Skopiuj resztę kodu aplikacji do kontenera
echo "Kopiuję kod aplikacji do kontenera..." echo "Kopiuję kod aplikacji do kontenera..."
docker cp . "${CONTAINER_NAME}:/app/src" docker cp . "${CONTAINER_NAME}:/app/src"
# 6. Stwórz finalne archiwum .tar.gz wewnątrz kontenera
echo "Tworzę archiwum ${FILENAME} wewnątrz kontenera..." echo "Tworzę archiwum ${FILENAME} wewnątrz kontenera..."
docker exec "${CONTAINER_NAME}" tar -czf "/${FILENAME}" -C /app . docker exec "${CONTAINER_NAME}" tar -czf "/${FILENAME}" -C /app .
# 7. Skopiuj gotowe archiwum z kontenera z powrotem do runnera
echo "Kopiuję gotową paczkę z kontenera..." echo "Kopiuję gotową paczkę z kontenera..."
docker cp "${CONTAINER_NAME}:/${FILENAME}" . docker cp "${CONTAINER_NAME}:/${FILENAME}" .
# 8. Zatrzymaj i usuń kontener budujący
echo "Sprzątam po procesie budowania..." echo "Sprzątam po procesie budowania..."
docker stop "${CONTAINER_NAME}" docker stop "${CONTAINER_NAME}"
docker rm "${CONTAINER_NAME}" docker rm "${CONTAINER_NAME}"
# 9. Zapisz nazwę pliku dla następnego kroku
echo "filename=${FILENAME}" >> $GITEA_OUTPUT echo "filename=${FILENAME}" >> $GITEA_OUTPUT
- name: Publikacja paczki - name: Publikacja paczki