Running asciidoctor-pdf on TeamCity
I’ve been using asciidoctor-pdf to generate PDF and while I was initially running the tool locally I eventually decided to setup a build on TeamCity.
It was a bit trickier than I expected, mostly because I’m not that familiar with deploying Ruby applications, but I thought I’d capture what I’ve done for future me.
I have the following Gemfile that installs asciidoctor-pdf and its dependencies:
Gemfile
source 'https://rubygems.org'
gem 'prawn'
gem 'addressable'
gem 'prawn-svg'
gem 'prawn-templates'
gem 'asciidoctor-pdf'
I don’t have permissions to install gems globally on the build agents so I’m bundling those up into the vendor directory. It’s been a long time since I worked on a Ruby application so perhaps that’s par for the course.
bundle install --path vendor/
bundle package
On the build agent I’m running the following script:
export PATH="$PATH:/home/teamcity/.gem/ruby/2.3.0/bin"
mkdir $PWD/gems
export GEM_HOME="$PWD/gems"
gem install bundler --user-install --no-rdoc --no-ri && bundle install
./vendor/ruby/2.3.0/bin/asciidoctor-pdf -a allow-uri-read blog.adoc
I override where gems should be installed and then execute the asciidoctor-pdf executable from the vendor directory.
It all seems to work quite nicely but if there’s a better approach that I should be taking so let me know in the comments.
About the author
I'm currently working on short form content at ClickHouse. I publish short 5 minute videos showing how to solve data problems on YouTube @LearnDataWithMark. I previously worked on graph analytics at Neo4j, where I also co-authored the O'Reilly Graph Algorithms Book with Amy Hodler.