fork 0k-charms
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

3.5 KiB

Minimal compose.yml

gogocarto:
  options:
    admin-password: MYADMINPASSWORD

Charm note and status

As the current docker install of gogocarto as of <2020-10-20 Tue> is far from being mature, we try here to get only the released part.

We are talking of: gogocarto docker install documentation

Updating

This process will ensure to avoid rebuilding the gigantic intermediate image needed (with apache and build/install tools).

You need to run this from the root of a code checkout of: https://gitlab.com/Seballot/gogocarto, on the version you want to produce a release from.

  docker_tree_hash=$(git rev-parse HEAD:docker)
  ## Intermediate docker image is cached on docker.0k.io if needed
  if ! docker pull docker.0k.io/gogocarto-builder:${docker_tree_hash}; then
      make docker-build &&
      docker tag gogocarto_gogocarto:latest docker.0k.io/gogocarto-builder:${docker_tree_hash} &&
      docker push docker.0k.io/gogocarto-builder:${docker_tree_hash} || {
          echo "You don't seem to be able to push something on docker.0k.io, that's ok."
      }
  else
      docker tag docker.0k.io/gogocarto-builder:${docker_tree_hash} gogocarto_gogocarto:latest
  fi
  make up &&
  docker-compose exec gogocarto make init

Last make init is building the actual code to be served.

Full release is cached on docker.0k.io/downloads

This is the content of the source tree, once populated by make init.

mongodb initialisation is not included in source and is handled by the charm

As of <2022-12-03 Sat>, the Makefile's init target is:

$ grep ^init Makefile -A1 init: install assets load-fixtures fix-perms ## Initialize the project

Note that load-fixtures target is actually the mongodb initialization:

load-fixtures: ## Create the DB schema, generate DB classes and load fixtures
        $(SYMFONY) doctrine:mongodb:schema:create
        $(SYMFONY) doctrine:mongodb:generate:hydrators
        $(SYMFONY) doctrine:mongodb:generate:proxies
        $(SYMFONY) doctrine:mongodb:fixtures:load -n

This is be done in the hooks/mongo_database-relation-joined accordingly.

create the full release bundle

## Force original versions
git co web/index.php config/packages/doctrine_mongodb.yaml bin/console
sed -ri "s/^(<\?php)/\1\n\ini_set('memory.limit', '1024M');/" \
    web/index.php bin/console
sed -ri "s/\"use_as_saas=%env\(resolve:USE_AS_SAAS\)%\/%env\(resolve:DATABASE_NAME\)%\"/'%env(resolve:DATABASE_NAME)%'/g" \
    config/packages/doctrine_mongodb.yaml

## Add missing tags in git
git log --format="%H" -- config/parameters.yaml |
    while read h; do
        printf "%s\t%s\n" "$h" "$(git show $h:config/parameters.yaml |
             grep version |
             cut -f 2 -d ":" |
             xargs echo)"
    done  | uniq -f 1 |
    while read a b; do
        git tag "$b" "$a" 2>/dev/null
    done
commit_sha=$(git describe HEAD --tags)
tar cjv \
    --exclude=.git --exclude=.gitignore --exclude=.github \
    --owner=root --group=root \
    bin web vendor config src templates translations \
    > gogocarto-${commit_sha}.tar.bz2

This is still far from being perfect, I wonder if we can just remove all non '\*.{php,yml,js}' files. I noticed many many unrelated files in vendor/.

We need bin for symphony utilities that allows to setup things.