diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..de599ce --- /dev/null +++ b/.drone.yml @@ -0,0 +1,171 @@ +kind: pipeline +type: docker +name: deploy-project + +steps: + - name: deploy public_html + image: alpine:3.20 + volumes: + - name: ididit + path: /var/www/ididit + commands: + - | + if [ -d public_html ] && [ "$(ls -A public_html)" ]; then + target="/var/www/ididit/${DRONE_REPO_OWNER}/${DRONE_REPO_NAME}" + echo "Déploiement vers $target" + rm -rf "$target" + mkdir -p "$target" + cp -r public_html/* "$target/" + echo "Déploiement terminé." + ls -alh "$target" + else + echo "Aucun dossier public_html à déployer." + fi + when: + branch: + - main + event: + - push + + - name: build-linux + image: ghcr.io/cirruslabs/flutter:latest + volumes: + - name: ididit + path: /var/www/ididit + commands: + - apt-get update && apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev libstdc++-12-dev tar + - VERSION=$(grep '^version:' pubspec.yaml | awk '{print $2}') + - | + if [ -d linux ]; then + echo "Build Linux..." + flutter pub get + flutter build linux --release + TARGET="/var/www/ididit/$DRONE_REPO_OWNER/$DRONE_REPO_NAME/releases/$VERSION/linux" + mkdir -p "$TARGET" + tar czf "$TARGET/linux-$VERSION.tgz" -C build/linux/x64/release/bundle . + echo "Linux bundle published as $TARGET/linux-$VERSION.tgz" + else + echo "No linux/ directory, skipping." + fi + + - name: build-android + image: ghcr.io/cirruslabs/flutter:latest + volumes: + - name: ididit + path: /var/www/ididit + environment: + ANDROID_HOME: /opt/android-sdk + commands: + - VERSION=$(grep '^version:' pubspec.yaml | awk '{print $2}') + - | + if [ -d android ]; then + echo "Build Android..." + flutter pub get + flutter build apk --release + TARGET="/var/www/ididit/$DRONE_REPO_OWNER/$DRONE_REPO_NAME/releases/$VERSION/android" + mkdir -p "$TARGET" + cp build/app/outputs/flutter-apk/app-release.apk "$TARGET/$DRONE_REPO_NAME-$VERSION.apk" + echo "Android build published to $TARGET" + else + echo "No android/ directory, skipping." + fi + + - name: build-web + image: ghcr.io/cirruslabs/flutter:latest + volumes: + - name: ididit + path: /var/www/ididit + commands: + - apt-get update && apt-get install -y tar + - VERSION=$(grep '^version:' pubspec.yaml | awk '{print $2}') + - | + if [ -d web ]; then + echo "Build Web..." + flutter pub get + flutter build web --release + TARGET="/var/www/ididit/$DRONE_REPO_OWNER/$DRONE_REPO_NAME/releases/$VERSION/web" + mkdir -p "$TARGET" + tar czf "$TARGET/web-$VERSION.tgz" -C build/web . + echo "Web bundle published as $TARGET/web-$VERSION.tgz" + else + echo "No web/ directory, skipping." + fi + + - name: generate-versions-html + image: alpine:3.20 + volumes: + - name: ididit + path: /var/www/ididit + commands: + - OWNER="$DRONE_REPO_OWNER" + - REPO="$DRONE_REPO_NAME" + - RELEASES_DIR="/var/www/ididit/$OWNER/$REPO/releases" + - REPO_URL="https://gitea.bymycode.com/$OWNER/$REPO" + - | + HTML="$RELEASES_DIR/index.html" + echo '' > "$HTML" + echo '' >> "$HTML" + echo '' >> "$HTML" + echo ' ' >> "$HTML" + echo " Versions disponibles pour $REPO" >> "$HTML" + echo ' ' >> "$HTML" + echo '' >> "$HTML" + echo '' >> "$HTML" + echo "

Versions disponibles pour $REPO

" >> "$HTML" + echo "
" >> "$HTML" + echo " 📦 Voir le repository sur gitea.ByMyCode.com" >> "$HTML" + echo "
" >> "$HTML" + echo "
" >> "$HTML" + for version_dir in $(ls -1 "$RELEASES_DIR" | sort -Vr); do + if [ -d "$RELEASES_DIR/$version_dir" ]; then + echo "

Version $version_dir

" >> "$HTML" + # Linux bundle + if [ -f "$RELEASES_DIR/$version_dir/linux/linux-$version_dir.tgz" ]; then + echo "" >> "$HTML" + fi + # Android + if [ -d "$RELEASES_DIR/$version_dir/android" ]; then + for f in "$RELEASES_DIR/$version_dir/android/"*; do + fname=$(basename "$f") + echo "" >> "$HTML" + done + fi + # Web bundle + if [ -f "$RELEASES_DIR/$version_dir/web/web-$version_dir.tgz" ]; then + echo "" >> "$HTML" + fi + echo "
" >> "$HTML" + fi + done + echo "" >> "$HTML" + echo "" >> "$HTML" + echo "" >> "$HTML" + echo "Fichier versions.html généré dans $HTML" + + - name: list-published + image: alpine:3.20 + volumes: + - name: ididit + path: /var/www/ididit + commands: + - ls -alR /var/www/ididit/$DRONE_REPO_OWNER/$DRONE_REPO_NAME/releases || echo "No releases published." + +volumes: + - name: ididit + host: + path: /var/www/ididit