diff --git a/.github/workflows/updater.sh b/.github/workflows/updater.sh index 5e32b7f..add164c 100644 --- a/.github/workflows/updater.sh +++ b/.github/workflows/updater.sh @@ -17,41 +17,61 @@ # Current versions are defined in _common.sh source scripts/_common.sh current_version=$(cat manifest.json | jq -j '.version|split("~")[0]') -repo=$(cat manifest.json | jq -j '.upstream.code|split("https://github.com/")[1]') -repo_ssjs="standardnotes/syncing-server-js" -repo_auth="standardnotes/auth" -repo_api="standardnotes/api-gateway" -ssjs_online_version=$(curl --silent "https://raw.githubusercontent.com/standardnotes/standalone/main/docker-compose.yml" | grep -Po 'standardnotes\/syncing-server-js:\K.*$' | head -n 1 ) -auth_online_version=$(curl --silent "https://raw.githubusercontent.com/standardnotes/standalone/main/docker-compose.yml" | grep -Po 'standardnotes\/auth:\K.*$' | head -n 1 ) -api_online_version=$(curl --silent "https://raw.githubusercontent.com/standardnotes/standalone/main/docker-compose.yml" | grep -Po 'standardnotes\/api-gateway:\K.*$' | head -n 1 ) +#repo=$(cat manifest.json | jq -j '.upstream.code|split("https://github.com/")[1]') +repo="standardnotes/server" +commit="" +id=0 +while [[ -z $commit && $id -le 29 ]] +do + commit=$(curl --silent "https://api.github.com/repos/$repo/commits" | jq -r '.[$id] | .sha' ) + tags=$(git -c 'versionsort.suffix=-' ls-remote --tags --sort='v:refname' https://github.com/standardnotes/server.git | grep $commit) -version=$(date +%Y.%m.%d) + if [[ -z $tags || $tags == *"alpha"* ]]; then + commit="" + fi + let id++ +done + +if [ -z $commit ]; then + echo "::warning ::No new version found.." + exit 0 +fi + +version=$(curl --silent "https://api.github.com/repos/$repo/commits/$commit" | jq -r '.commit.committer.date' | sed 's/T.*$//g' | sed 's/-/./g') +api_gateway_online_version=$(curl --silent "https://raw.githubusercontent.com/$repo/$commit/packages/api-gateway/package.json" | jq -j '.version') +auth_online_version=$(curl --silent "https://raw.githubusercontent.com/$repo/$commit/packages/auth/package.json" | jq -j '.version') +files_online_version=$(curl --silent "https://raw.githubusercontent.com/$repo/$commit/packages/files/package.json" | jq -j '.version') +ss_online_version=$(curl --silent "https://raw.githubusercontent.com/$repo/$commit/packages/syncing_server/package.json" | jq -j '.#version') # Setting up the environment variables echo "Current version: $current_version" -echo "Syncing-Server-JS: $syncing_server_js_version" -echo "Auth: $auth_version" echo "API-Gateway: $api_gateway_version" +echo "Auth: $auth_version" +echo "Files: $files_version" +echo "Syncing-Server: $syncing_server_version" echo "" -echo "Latest release from upstream:" -echo "Syncing-Server-JS: $ssjs_online_version" +echo "Latest release from upstream: $version" +echo "API-Gateway: $api_gateway_online_version" echo "Auth: $auth_online_version" -echo "API-Gateway: $api_online_version" +echo "Files: $files_online_version" +echo "Syncing-Server: $ss_online_version" echo "VERSION=$version" >> $GITHUB_ENV -echo "VERSION_SSJS=$syncing_server_js_version" >> $GITHUB_ENV -echo "VERSION_SSJS_UPDATE=$ssjs_online_version" >> $GITHUB_ENV +echo "VERSION_CURRENT=$current_version" >> $GITHUB_ENV +echo "VERSION_API=$api_gateway_version" >> $GITHUB_ENV +echo "VERSION_API_UPDATE=$api_gateway_online_version" >> $GITHUB_ENV echo "VERSION_AUTH=$auth_version" >> $GITHUB_ENV echo "VERSION_AUTH_UPDATE=$auth_online_version" >> $GITHUB_ENV -echo "VERSION_API=$api_gateway_version" >> $GITHUB_ENV -echo "VERSION_API_UPDATE=$api_online_version" >> $GITHUB_ENV +echo "VERSION_FILES=$files_version" >> $GITHUB_ENV +echo "VERSION_FILES_UPDATE=$files_online_version" >> $GITHUB_ENV +echo "VERSION_SS=$syncing_server_version" >> $GITHUB_ENV +echo "VERSION_SS_UPDATE=$ss_online_version" >> $GITHUB_ENV + # For the time being, let's assume the script will fail echo "PROCEED=false" >> $GITHUB_ENV # Proceed only if the retrieved version is greater than the current one -if [[ "$syncing_server_js_version" == "$ssjs_online_version" \ - && "$auth_version" == "$auth_online_version" \ - && "$api_gateway_version" == "$api_online_version" ]]; then +if [[ "$current_version" == "$version" ]]; then echo "::warning ::No new version available" exit 0 # Proceed only if a PR for this new version does not already exist @@ -60,85 +80,33 @@ elif git ls-remote -q --exit-code --heads https://github.com/$GITHUB_REPOSITORY. exit 0 fi -assets[0]="https://github.com/standardnotes/syncing-server-js/archive/$ssjs_online_version.tar.gz" -assets[1]="https://github.com/standardnotes/auth/archive/$auth_online_version.tar.gz" -assets[2]="https://github.com/standardnotes/api-gateway/archive/$api_online_version.tar.gz" -echo "${#assets[@]} available asset(s)" +asset="https://github.com/$remote/archive/$commit.tar.gz" #================================================= # UPDATE SOURCE FILES #================================================= -# Here we use the $assets variable to get the resources published in the upstream release. - -count=0 - -# Let's loop over the array of assets URLs -for asset_url in ${assets[@]}; do - -echo "Handling asset at $asset_url" - -# Assign the asset to a source file in conf/ directory -# 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 -case $asset_url in - *"/syncing-server-js/"*) - src="app_syncing-server-js" - ;; - *"/auth/"*) - src="app_auth" - ;; - *"/api-gateway/"*) - src="app_api-gateway" - ;; - *) - src="" - ;; -esac - -# If $src is not empty, let's process the asset -if [ ! -z "$src" ]; then - # Create the temporary directory tempdir="$(mktemp -d)" # Download sources and calculate checksum -filename=${asset_url##*/} -curl --silent -4 -L $asset_url -o "$tempdir/$filename" +filename=${asset##*/} +curl --silent -4 -L $asset -o "$tempdir/$filename" checksum=$(sha256sum "$tempdir/$filename" | head -c 64) # Delete temporary directory rm -rf $tempdir -# Get extension -if [[ $filename == *.tar.gz ]]; then - extension=tar.gz -else - extension=${filename##*.} -fi - # Rewrite source file -cat < conf/$src.src -SOURCE_URL=$asset_url +cat < conf/app.src +SOURCE_URL=$asset SOURCE_SUM=$checksum SOURCE_SUM_PRG=sha256sum -SOURCE_FORMAT=$extension +SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true +SOURCE_FILENAME= EOT -echo "... conf/$src.src updated" - -count=$((count+1)) - -else -echo "... asset ignored" -fi - -done - -if [ $count == 0 ]; then - echo "::warning ::None of the assets were processed." - exit 0 -fi +echo "... conf/app.src updated" #================================================= # SPECIFIC UPDATE STEPS @@ -147,11 +115,6 @@ fi # Any action on the app's source code can be done. # The GitHub Action workflow takes care of committing all changes after this script ends. -# Update versions in scripts/_common.sh -sed -i "s/syncing_server_js_version=.*$/syncing_server_js_version=\"$ssjs_online_version\"/g" "scripts/_common.sh" -sed -i "s/auth_version=.*$/auth_version=\"$auth_online_version\"/g" "scripts/_common.sh" -sed -i "s/api_gateway_version=.*$/api_gateway_version=\"$api_online_version\"/g" "scripts/_common.sh" - #================================================= # GENERIC FINALIZA-TION #================================================= diff --git a/.github/workflows/updater.yml b/.github/workflows/updater.yml index ea27fa8..2138fe1 100644 --- a/.github/workflows/updater.yml +++ b/.github/workflows/updater.yml @@ -45,9 +45,10 @@ jobs: delete-branch: true title: 'Upgrade to ${{ env.VERSION }}' body: | - Upgrade to ${{ env.VERSION }} + Upgrade ${{ env.VERSION_CURRENT }} to ${{ env.VERSION }} - Syncing-Server-JS Version: ${{ env.VERSION_SSJS }} to ${{ env.VERSION_SSJS_UPDATE }} - Auth Version: ${{ env.VERSION_AUTH }} to ${{ env.VERSION_AUTH_UPDATE }} API-Gateway Version: ${{ env.VERSION_API }} to ${{ env.VERSION_API_UPDATE }} - draft: false + Auth Version: ${{ env.VERSION_AUTH }} to ${{ env.VERSION_AUTH_UPDATE }} + Files Version: ${{ env.VERSION_FILES }} to ${{ env.VERSION_FILEs_UPDATE }} + Syncing-Server-JS Version: ${{ env.VERSION_SS }} to ${{ env.VERSION_SS_UPDATE }} + draft: true