Automatic deploy of Laravel projects to fortrabbit, including built assets, using Gitlab CI.
The snippet below assumes a standard Laravel setup. Gitlab CI builds the assets and uses git add --force
to add the gitignored output files, commits it to a temporary branch and force pushes to the fortrabbit remote, triggering a deploy.
You will need to populate some environment variables:
SSH_PRIVATE_KEY
needs to be the content of a private key file, whose public key is authorized to push to fortrabbit.FORTRABBIT_ORIGIN
is the remote you need to push to for deployments, for example[email protected]:your-project.git
.SSH_HOST
is the fortrabbit host, taken from the origin, for exampledeploy.eu2.frbit.com
.SSH_KNOWN_HOSTS
contains the fingerprint of the host, which you can get from your.ssh/known_hosts
file or by running (for example)ssh-keyscan deploy.eu2.frbit.com
.
image: node:11
before_script:
- mkdir -p ~/.ssh
- echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
- echo "Host $SSH_HOST \n IdentityFile ~/.ssh/id_rsa" > ~/.ssh/config
- chmod 400 ~/.ssh/id_rsa
- git config --global user.email '[email protected]'
- git config --global user.name 'GitLab'
- echo "$SSH_KNOWN_HOSTS" >> ~/.ssh/known_hosts
push_to_fortrabbit:
script:
- npm install
- npm run production
- git checkout -b temp
- git add public/js public/css public/mix-manifest.json --force
- git commit -m "Build frontend files"
- git remote add fortrabbit $FORTRABBIT_ORIGIN
- git push fortrabbit temp:master --force
only:
- master