Speedup Build Time on Drone CI
I use drone ci to build and deploy my github pages. Like that i don't have to wait for a free github runner and have a more or less constant build time. My initial Pipeline had three stages:

The website
Stage, where the static page is compiled with Webpacker, consumed the most time. No big deal for pages with few dependencies (e.g. a clean install of Docusaurus), where a complete build takes around 1 minute on a ๐ Hetzner CPX41 (8 VCPUs, AMD EPYC 2nd with 16 GB Ram). But for pages with many dependecies it took me around 8 minutes for the page to be built.
So i decided to add caching to my pipeline. Since memory on my server isn't a problem for the moment, i'm using volume cache directly on my server. To do so, i configured the .drony.yml
file with two additional stages:

I used the ๐ drone-volume-cache from ๐ @drillster and followed the instructions on the ๐ docs page.
Configure Drone Serverโ
Because my drone ci is deployed with ๐ Dokku, the cache will be typically under /var/lib/dokku/data/storage/<app-name>
.
# create persistent directory for caching
mkdir -p /var/lib/dokku/data/storage/drone-runner/cache
The drone server itself will spawn the drone runner with a mounted volume. To do so, the repository, needs to be "Trusted". This flag can only be set as an admin. So ensure you configured yourself as an admin:
# replace foobar with your github username
dokku config:set drone-server DRONE_USER_CREATE=username:foobar,admin:true
And set the trusted flag under Settings>General>Project Settings
for the repository you like to cache:

.drone.yml
โ
Finally, add the highlighted code blocks to your drone config file.
steps:
# first step
- name: restore-cache
image: drillster/drone-volume-cache
volumes:
- name: cache
path: /cache
settings:
restore: true
mount:
- ./node_modules
# ...
# last step
- name: rebuild-cache
image: drillster/drone-volume-cache
volumes:
- name: cache
path: /cache
settings:
rebuild: true
mount:
- ./node_modules
# ...
# add volume
volumes:
- name: cache
host:
path: /var/lib/dokku/data/storage/drone-runner/cache
Full .drone.yml
Conclusion ๐โ
With the added cache stages, the build time on my big page could be reduced from 8 minutes to 3:30 minutes ๐. For lightweight pages it takes now around 15 seconds for a small change to be deployed, yay ๐ฅณ