Easiest way to do it programmatically is using ruby sdk (github.com/gooddata/gooddata-ruby).
There are methods for uploading to user and project based staging through
project.upload_file('some_file')
client.upload_file('/file')
There is also a way to deploy processes and even execute them
client = GoodData.connect('username', 'pass')
project = client.projects('project_id')
process = project.deploy_process('path_to_file_or_dir')
process.execute('main.grf', :params => {'foo' => 'bar'})
Executing specific process works very similarly
client = GoodData.connect('username', 'pass')
project = client.projects('project_id')
process = project.processes('process_id')
process.execute('main.grf', :params => {'foo' => 'bar'})