Automatically create static web page files using Hugo within your drone pipeline!
plugins/hugo is:
- Easy to implement in your existing pipeline using
.drone.yml
- Small 21mb image size
- Highly configurable
The example below demonstrates how you can use the plugin to automatically create static web page files using Hugo. It's as easy as pie!
pipeline:
hugo:
image: plugins/hugo:1.1
validate: true
validate
allows you to check your configuration file for errors before generating the files.
You can customize the paths for e. g. the theme, layout, content directory and output directory and much more!
pipeline:
hugo:
image: plugins/hugo:1.1
+ config: path/to/config
+ content: path/to/content/
+ layout: path/to/layout
+ output: path/to/public
+ source: path/to/source
+ theme: path/themes/THEMENAME/
validate: true
You can also define a base URL directly in the pipeline, which is used when generating the files.
pipeline:
hugo:
image: plugins/hugo:1.1
config: path/to/config
content: path/to/content/
output: path/to/public
source: path/to/source
theme: path/themes/THEMENAME/
+ url: https://example.com
validate: true
You can set the buildDrafts
, buildExpired
, buildFuture
settings to configure the generated files.
buildDrafts
- include content marked as draftbuildExpired
- include expired contentbuildFuture
- include content with publishdate in the future
pipeline:
hugo:
image: plugins/hugo:1.1
+ buildDrafts: true
+ buildExpired: true
+ buildFuture: true
config: path/to/config
content: path/to/content/
output: path/to/public
source: path/to/source
theme: path/themes/THEMENAME/
url: https://example.com
validate: true
Here is a short example of how to define a pipeline that automatically generates the static web page files with Hugo and then copies them to a remote server via scp. This makes publishing websites a breeze!
pipeline:
build:
image: plugins/hugo:1.1
output: site # Output path
validate: true
when:
branch: [ master ]
publish:
image: appleboy/drone-scp
host: example.com
username: webuser
password: xxxxxxx
port: 54321
target: /var/www/ # Path to your web directory
source: site/* # Copy all files from output path
You can also use secrets to hide credentials:
pipeline:
build:
image: plugins/hugo:1.1
output: site # Output path
validate: true
when:
branch: [ master ]
publish:
image: appleboy/drone-scp
+ secrets: [ ssh_username, ssh_password ]
host: example.com
- username: webuser
- password: xxxxxxx
port: 54321
target: /var/www/ # Path to your web directory
source: site/* # Copy all files from output path
docker run --rm \
-e PLUGIN_VERSION=0.40.2 \
-e PLUGIN_BUILDDRAFTS=false \
-e PLUGIN_BUILDEXPIRED=false \
-e PLUGIN_BUILDFUTURE=false \
-e PLUGIN_CONFIG=false \
-e PLUGIN_CONTENT=false \
-e PLUGIN_LAYOUT=false \
-e PLUGIN_OUTPUT=false \
-e PLUGIN_SOURCE=false \
-e PLUGIN_THEME=false \
-e PLUGIN_OUTPUT=false \
-e PLUGIN_VALIDATE=false \
-v $(pwd):$(pwd) \
-w $(pwd) \
plugins/hugo:latest
version
- the hugo version to be used, if not set use v.0.40.2
buildDrafts
- include content marked as draft
buildExpired
- include expired content
buildFuture
- include content with publishdate in the future
config
- config file (default is path/config.yaml|json|toml)
content
- filesystem path to content directory
layout
- filesystem path to layout directory
output
- filesystem path to write files to
source
- filesystem path to read files relative from
theme
- theme to use (located in /themes/THEMENAME/)
url
- hostname (and path) to the root
validate
- validate config file before generation
You have suggestions for improvements or features you miss? You are welcome to express all your wishes here. Just create a new Issue and it will be taken care of quickly!
If you are a developer yourself, you can also contribute code! Further information will follow shortly.