feat: release scripting

This commit is contained in:
Jan Halfar 2024-04-19 18:01:04 +02:00
parent 937ff0f3cb
commit e3ea82f663
4 changed files with 91 additions and 0 deletions

46
Makefile Normal file
View File

@ -0,0 +1,46 @@
RELEASE_TAG=`git describe --tags || echo "dev"`
ABS_MAKEFILE=$(realpath $(MAKEFILE_LIST))
BUILD_DIR=`dirname ${ABS_MAKEFILE}`/.build
DOWNLOAD_PACKAGE_DIR=${BUILD_DIR}/downloadpackage
MODEL_EXPORT_DIR=${BUILD_DIR}/model-export
ZIP_NAME=coreml-service-yolov8m-${RELEASE_TAG}.zip
DOWNLOAD_PACKAGE_ZIP=${DOWNLOAD_PACKAGE_DIR}/${ZIP_NAME}
SERVER_FILE_IN_PACKAGE=${DOWNLOAD_PACKAGE_DIR}/coreml-service-yolov8m
test-identity:
@echo "checking code signing identity"
@if [ -z "${CODE_SIGNING_IDENTITY}" ]; then echo "please set CODE_SIGNING_IDENTITY" && exit 1 ; fi
@echo "signing .... with ${CODE_SIGNING_IDENTITY} for ${RELEASE_TAG}"
clean: test-identity
@echo "------- CLEANING -------"
mkdir -p ${BUILD_DIR}
mkdir -p ${DOWNLOAD_PACKAGE_DIR}
mkdir -p ${MODEL_EXPORT_DIR}
rm -Rvf ${DOWNLOAD_PACKAGE_DIR}/*
rm -Rvf ${MODEL_EXPORT_DIR}/*
build-server:
@echo "------- swift server build -------"
swift build -c release
transform-model-to-core-ml:
@echo "------- transforming model for core ml use -------"
MODEL_EXPORT_DIR=${MODEL_EXPORT_DIR} ./transform-model-to-core-ml.sh
move-to-download-package:
@echo "--------- moving things into place ---------"
mv ${MODEL_EXPORT_DIR}/yolov8m-oiv7.mlmodelc ${DOWNLOAD_PACKAGE_DIR}/.
mv ${BUILD_DIR}/release/app ${SERVER_FILE_IN_PACKAGE}
codesign:
@echo "--------- todo sign app ---------"
echo "TODO: code sign ${SERVER_FILE_IN_PACKAGE}"
release: clean build-server transform-model-to-core-ml move-to-download-package codesign
@echo "--------- building download pkg ---------"
cd ${DOWNLOAD_PACKAGE_DIR} && zip -r ${ZIP_NAME} . && shasum -a 256 ${ZIP_NAME}

View File

@ -1,2 +1,11 @@
# coreml-service-yolov8
vapor server with a generic REST API for a Core ML version of YOLOv8 from https://github.com/ultralytics/ultralytics
# Releasing
- set a git tag
```shell
CODE_SIGNING_IDENTITY="<you code signing id>" make release
```

12
environment.yml Normal file
View File

@ -0,0 +1,12 @@
name: coreml-service-yolov8
channels:
- conda-forge
- defaults
dependencies:
- python=3.10
- pip:
- torch
- torchaudio
- torchvision
- coremltools
- ultralytics

24
transform-model-to-core-ml.sh Executable file
View File

@ -0,0 +1,24 @@
#!/bin/zsh
# needs a mac
# install miniconda
echo "setting up conda in ${MODEL_EXPORT_DIR}"
brew install miniconda
eval "$(conda "shell.$(basename "${SHELL}")" hook)"
# cleanup previous attempt gracefully
conda init
conda deactivate || echo "nothing to conda deactivate"
conda remove -y -n coreml-service-yolov8 --all || echo "no env to remove"
# create env from file
conda env create -f environment.yml
conda init
# activate env
conda activate coreml-service-yolov8
# coreml export and conversion
cd ${MODEL_EXPORT_DIR}
yolo export model=yolov8m-oiv7.pt format=coreml nms=True
xcrun coremlcompiler compile yolov8m-oiv7.mlpackage ${MODEL_EXPORT_DIR}