Automatically deploy code using Livecode and Git.
BASIC functionality appears to be working at this time. I am developing on MacOS 10.12.5 as a reference point ;-) You should be able to deploy repositories via command line (assuming you have Livecode Server set up for this on your system) or via a web browser.
What's not working?
- email results
- exclude on backup
- exception handling
- timeout on shell commands (could use some help here...)
Also, I have not done any testing yet with Github/Bitbucket yet. It's working locally. I don't see any reason that this should not work though within the confines of "What's not working".
If you see an error 23 message from rsync, that's most likely a permissions issue on the directory you're deploying to.
git
andrsync
are required on the server that's running the script (server machine).- Optionally,
tar
is required for backup functionality (BACKUP_DIR
option).
- Optionally,
- The system user running Livecode Server (e.g.
www-data
) needs to have the necessary access permissions for theTMP_DIR
andTARGET_DIR
locations on the server machine. - If the Git repository you wish to deploy is private, the system user running Livecode Server also needs to have the right SSH keys to access the remote repository.
- Configure the script and put it somewhere that's accessible from the
Internet. The preferred way to configure it is to use
deploy-config.lc
file. Renamedeploy-config.example.lc
todeploy-config.lc
and edit the configuration options there. That way, you won't have to edit the configuration again if you download the new version ofdeploy.lc
. - Configure your git repository to call this script when the code is updated. The instructions for Git, GitHub (coming soon) and Bitbucket (coming soon) are below.
- (This step is only needed for private repositories) Go to
https://github.com/USERNAME/REPOSITORY/settings/keys
and add your server SSH key. - Go to
https://github.com/USERNAME/REPOSITORY/settings/hooks
. - Click Add webhook in the Webhooks panel.
- Enter the Payload URL for your deployment script e.g.
http://example.com/deploy.lc?sat=YourSecretAccessTokenFromDeployFile
. - Optional Choose which events should trigger the deployment.
- Make sure that the Active checkbox is checked.
- Click Add webhook.
- (This step is only needed for private repositories) Go to
https://bitbucket.org/USERNAME/REPOSITORY/admin/deploy-keys
and add your server SSH key. - Go to
https://bitbucket.org/USERNAME/REPOSITORY/admin/services
. - Add POST service.
- Enter the URL to your deployment script e.g.
http://example.com/deploy.lc?sat=YourSecretAccessTokenFromDeployFile
. - Click Save.
- Configure the SSH keys.
- Add a executable
.git/hooks/post_receive
script that calls the script e.g.
#!/bin/sh
echo "Triggering the code deployment ..."
wget -q -O /dev/null http://example.com/deploy.lc?sat=YourSecretAccessTokenFromDeployFile
Next time you push the code to the repository that has a hook enabled, it's
going to trigger the deploy.lc
script which is going to pull the changes and
update the code on the server machine.
For more info, read the source of deploy.lc
.
- Because
rsync
is used for deployment, theTARGET_DIR
doesn't have to be on the same server that the script is running e.g.define('TARGET_DIR', '[email protected]:/full/path/to/target_dir/');
is going to work as long as the user has the right SSH keys and access permissions. - You can have multiple scripts with different configurations. Simply rename
the
deploy.lc
to something else, for exampledeploy_master.lc
anddeploy_develop.lc
and configure them separately. In that case, the configuration files need to be nameddeploy_master-config.lc
anddeploy_develop-config.lc
respectively.
This project is based on the simple PHP git deploy script by Marko Marković