1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/ghost_ynh.git synced 2024-09-03 19:16:02 +02:00

Merge pull request #164 from YunoHost-Apps/testing

This commit is contained in:
tituspijean 2022-08-16 15:34:54 +02:00 committed by GitHub
commit 67eff99fcc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 91 additions and 59 deletions

View file

@ -14,14 +14,24 @@
#================================================= #=================================================
# Fetching information # Fetching information
current_version=$(cat manifest.json | jq -j '.version|split("~")[0]')
repo=$(cat manifest.json | jq -j '.upstream.code|split("https://github.com/")[1]')
# Some jq magic is needed, because the latest upstream release is not always the latest version (e.g. security patches for older versions) # Some jq magic is needed, because the latest upstream release is not always the latest version (e.g. security patches for older versions)
version=$(curl --silent "https://api.github.com/repos/$repo/releases" | jq -r '.[] | select( .prerelease != true ) | .tag_name' | sort -V | tail -1)
assets=($(curl --silent "https://api.github.com/repos/$repo/releases" | jq -r '[ .[] | select(.tag_name=="'$version'").assets[].browser_download_url ] | join(" ") | @sh' | tr -d "'"))
current_version=$(cat manifest.json | jq -j '.version|split("~")[0]')
# CORE
# repo=$(cat manifest.json | jq -j '.upstream.code|split("https://github.com/")[1]')
repo="TryGhost/Ghost"
version=$(curl --silent "https://api.github.com/repos/$repo/releases" | jq -r '.[] | select( .prerelease != true ) | .tag_name' | sort -V | tail -1)
assets=($(curl --silent "https://api.github.com/repos/$repo/releases" | jq -r '[ .[] | select(.tag_name=="'$version'").zipball_url ] | join(" ") | @sh' | tr -d "'"))
# ADMIN
admin_repo="TryGhost/Admin" admin_repo="TryGhost/Admin"
assets+=("https://github.com/TryGhost/Admin/archive/refs/tags/${version}.zip") assets+=("https://github.com/$admin_repo/archive/refs/tags/${version}.zip")
# THEME
theme_repo="TryGhost/Casper"
theme_version=$(curl --silent "https://api.github.com/repos/$theme_repo/releases" | jq -r '.[] | select( .prerelease != true ) | .tag_name' | sort -V | tail -1)
assets+=("https://github.com/$theme_repo/archive/refs/tags/${theme_version}.zip")
# Later down the script, we assume the version has only digits and dots # Later down the script, we assume the version has only digits and dots
# Sometimes the release name starts with a "v", so let's filter it out. # Sometimes the release name starts with a "v", so let's filter it out.
@ -67,12 +77,15 @@ echo "Handling asset at $asset_url"
# Here we base the source file name upon a unique keyword in the assets url (admin vs. update) # Here we base the source file name upon a unique keyword in the assets url (admin vs. update)
# Leave $src empty to ignore the asset # Leave $src empty to ignore the asset
case $asset_url in case $asset_url in
*"Ghost-"*".zip") *"/Ghost/"*)
src="app" src="app"
;; ;;
*"/Admin/"*) *"/Admin/"*)
src="admin" src="admin"
;; ;;
*"/Casper/"*)
src="casper"
;;
*) *)
src="" src=""
;; ;;
@ -92,20 +105,13 @@ checksum=$(sha256sum "$tempdir/$filename" | head -c 64)
# Delete temporary directory # Delete temporary directory
rm -rf $tempdir rm -rf $tempdir
# Get extension
if [[ $filename == *.tar.gz ]]; then
extension=tar.gz
else
extension=${filename##*.}
fi
# Rewrite source file # Rewrite source file
cat <<EOT > conf/$src.src cat <<EOT > conf/$src.src
SOURCE_URL=$asset_url SOURCE_URL=$asset_url
SOURCE_SUM=$checksum SOURCE_SUM=$checksum
SOURCE_SUM_PRG=sha256sum SOURCE_SUM_PRG=sha256sum
SOURCE_FORMAT=$extension SOURCE_FORMAT=zip
SOURCE_IN_SUBDIR=false SOURCE_IN_SUBDIR=true
EOT EOT
echo "... conf/$src.src updated" echo "... conf/$src.src updated"
@ -117,8 +123,8 @@ fi
done done
if [ $count == 0 ]; then if [ $count -lt 2 ]; then
echo "::warning ::None of the assets were processed." echo "::warning ::Some assets were not processed."
exit 0 exit 0
fi fi
@ -141,4 +147,3 @@ echo "$(jq -s --indent 4 ".[] | .version = \"$version~ynh1\"" manifest.json)" >
# The Action will proceed only if the PROCEED environment variable is set to true # The Action will proceed only if the PROCEED environment variable is set to true
echo "PROCEED=true" >> $GITHUB_ENV echo "PROCEED=true" >> $GITHUB_ENV
exit 0 exit 0

View file

@ -17,7 +17,8 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in
Publishing, memberships, subscriptions and newsletters platform Publishing, memberships, subscriptions and newsletters platform
**Shipped version:** 5.2.2~ynh1 **Shipped version:** 5.8.3~ynh1
## Screenshots ## Screenshots

View file

@ -17,7 +17,8 @@ Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour
Plateforme d'édition, d'adhésions, d'abonnements et de newsletters Plateforme d'édition, d'adhésions, d'abonnements et de newsletters
**Version incluse :** 5.2.2~ynh1 **Version incluse :** 5.8.3~ynh1
## Captures d'écran ## Captures d'écran

View file

@ -1,5 +0,0 @@
SOURCE_URL=https://github.com/TryGhost/Admin/archive/refs/tags/v5.2.2.zip
SOURCE_SUM=20f1aea329107ad1ef9c128b6727a73316a2ff3dfdf5f143735506d6a988d249
SOURCE_SUM_PRG=sha256sum
SOURCE_FORMAT=zip
SOURCE_IN_SUBDIR=false

View file

@ -1,5 +1,5 @@
SOURCE_URL=https://github.com/TryGhost/Ghost/releases/download/v4.40.0/Ghost-4.40.0.zip SOURCE_URL=https://api.github.com/repos/TryGhost/Ghost/zipball/v5.8.3
SOURCE_SUM=c0ad20deb45984e70211f50e31271c9a204cc7eba3f9488a115d3f6bcc0fe3d7 SOURCE_SUM=557c39864483fff00beeb60e27d84915e184845c69db3be83dcd7a65f327d497
SOURCE_SUM_PRG=sha256sum SOURCE_SUM_PRG=sha256sum
SOURCE_FORMAT=zip SOURCE_FORMAT=zip
SOURCE_IN_SUBDIR=false SOURCE_IN_SUBDIR=true

5
conf/casper.src Normal file
View file

@ -0,0 +1,5 @@
SOURCE_URL=https://github.com/TryGhost/Casper/archive/refs/tags/v5.2.3.zip
SOURCE_SUM=49d57ce078a2775f39d019ed74fa4ae9476e95fa35b02593c726c0ea25fe49df
SOURCE_SUM_PRG=sha256sum
SOURCE_FORMAT=zip
SOURCE_IN_SUBDIR=true

View file

@ -9,7 +9,8 @@ Group=__APP__
WorkingDirectory=__FINALPATH__ WorkingDirectory=__FINALPATH__
Environment="__YNH_NODE_LOAD_PATH__" Environment="__YNH_NODE_LOAD_PATH__"
Environment="NODE_ENV=production" Environment="NODE_ENV=production"
ExecStart=__YNH_NODE__ index.js run #ExecStart=__YNH_NODE__ core/index.js run
ExecStart=yarn start
Restart=always Restart=always
# Sandboxing options to harden security # Sandboxing options to harden security

View file

@ -6,13 +6,14 @@
"en": "Publishing, memberships, subscriptions and newsletters platform", "en": "Publishing, memberships, subscriptions and newsletters platform",
"fr": "Plateforme d'édition, d'adhésions, d'abonnements et de newsletters" "fr": "Plateforme d'édition, d'adhésions, d'abonnements et de newsletters"
}, },
"version": "5.2.2~ynh1", "version": "5.8.3~ynh1",
"url": "https://ghost.org/", "url": "https://ghost.org/",
"upstream": { "upstream": {
"license": "MIT", "license": "MIT",
"website": "https://ghost.org/", "website": "https://ghost.org/",
"admindoc": "https://ghost.org/help/", "admindoc": "https://ghost.org/help/",
"code": "https://github.com/TryGhost/Ghost" "code": "https://github.com/TryGhost/Ghost",
"cpe": "cpe:2.3:a:ghost:ghost"
}, },
"license": "MIT", "license": "MIT",
"maintainer": { "maintainer": {
@ -50,4 +51,4 @@
} }
] ]
} }
} }

View file

@ -124,9 +124,9 @@ fi
#================================================= #=================================================
ynh_script_progression --message="Modifying a config file..." ynh_script_progression --message="Modifying a config file..."
ynh_add_config --template="../conf/config.production.json" --destination="$final_path/config.production.json" ynh_add_config --template="../conf/config.production.json" --destination="$final_path/ghost/core/config.production.json"
chmod 400 "$final_path/config.production.json" chmod 400 "$final_path/ghost/core/config.production.json"
chown $app:$app "$final_path/config.production.json" chown $app:$app "$final_path/ghost/core/config.production.json"
#================================================= #=================================================
# GENERIC FINALISATION # GENERIC FINALISATION

View file

@ -99,9 +99,9 @@ ynh_app_setting_set --app=$app --key=final_path --value=$final_path
# Download, check integrity, uncompress and patch the source from app.src # Download, check integrity, uncompress and patch the source from app.src
ynh_setup_source --dest_dir="$final_path" ynh_setup_source --dest_dir="$final_path"
# Download, check integrity, uncompress and patch the source from admin.src # Download, check integrity, uncompress and patch the source from casper.src
mkdir -p $final_path/core/client/Admin mkdir -p $final_path/ghost/core/content/themes/casper
ynh_setup_source --dest_dir="$final_path/core/client/Admin" --source_id="admin" ynh_setup_source --dest_dir="$final_path/ghost/core/content/themes/casper" --source_id="casper"
chmod 750 "$final_path" chmod 750 "$final_path"
chmod -R o-rwx "$final_path" chmod -R o-rwx "$final_path"
@ -122,9 +122,13 @@ ynh_add_nginx_config
#================================================= #=================================================
ynh_script_progression --message="Modifying a config file..." ynh_script_progression --message="Modifying a config file..."
ynh_add_config --template="../conf/config.production.json" --destination="$final_path/config.production.json" ynh_add_config --template="../conf/config.production.json" --destination="$final_path/ghost/core/config.production.json"
chmod 400 "$final_path/config.production.json" chmod 400 "$final_path/ghost/core/config.production.json"
chown $app:$app "$final_path/config.production.json" chown $app:$app "$final_path/ghost/core/config.production.json"
touch "$final_path/.yarnrc.yml"
chmod 400 "$final_path/.yarnrc.yml"
chown $app:$app "$final_path/.yarnrc.yml"
#============================================== #==============================================
# BUILD GHOST # BUILD GHOST
@ -133,10 +137,10 @@ ynh_script_progression --message="Building Ghost... (this will take some time an
pushd "$final_path" pushd "$final_path"
ynh_use_nodejs ynh_use_nodejs
ynh_exec_warn_less ynh_exec_as $app $ynh_node_load_PATH yarn install --non-interactive # Longer network timeouts for slow systems; see https://github.com/yarnpkg/yarn/issues/8242
ynh_exec_warn_less ynh_exec_as $app $ynh_node_load_PATH $final_path/node_modules/.bin/knex-migrator init ynh_exec_warn_less ynh_exec_as $app $ynh_node_load_PATH HOME="$final_path" yarn config set network-timeout 600000
ynh_exec_warn_less ynh_exec_as $app $ynh_node_load_PATH $final_path/node_modules/.bin/grunt symlink ynh_exec_warn_less ynh_exec_as $app $ynh_node_load_PATH HOME="$final_path" yarn add knex-migrator ember-cli --dev --ignore-workspace-root-check --non-interactive
ynh_exec_warn_less ynh_exec_as $app $ynh_node_load_PATH $final_path/node_modules/.bin/grunt init --force ynh_exec_warn_less ynh_exec_as $app $ynh_node_load_PATH HOME="$final_path" yarn setup # catch-all command provided by Ghost that handles all the setup
popd popd
#================================================= #=================================================

View file

@ -92,10 +92,24 @@ then
tmpdir="$(mktemp -d)" tmpdir="$(mktemp -d)"
# Copy the admin saved settings from final path to tmp directory # Copy the admin saved settings from final path to tmp directory
cp -ar "$final_path/config.production.json" "$tmpdir/config.production.json" if [ -f "$final_path/config.production.json" ]
then
# Old versions of Ghost store it here
cp -ar "$final_path/config.production.json" "$tmpdir/config.production.json"
else
# New versions of Ghost store it here
cp -ar "$final_path/ghost/core/config.production.json" "$tmpdir/config.production.json"
fi
# Backup the content folder to the temp dir # Backup the content folder to the temp dir
cp -ar "$final_path/content" "$tmpdir/content" if [ -f "$final_path/config.production.json" ]
then
# Old versions of Ghost store it here
cp -ar "$final_path/content" "$tmpdir/content"
else
# New versions of Ghost store it here
cp -ar "$final_path/ghost/core/content" "$tmpdir/content"
fi
# Remove the app directory securely # Remove the app directory securely
ynh_secure_remove --file=$final_path ynh_secure_remove --file=$final_path
@ -103,15 +117,15 @@ then
# Download, check integrity, uncompress and patch the source from app.src # Download, check integrity, uncompress and patch the source from app.src
ynh_setup_source --dest_dir=$final_path ynh_setup_source --dest_dir=$final_path
# Download, check integrity, uncompress and patch the source from admin.src # Download, check integrity, uncompress and patch the source from casper.src
mkdir -p $final_path/core/client/Admin mkdir -p $final_path/content/themes/casper
ynh_setup_source --dest_dir="$final_path/core/client/Admin" --source_id="admin" ynh_setup_source --dest_dir="$final_path/ghost/core/content/themes/casper" --source_id="casper"
# Copy the admin saved settings from tmp directory to final path # Copy the admin saved settings from tmp directory to final path
cp -ar "$tmpdir/config.production.json" "$final_path/config.production.json" cp -ar "$tmpdir/config.production.json" "$final_path/ghost/core/config.production.json"
# Copy content folder back to the final_path # Copy content folder back to the final_path
cp -ar "$tmpdir/content" "${final_path}" cp -ar "$tmpdir/content" "${final_path}/ghost/core"
# Remove the tmp directory securely # Remove the tmp directory securely
ynh_secure_remove --file="$tmpdir" ynh_secure_remove --file="$tmpdir"
@ -149,9 +163,13 @@ ynh_install_extra_app_dependencies --repo="deb https://dl.yarnpkg.com/debian/ st
#================================================= #=================================================
ynh_script_progression --message="Modifying a config file..." ynh_script_progression --message="Modifying a config file..."
ynh_add_config --template="../conf/config.production.json" --destination="$final_path/config.production.json" ynh_add_config --template="../conf/config.production.json" --destination="$final_path/ghost/core/config.production.json"
chmod 400 "$final_path/config.production.json" chmod 400 "$final_path/ghost/core/config.production.json"
chown $app:$app "$final_path/config.production.json" chown $app:$app "$final_path/ghost/core/config.production.json"
touch "$final_path/.yarnrc.yml"
chmod 400 "$final_path/.yarnrc.yml"
chown $app:$app "$final_path/.yarnrc.yml"
#============================================== #==============================================
# BUILD GHOST # BUILD GHOST
@ -162,10 +180,11 @@ then
ynh_script_progression --message="Building Ghost... (this will take some time and resources!)" ynh_script_progression --message="Building Ghost... (this will take some time and resources!)"
pushd "$final_path" pushd "$final_path"
ynh_exec_warn_less ynh_exec_as $app $ynh_node_load_PATH yarn install --non-interactive # Longer network timeouts for slow systems; see https://github.com/yarnpkg/yarn/issues/8242
ynh_exec_warn_less ynh_exec_as $app $ynh_node_load_PATH $final_path/node_modules/.bin/knex-migrator init ynh_exec_warn_less ynh_exec_as $app $ynh_node_load_PATH HOME="$final_path" yarn config set network-timeout 600000
ynh_exec_warn_less ynh_exec_as $app $ynh_node_load_PATH $final_path/node_modules/.bin/grunt symlink ynh_exec_warn_less ynh_exec_as $app $ynh_node_load_PATH HOME="$final_path" yarn install --non-interactive
ynh_exec_warn_less ynh_exec_as $app $ynh_node_load_PATH $final_path/node_modules/.bin/grunt init --force ynh_exec_warn_less ynh_exec_as $app $ynh_node_load_PATH HOME="$final_path" yarn add knex-migrator ember-cli --dev --ignore-workspace-root-check --non-interactive
ynh_exec_warn_less ynh_exec_as $app $ynh_node_load_PATH HOME="$final_path" yarn setup
popd popd
fi fi