auto
This commit is contained in:
@@ -7,62 +7,83 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-and-package:
|
build-and-package:
|
||||||
# --- NOWA SEKCJA: STRATEGY MATRIX ---
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
# Definiujemy listę architektur, dla których chcemy budować
|
|
||||||
arch: [armv7, arm64]
|
|
||||||
|
|
||||||
# Używamy zmiennej z matrixa do określenia runnera
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- arch_name: arm32v7
|
||||||
|
platform: linux/arm/v7
|
||||||
|
- arch_name: arm32v6
|
||||||
|
platform: linux/arm/v6
|
||||||
steps:
|
steps:
|
||||||
# --- NOWY KROK: Konfiguracja QEMU ---
|
- name: Pobieranie kodu
|
||||||
# Ten krok instaluje emulator, który pozwoli budować dla różnych architektur
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Ustawienie QEMU
|
- name: Ustawienie QEMU
|
||||||
uses: docker/setup-qemu-action@v3
|
uses: docker/setup-qemu-action@v3
|
||||||
|
|
||||||
- name: Dodaj klucz hosta Gitea do known_hosts
|
- name: Zbuduj paczkę w emulowanym kontenerze
|
||||||
|
id: build-step
|
||||||
run: |
|
run: |
|
||||||
mkdir -p ~/.ssh/
|
# Definiujemy nazwy, korzystając ze zmiennych z matrixa
|
||||||
echo "${{ secrets.HOST_KEY }}" >> ~/.ssh/known_hosts
|
VERSION="${{ github.event.inputs.version }}"
|
||||||
|
ARCH_NAME="${{ matrix.arch_name }}"
|
||||||
|
PLATFORM="${{ matrix.platform }}"
|
||||||
|
CONTAINER_NAME="builder-${ARCH_NAME//\//-}"
|
||||||
|
FILENAME="HAIERPI-${VERSION}-${ARCH_NAME//\//-}.tar.gz"
|
||||||
|
IMAGE_NAME="${ARCH_NAME}/python:3.9-alpine"
|
||||||
|
|
||||||
- name: Pobieranie kodu
|
echo "Start budowania dla architektury: ${ARCH_NAME}"
|
||||||
uses: actions/checkout@v3
|
echo "Używany obraz Docker: ${IMAGE_NAME}"
|
||||||
with:
|
echo "Flaga platformy: ${PLATFORM}"
|
||||||
ssh-key: ${{ secrets.RUNNER_SSH_KEY }}
|
|
||||||
|
|
||||||
- name: Ustawienie Pythona
|
# --- ZMIANA 2: Dodajemy flagę --platform do docker run ---
|
||||||
uses: actions/setup-python@v4
|
echo "Uruchamiam kontener budujący: ${CONTAINER_NAME}"
|
||||||
with:
|
docker run -d --name "${CONTAINER_NAME}" --platform "${PLATFORM}" "${IMAGE_NAME}" tail -f /dev/null
|
||||||
python-version: '3.10'
|
|
||||||
|
|
||||||
- name: Instalacja zależności
|
# Reszta skryptu pozostaje bez zmian, bo korzysta z tych samych zmiennych
|
||||||
run: |
|
echo "Tworzę katalog /opt/haiertest wewnątrz kontenera..."
|
||||||
# Przekazujemy platformę do Dockera, aby zależności były instalowane dla właściwej architektury
|
docker exec "${CONTAINER_NAME}" mkdir -p /opt/haiertest
|
||||||
docker run --rm --platform linux/${{ matrix.arch }} -v ${{ github.workspace }}:/ws -w /ws python:3.10-slim-bullseye /bin/bash -c "python -m venv venv && source venv/bin/activate && pip install -r requirements.txt"
|
|
||||||
|
|
||||||
# --- ZMODYFIKOWANY KROK ---
|
echo "Kopiuję requirements.txt do kontenera..."
|
||||||
- name: Tworzenie paczki .tar.gz z wersją i architekturą
|
docker cp requirements.txt "${CONTAINER_NAME}:/opt/haiertest/"
|
||||||
id: package-version
|
|
||||||
run: |
|
echo "Instaluję zależności wewnątrz kontenera..."
|
||||||
VERSION="${{ gitea.ref_name }}"
|
docker exec "${CONTAINER_NAME}" /bin/sh -c "cd /opt/haiertest && python -m venv env && source env/bin/activate && pip install -r requirements.txt"
|
||||||
# Dodajemy architekturę do nazwy pliku
|
|
||||||
FILENAME="moj-projekt-${VERSION}-${{ matrix.arch }}.tar.gz"
|
echo "Naprawiam ścieżki w środowisku venv, aby było przenośne..."
|
||||||
|
docker exec "${CONTAINER_NAME}" /bin/sh -c ' \
|
||||||
|
TARGET_PYTHON_PATH="/usr/bin/python3"; \
|
||||||
|
VENV_PATH="/opt/haiertest/env"; \
|
||||||
|
echo "Poprawiam główny link symboliczny do interpretera..."; \
|
||||||
|
PY_VERSION_LINK=$(basename $(readlink ${VENV_PATH}/bin/python3)); \
|
||||||
|
rm "${VENV_PATH}/bin/${PY_VERSION_LINK}"; \
|
||||||
|
ln -s "${TARGET_PYTHON_PATH}" "${VENV_PATH}/bin/${PY_VERSION_LINK}"; \
|
||||||
|
'
|
||||||
|
|
||||||
|
echo "Kopiuję kod aplikacji do kontenera..."
|
||||||
|
docker cp . "${CONTAINER_NAME}:/opt/haiertest/"
|
||||||
|
|
||||||
|
echo "Tworzę archiwum ${FILENAME} wewnątrz kontenera..."
|
||||||
|
docker exec "${CONTAINER_NAME}" tar --transform "s|^opt/haiertest|haiertest|" -czf "/${FILENAME}" /opt/haiertest
|
||||||
|
|
||||||
|
echo "Kopiuję gotową paczkę z kontenera..."
|
||||||
|
docker cp "${CONTAINER_NAME}:/${FILENAME}" .
|
||||||
|
|
||||||
|
echo "Sprzątam po procesie budowania..."
|
||||||
|
docker stop "${CONTAINER_NAME}"
|
||||||
|
docker rm "${CONTAINER_NAME}"
|
||||||
|
|
||||||
|
echo "filename=${FILENAME}" >> $GITEA_OUTPUT
|
||||||
|
|
||||||
mkdir ../output
|
|
||||||
echo "Tworzenie archiwum: ${FILENAME}"
|
|
||||||
tar -czf ../output/"${FILENAME}" .
|
|
||||||
echo "filename=../output/${FILENAME}" >> $GITEA_OUTPUT
|
|
||||||
|
|
||||||
# --- ZMODYFIKOWANY KROK ---
|
|
||||||
- name: Publikacja paczki
|
- name: Publikacja paczki
|
||||||
run: |
|
run: |
|
||||||
# ... (reszta skryptu do budowania URL bez zmian) ...
|
|
||||||
REPO_SLUG="${{ gitea.repository }}"
|
REPO_SLUG="${{ gitea.repository }}"
|
||||||
REPO_OWNER=$(echo $REPO_SLUG | cut -d'/' -f1)
|
REPO_OWNER=$(echo $REPO_SLUG | cut -d'/' -f1)
|
||||||
REPO_NAME=$(echo $REPO_SLUG | cut -d'/' -f2)
|
REPO_NAME=$(echo $REPO_SLUG | cut -d'/' -f2)
|
||||||
PACKAGE_FILE="${{ steps.package-version.outputs.filename }}"
|
PACKAGE_FILE="${{ steps.build-step.outputs.filename }}"
|
||||||
PACKAGE_VERSION="${{ gitea.ref_name }}"
|
PACKAGE_VERSION="${{ gitea.ref_name }}"
|
||||||
API_URL=$(echo "${{ gitea.api_url }}" | sed 's|/api/v1|/api|')
|
API_URL=$(echo "${{ gitea.api_url }}" | sed 's|/api/v1|/api|')
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user