Newer
Older
## Piece by Piece
To assemble a new environment suitable for publishing, you will need:
* Install+configure [Google Cloud SDK](https://cloud.google.com/sdk/downloads). (Run `gcloud init`, `gcloud auth activate-service-account --key-file ...`, or similar.)
* Write access to all main CiviCRM GitHub repos (`civicrm-{core,packages,backdrop,drupal,joomla,wordpress}`)
* Write access to Google Cloud Storage (`civicrm` and `civicrm-build` buckets)
* Write access to SourceForge account (`civicrm`) as well as an [sf.net API key](https://sourceforge.net/auth/preferences/)
* Admin access to CiviCRM Jenkins (https://test.civicrm.org)
* Import the CiviCRM GPG keypair (`7A1E75CB`)
* Local copy of [buildkit](https://github.com/civicrm/civicrm-buildkit/)
* Local clones of all main CiviCRM git repos. Here are a few ways to create them:
* Create a `dist` project (`civibuild create dist`) and use `build/dist/src/`
* Create an empty folder and run `gitify` (eg `mkdir ~/src/master; cd ~/src/master; gitify all --skip-gencode`)
## Living Environment
The host `latest.civicrm.org` has a user `releaser` with a generally suitable environment in `~/src/master`
(although you will need to retrieve keys from an external credential store).
<!-- Splitting credentials limits the impact if `latest.c.o` is compromised. -->
You should generally use `tmux` for the session. This mitigates the risk that SSH interruptions will leave the release process with an inconsistent state.
A typical way to start a session would be like:
```bash
ssh myuser@latest.civicrm.org
tmux
sudo -iu releaser bash -c 'cd ~/buildkit && ssh-agent nix-shell -A releaser'