Skip to content

Commit

Permalink
Améliore le script de release
Browse files Browse the repository at this point in the history
  • Loading branch information
polosson committed Feb 22, 2021
1 parent e4b5b45 commit 88452e2
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 28 deletions.
6 changes: 4 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,10 @@ __Il est (et doit être) impérativement maintenu à jour.__

Pour créer une release de Robert2, veuillez suivre les étapes suivantes :

1. Exécutez `./bin/release [NuméroDeVersion]` en étant à la racine du projet.
(Note: si vous ne spécifiez pas de version, la version actuellement dans le fichier `/VERSION` sera utilisée).
1. Exécutez `./bin/release -v [NuméroDeVersion]` en étant à la racine du projet.
(Note : si vous ne spécifiez pas de version, la version actuellement dans le fichier `/VERSION` sera utilisée.
Vous pouvez aussi spécifier le terme `testing` pour la version, afin de créer une release temporaire qui ne
met pas à jour le Changelog ni le fichier de version).
2. Terminé ! Vous pouvez récupérer le fichier ZIP qui a été créé dans le dossier `/dist`.

## Build de la partie client
Expand Down
65 changes: 39 additions & 26 deletions bin/release
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
#!/bin/bash

VERSION=${1:-$(<./VERSION)}
isProduction=true

while getopts "v:" option
do
case $option in
(v) VERSION=$OPTARG ; [ $OPTARG == 'testing' ] && isProduction=false ;;
(*) printf "Option inconue : '-%s'\n" "$opt" && exit 1 ;;
esac
done

releaseName="Robert2-${VERSION}"
distFolder="./dist/${releaseName}"

Expand All @@ -11,36 +21,39 @@ echo "
| _ < (_) | |_) | __/ | | |_ / __/
|_| \_\___/|_.__/ \___|_| \__|_____|
* RELEASE ${VERSION} DISTRIBUTION SCRIPT *
\e[1m\e[34m* RELEASE ${VERSION} DISTRIBUTION SCRIPT *\e[0m
Commençons..."

if ! [ -x "$(command -v jq)" ]; then
echo "ERREUR: Le programme 'jq' est requis et ne semble pas installé." >&2
echo -e "\e[1m\e[31m\nERREUR: Le programme 'jq' est requis et ne semble pas installé.\e[0m" >&2
exit 1
fi

echo -e "\nMet à jour le CHANGELOG et le fichier de version..."
CHANGELOG_REGEX="$VERSION\s+\(UNRELEASED\)"
grep -i -E "$CHANGELOG_REGEX" ./CHANGELOG.md > /dev/null 2>&1
if [ $? -ne 0 ]; then
read -p ">> Le CHANGELOG n'a pas pu être mis à jour automatiquement, voulez-vous continuer (y/n) ? " -n 1 -r
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo -e "\nReleasing annulé."
exit 1
if $isProduction; then
echo -e "\e[1m\e[34m\nMet à jour le CHANGELOG et le fichier de version...\e[0m"
CHANGELOG_REGEX="$VERSION\s+\(UNRELEASED\)"
grep -i -E "$CHANGELOG_REGEX" ./CHANGELOG.md > /dev/null 2>&1
if [ $? -ne 0 ]; then
read -p ">> Le CHANGELOG n'a pas pu être mis à jour automatiquement, voulez-vous continuer (y/n) ? " -n 1 -r
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo -e "\e[1m\e[33m\nReleasing annulé.\e[0m"
exit 1
fi
fi
sed -i -E "s/$CHANGELOG_REGEX/$VERSION \($(date '+%Y-%m-%d')\)/i" ./CHANGELOG.md
echo $VERSION > ./VERSION
else
echo -e "\e[1m\e[33m\n** MODE TESTING ** → omission de la mise à jour du Changelog et de la version !\e[0m"
fi
sed -i -E "s/$CHANGELOG_REGEX/$VERSION \($(date '+%Y-%m-%d')\)/i" ./CHANGELOG.md
echo $VERSION > ./VERSION

echo -e "\nSuppression de l'ancien dossier \"dist\"..."
echo -e "\e[1m\e[34m\nSuppression de l'ancien dossier \"dist\"...\e[0m"
rm -rf ./dist

echo -e "\nCompression des sources du client..."
(cd ./client && yarn build)
echo "Done."
echo -e "\e[1m\e[34mCompilation des sources du client...\e[0m"
(cd ./client && yarn install && yarn build)

echo -e "\nCopie des sources vers le dossier de distribution..."
echo -e "\e[1m\e[34m\nCopie des sources vers le dossier de distribution...\e[0m"
mkdir -p $distFolder
cp -r ./server/src dist
mv ./dist/src $distFolder/src
Expand All @@ -57,7 +70,7 @@ cp ./VERSION $distFolder/src/VERSION
rm $distFolder/src/public/webclient
cp -R ./client/dist $distFolder/src/public/webclient

echo -e "\nNettoyage du dossier de distribution (suppression des fichiers inutiles / privés)..."
echo -e "\e[1m\e[34mNettoyage du dossier de distribution (suppression des fichiers inutiles / privés)...\e[0m"
cd $distFolder
rm -r src/vendor
rm src/App/Config/settings.json
Expand All @@ -66,26 +79,26 @@ rm -r src/var/cache && mkdir -m 777 src/var/cache/
rm -r src/var/logs && mkdir -m 777 src/var/logs/
rm -r src/var/tmp && mkdir -m 777 src/var/tmp/

echo -e "\nCréation du dossier des données privées..."
echo -e "\e[1m\e[34mCréation du dossier des données privées...\e[0m"
mkdir -m 777 data/

echo -e "\nDéfinition des permission des dossiers..."
echo -e "\e[1m\e[34mDéfinition des permission des dossiers...\e[0m"
chmod 777 src/App/Config
chmod 777 src/install

echo -e "\nInstallation des dépendances..."
echo -e "\e[1m\e[34mInstallation des dépendances back...\e[0m"
query='del(."require-dev")|del(.autoload."psr-4"."Robert2\\Tests\\")|del(.autoload."psr-4"."Robert2\\Fixtures\\")|del(.scripts."create-migration")|del(.scripts."lint")|del(.scripts."test")|del(.scripts."testapi")|del(.scripts."testmodels")|del(.scripts."testother")'
jq $query composer.json > tmp.composer.json
mv tmp.composer.json composer.json
composer update --lock --quiet
composer install --quiet
echo "Fait."
echo "Done."

echo -e "\nEmpaquetage de la release dans un fichier ZIP..."
echo -e "\e[1m\e[34mEmpaquetage de la release dans un fichier ZIP...\e[0m"
cd .. && zip -r --quiet "${releaseName}.zip" $releaseName
echo " -> ${releaseName}.zip"
echo "Done → Fichier dist/${releaseName}.zip"

echo -e "\nSuppression du dossier temporaire..."
echo -e "\e[1m\e[34mSuppression du dossier temporaire...\e[0m"
cd .. && rm -rf $distFolder

echo -e "\nTerminé !!\n"
echo -e "\e[1m\e[32mTerminé !!\e[0m"

0 comments on commit 88452e2

Please sign in to comment.