You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The App Store requires a release archive with a single top-level folder named exactly the app id (timetracker/, containing appinfo/info.xml). GitHub's auto-generated "Source code" tarball names the top folder timetracker-<version>/, which the store rejects. We should build a correctly-structured, signed tarball and publish it automatically on each GitHub release, so new versions no longer have to be packaged and uploaded by hand. More information is available here: https://nextcloudappstore.readthedocs.io/en/latest/developer.html
Tasks
Add a make appstore target that produces build/artifacts/timetracker.tar.gz:
run the JS build (cd js && npm ci && npm run build) so compiled assets are included;
rsync the runtime files into a timetracker/ folder, excluding dev cruft (.git, js/node_modules, js/src if only built output ships, tests, Makefile, *.md, build/CI configs, etc.);
tar -czf the timetracker/ folder so it is the single top-level directory.
Add app-store release automation (Makefile
appstoretarget + publish workflow)Problem
The App Store requires a release archive with a single top-level folder named exactly the app id (
timetracker/, containingappinfo/info.xml). GitHub's auto-generated "Source code" tarball names the top foldertimetracker-<version>/, which the store rejects. We should build a correctly-structured, signed tarball and publish it automatically on each GitHub release, so new versions no longer have to be packaged and uploaded by hand. More information is available here: https://nextcloudappstore.readthedocs.io/en/latest/developer.htmlTasks
make appstoretarget that producesbuild/artifacts/timetracker.tar.gz:cd js && npm ci && npm run build) so compiled assets are included;rsyncthe runtime files into atimetracker/folder, excluding dev cruft (.git,js/node_modules,js/srcif only built output ships,tests,Makefile,*.md, build/CI configs, etc.);tar -czfthetimetracker/folder so it is the single top-level directory..github/workflows/appstore-build-publish.yml, triggered onrelease: published, based on the official template in[nextcloud/.github](https://github.com/nextcloud/.github/blob/master/workflow-templates/appstore-build-publish.yml). It should: checkout the tag →make appstore→ sign → attach the tarball to the GitHub release → push to the store vianextcloud-releases/nextcloud-appstore-push-action.Definition of Done
timetracker/as its single top-level folder and passes the store's signature check.Test
make appstorelocally and verifytar tzf build/artifacts/timetracker.tar.gz | headshows everything undertimetracker/.Notes
[krankerl](https://github.com/ChristophWurst/krankerl)CLI (package+publish) or the store's web upload form / REST API with anopenssl dgst -sha512 … | openssl base64signature.