diff --git a/.woodpecker/.woodpecker.yml b/.woodpecker/.woodpecker.yml new file mode 100644 index 0000000..8f04610 --- /dev/null +++ b/.woodpecker/.woodpecker.yml @@ -0,0 +1,139 @@ +when: + event: manual + +steps: + checkout: + image: debian:latest + environment: + GONETS: + from_secret: GONETS + commands: + # ПОДГОТОВКА ГИТА И КЛОНИРОВАНИЕ GONETS + - apt update + - apt install -y git git-lfs + - git lfs install + + # УСТАНОВКА НЕОБХОДИМЫХ ЗАВИСИМОСТЕЙ НА СИСТЕМЕ + - apt update + - apt install -y python3 curl findutils grep sed openssh-server tree libnss3 libnss3-dev libnspr4 libnspr4-dev libasound2 libasound2-dev python3.11-venv python3-pip python3-poetry nodejs npm debhelper devscripts build-essential fakeroot dh-make dpkg-dev cmake libgirepository1.0-dev gobject-introspection libcairo2-dev pkg-config python3-dev libdbus-1-dev + - python3 --version + - node -v + - npm -v + + # ПОДГОТОВКА СПИСКА PYTHON ЗАВИСИМОСТЕЙ GONETS + - rm -rf /usr/lib/python3.11/EXTERNALLY-MANAGED + - rm -rf /root/.local/share/pypoetry + - rm -rf /root/.poetry + - rm -rf /usr/bin/poetry + - pip install pipx + - pipx ensurepath + - pipx install poetry + - echo 'export PATH="$HOME/.local/bin:$PATH"' >> /root/.bashrc + - . /root/.bashrc + - poetry --version + - cd SRV + - poetry env activate + - poetry add poetry-plugin-export + - poetry install + - poetry self update + - rm -f requirements.txt + - poetry run poetry export -f requirements.txt --output requirements.txt --without-hashes + + # ПОДГОТОВКА И СБОРКА FRONTEND ЧАСТИ GONETS + - pwd + - cd .. + - pwd + - cd FRONT/DEV + - pwd + - npm install + - npm run package + - cd dist/gonets-linux-x64/resources/app + - pwd + - npm run build + - sed -i 's#href="/assets/#href="./assets/#g' dist/index.html + - sed -i 's#src="/assets/#src="./assets/#g' dist/index.html + - cd ../../../../.. + - pwd + - rm -rf BUILD/* + - cp -r DEV/dist/gonets-linux-x64/* BUILD/ + - rm -rf DEV + + # ИНИЦИАЛИЗАЦИЯ DEBIAN КОНФИГУРАЦИЙ ДЛЯ СБОРКИ + - cd .. + - pwd + - cd .. + - pwd + - mv gonets gonets-0.1 + - cd gonets-0.1 + - pwd + - ls + - DEBEMAIL="devteam@gossys.dev" DEBFULLNAME="GOSSYS LLC" dh_make --single -y --createorig + - cd debian/ + - rm -f *.ex + - rm -f README.* + + # КЛОНИРОВАНИЕ НЕОБХОДИМЫХ ШАБЛОНОВ КОНФИГОВ ДЕБИАНА ДЛЯ СБОРКИ + - mkdir -p /woodpecker/src/dev.gossys.dev/s.galanskiy/templates + - git clone https://s.galanskiy:${GONETS}@dev.gossys.dev/s.galanskiy/gonets-debian-template.git /woodpecker/src/dev.gossys.dev/s.galanskiy/templates + - mv /woodpecker/src/dev.gossys.dev/s.galanskiy/templates/changelog /woodpecker/src/dev.gossys.dev/s.galanskiy/gonets-0.1/debian/ + - mv /woodpecker/src/dev.gossys.dev/s.galanskiy/templates/control /woodpecker/src/dev.gossys.dev/s.galanskiy/gonets-0.1/debian/ + - mv /woodpecker/src/dev.gossys.dev/s.galanskiy/templates/copyright /woodpecker/src/dev.gossys.dev/s.galanskiy/gonets-0.1/debian/ + - mv /woodpecker/src/dev.gossys.dev/s.galanskiy/templates/install /woodpecker/src/dev.gossys.dev/s.galanskiy/gonets-0.1/debian/ + - mv /woodpecker/src/dev.gossys.dev/s.galanskiy/templates/postinst /woodpecker/src/dev.gossys.dev/s.galanskiy/gonets-0.1/debian/ + - mv /woodpecker/src/dev.gossys.dev/s.galanskiy/templates/postrm /woodpecker/src/dev.gossys.dev/s.galanskiy/gonets-0.1/debian/ + - mv /woodpecker/src/dev.gossys.dev/s.galanskiy/templates/rules /woodpecker/src/dev.gossys.dev/s.galanskiy/gonets-0.1/debian/ + + # СБОРКА ДЕБИАН ПАКЕТА + - cd .. + - pwd + - dpkg-buildpackage -us -uc -b + + # ИЗВЛЕЧЕНИЕ ВЕРСИИ ПАКЕТА ДЛЯ КОММИТА + - VERSION=$(dpkg-parsechangelog -l./debian/changelog --show-field Version) + - echo "VERSION=$VERSION" > version.env + + # КОММИТ И ТЕГ НА ВЕТКУ DEVELOP + - . ./version.env + - git config user.name "s.galanskiy" + - git config user.email "s.galanskiy@gossys.dev" + - git fetch --all --prune + - git branch -r + - git checkout -b "release/$VERSION" + - git commit -am "Релиз $VERSION" + - git tag -f "v$VERSION" + - git push "https://s.galanskiy:b4785198d18200dfed812dc4299575f736255bd7@dev.gossys.dev/HybrydMain/gonets.git" "release/$VERSION" + - git push -f https://s.galanskiy:b4785198d18200dfed812dc4299575f736255bd7@dev.gossys.dev/HybrydMain/gonets.git "v$VERSION" + + # СОЗДАНИЕ И ЗАГРУЗКА РЕЛИЗА ЧЕРЕЗ API + - | + VERSION=$(dpkg-parsechangelog -l./debian/changelog --show-field Version) + echo "VERSION=$VERSION" > version.env + + # Задать переменные + . ./version.env + TAG="v$VERSION" + + DEB_PATH=$(find .. -maxdepth 1 -type f -name "gonets_*_amd64.deb" | head -n 1) + + if [ ! -f "$DEB_PATH" ]; then + echo ".deb файл не найден по пути: $DEB_PATH" + exit 1 + fi + + RELEASE_JSON=$(curl -s -X POST "https://dev.gossys.dev/api/v1/repos/HybrydMain/gonets/releases" \ + -H "Authorization: token b4785198d18200dfed812dc4299575f736255bd7" \ + -H "Content-Type: application/json" \ + -d "{\"tag_name\": \"$TAG\", \"name\": \"Релиз $TAG\", \"body\": \"Сборка .deb пакета для версии $TAG\", \"draft\": false, \"prerelease\": true}") + + RELEASE_ID=$(echo "$RELEASE_JSON" | grep '"id":' | head -n1 | sed 's/[^0-9]*\([0-9]*\).*/\1/') + + if [ -z "$RELEASE_ID" ]; then + echo "Не удалось получить ID релиза из ответа:" + echo "$RELEASE_JSON" + exit 1 + fi + + curl -s -X POST \ + -H "Authorization: token b4785198d18200dfed812dc4299575f736255bd7" \ + -F "attachment=@$DEB_PATH" \ + "https://dev.gossys.dev/api/v1/repos/HybrydMain/gonets/releases/$RELEASE_ID/assets" || echo "Ошибка загрузки файла" \ No newline at end of file