Skip to content
Snippets Groups Projects
any-prereq.md 1.67 KiB
Newer Older
  • Learn to ignore specific revisions
  • # CiviCRM (Any Version): Prerequisites
    
    
    totten's avatar
    totten committed
    ## Piece by Piece
    
    To assemble a new environment suitable for publishing, you will need:
    
    totten's avatar
    totten committed
    * Install+configure [Google Cloud SDK](https://cloud.google.com/sdk/downloads). (Run `gcloud init`, `gcloud auth activate-service-account --key-file ...`, or similar.)
    
    totten's avatar
    totten committed
    * 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/)
    
    totten's avatar
    totten committed
    * Admin access to CiviCRM Jenkins (https://test.civicrm.org)
    
    totten's avatar
    totten committed
    * 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. -->
    
    totten's avatar
    totten committed
    You should generally use `tmux` for the session. This mitigates the risk that SSH interruptions will leave the release process with an inconsistent state.
    
    totten's avatar
    totten committed
    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'
    
    ssh-add ~/.ssh/id_rsa
    ```