Last active
March 6, 2016 08:57
-
-
Save ieugen/95832f0e5aabea3bda92 to your computer and use it in GitHub Desktop.
My gradle recipe to build and deploy static websites with Jbake
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
plugins { | |
id 'org.ajoberstar.github-pages' version '1.4.2' | |
} | |
githubPages { | |
repoUri = '[email protected]:ieugen/ieugen.ro.git' | |
pages { | |
from 'output' | |
} | |
} | |
task jbake(type: Exec){ | |
inputs.files files('content', 'templates') | |
outputs.dir 'output' | |
workingDir './' | |
commandLine 'jbake' | |
} | |
task installBowerComponents(type: Exec){ | |
inputs.file 'bower.json' | |
outputs.dir 'bower_components' | |
workingDir './' | |
commandLine 'bower','install' | |
} | |
task copyBower(type: Copy, dependsOn: 'installBowerComponents'){ | |
inputs.dir 'bower_components' | |
outputs.dir 'output/bower_components' | |
from 'bower_components' | |
into 'output/bower_components' | |
} | |
task copyAssets(type: Copy){ | |
from 'assets' | |
into 'output' | |
} | |
task bake(dependsOn: ['jbake', 'copyBower', 'copyAssets']) | |
publishGhPages.dependsOn 'clean', 'bake' | |
task clean(type: Delete) { | |
delete "output" | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
buildscript { | |
dependencies { | |
classpath 'com.jcraft:jsch:0.1.53' | |
classpath 'com.jcraft:jsch.agentproxy.connector-factory:0.0.9' | |
classpath 'com.jcraft:jsch.agentproxy.jsch:0.0.9' | |
} | |
} | |
plugins { | |
id "com.moowork.node" version "0.11" | |
id 'org.hidetake.ssh' version '1.3.0' | |
id 'org.ajoberstar.release-base' version '1.4.2' | |
id 'distribution' | |
} | |
import org.ajoberstar.grgit.Grgit | |
import org.ajoberstar.gradle.git.release.opinion.Strategies | |
release { | |
// need to specify the repository to interact with | |
grgit = Grgit.open(project.file('.')) | |
defaultVersionStrategy = Strategies.DEVELOPMENT | |
} | |
node { | |
version = '5.7.1' | |
npmVersion = '3.6.0' | |
download = true | |
} | |
task npmCacheConfig(type: NpmTask) { | |
description = "Configure the NPM cache" | |
def npmCacheDir = "${gradle.getGradleUserHomeDir()}/caches/npm" | |
args = ['config', 'set', 'cache', npmCacheDir] | |
} | |
task npmPackages(type: NpmTask, dependsOn: npmCacheConfig) { | |
description = "Install Node.js packages" | |
args = ['install'] | |
} | |
task bowerInstall(type: NodeTask) { | |
dependsOn npmPackages | |
script = file("node_modules/bower/bin/bower") | |
args = ["--config.storage.cache=${gradle.getGradleUserHomeDir()}/caches/bower/cache", | |
"--config.storage.packages=${gradle.getGradleUserHomeDir()}/caches/bower/packages", | |
"--config.storage.registry=${gradle.getGradleUserHomeDir()}/caches/bower/registry", | |
'install'] | |
} | |
task jbake(type: Exec){ | |
inputs.files files('content', 'templates') | |
outputs.dir 'output' | |
workingDir './' | |
commandLine 'jbake' | |
} | |
task copyBower(type: Copy, dependsOn: 'bowerInstall'){ | |
inputs.dir 'bower_components' | |
outputs.dir 'output/bower_components' | |
from 'bower_components' | |
into 'output/bower_components' | |
} | |
task copyAssets(type: Copy){ | |
from 'assets' | |
into 'output' | |
} | |
task build(dependsOn: ['jbake', 'copyBower', 'copyAssets']) | |
task clean { | |
delete "output" | |
} | |
distZip.enabled = false | |
distTar { | |
dependsOn build | |
compression Compression.GZIP | |
extension 'tar.gz' | |
from 'output' | |
} | |
ssh.settings { | |
knownHosts = allowAnyHosts | |
} | |
remotes { | |
def knownHosts = "${System.getProperty("user.home")}/.ssh/known_hosts" | |
def sshKey = "${System.getProperty("user.home")}/.ssh/id_rsa" | |
webServer { | |
host = 'netdava.com' | |
user = "${System.getProperty('user.name')}" | |
agent = true | |
identity = file(sshKey) | |
} | |
} | |
task upload(dependsOn: distTar) << { | |
ssh.run { | |
session(remotes.webServer) { | |
put distTar.outputs.files.singleFile, '/tmp' | |
} | |
} | |
} | |
def targz = distTar.outputs.files.singleFile.name | |
def deployName = targz.minus('.tar.gz') | |
println targz | |
println deployName | |
task unpack << { | |
ssh.run { | |
session(remotes.webServer) { | |
execute "mkdir -p /tmp/${deployName}" | |
execute "tar -xf /tmp/${targz} -C /tmp/${deployName}" | |
execute "rsync --remove-source-files -rlv --chown=:www-data --chmod=g=rwX /tmp/${deployName}/ /var/www/netdava.com/" | |
execute "rm -rf /tmp/${targz} /tmp/${deployName}" | |
} | |
} | |
} | |
upload.mustRunAfter build | |
unpack.mustRunAfter upload | |
task deploy(dependsOn: ['build', 'upload', 'unpack']) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment