mkdir publishToConfluenceDemo
cd publishToConfluenceDemo
curl -Lo dtcw doctoolchain.org/dtcw`
Publish Your Docs to Confluence
There are times when you’ll want to publish your docs to Confluence, such as when you work in a team where not everyone wants to work with Git. docToolchain lets you publish your Git-based docs to Confluence alongside manually edited Confluence pages.
Another situation is when you want to work with the arc42 template in Confluence. There are several ways to import the template, but most of them require admin access. To get around this, you can set up a fresh copy of the arc42 template in docToolchain and publish it to your Confluence instance.
In this tutorial, you’ll learn how to publish the arc42 template to a Confluence cloud instance.
Step 1. Set Up docToolchain
If you have completed instructions install docToolchain and get the arc42 template you can skip this part.
For this tutorial, we assume that you work with a MacOs/Linux-based system. |
-
In the Terminal, type the following:
The result is as follows:
Details
gitpod /workspace/publishToConfluenceDemo (main) $ curl -Lo dtcw doctoolchain.org/dtcw % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 162 100 162 0 0 1306 0 --:--:-- --:--:-- --:--:-- 1317 100 10724 100 10724 0 0 25903 0 --:--:-- --:--:-- --:--:-- 25903
-
Next, type
chmod +x dtcw
. -
If you do not have docToolchain as a Docker image, type
./dtcw getJava
.The result is as follows:
Details
./dtcw: line 28: !false: command not found dtcw - docToolchain wrapper V0.31 docToolchain V2.0.5 docker available this script assumes that you have linux as operating system (x64 / linux) it now tries to install Java for you downloading JDK Temurin 11 from adoptiom to /home/gitpod/.doctoolchain/jdk.tar.gz WARNING: combining -O with -r or -p will mean that all downloaded content will be placed in the single file you specified. --2022-08-25 20:07:11-- https://api.adoptium.net/v3/binary/latest/11/ga/linux/x64/jdk/hotspot/normal/eclipse?project=jdk Resolving api.adoptium.net (api.adoptium.net)... 20.62.244.126 Connecting to api.adoptium.net (api.adoptium.net)|20.62.244.126|:443... connected. HTTP request sent, awaiting response... 307 Temporary Redirect Location: https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.16.1%2B1/OpenJDK11U-jdk_x64_linux_hotspot_11.0.16.1_1.tar.gz [following] --2022-08-25 20:07:12-- https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.16.1%2B1/OpenJDK11U-jdk_x64_linux_hotspot_11.0.16.1_1.tar.gz Resolving github.com (github.com)... 140.82.121.3 Connecting to github.com (github.com)|140.82.121.3|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://objects.githubusercontent.com/github-production-release-asset-2e65be/372924883/70b80b22-3dc5-4824-bb2d-d0158a3b9b57?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20220825%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220825T200712Z&X-Amz-Expires=300&X-Amz-Signature=887a715fcbd2e2d6bf24496f57b168ba2204f0f81794a66615ab53a7b153ed37&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=372924883&response-content-disposition=attachment%3B%20filename%3DOpenJDK11U-jdk_x64_linux_hotspot_11.0.16.1_1.tar.gz&response-content-type=application%2Foctet-stream [following] --2022-08-25 20:07:12-- https://objects.githubusercontent.com/github-production-release-asset-2e65be/372924883/70b80b22-3dc5-4824-bb2d-d0158a3b9b57?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20220825%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220825T200712Z&X-Amz-Expires=300&X-Amz-Signature=887a715fcbd2e2d6bf24496f57b168ba2204f0f81794a66615ab53a7b153ed37&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=372924883&response-content-disposition=attachment%3B%20filename%3DOpenJDK11U-jdk_x64_linux_hotspot_11.0.16.1_1.tar.gz&response-content-type=application%2Foctet-stream Resolving objects.githubusercontent.com (objects.githubusercontent.com)... 185.199.109.133, 185.199.111.133, 185.199.108.133, ... Connecting to objects.githubusercontent.com (objects.githubusercontent.com)|185.199.109.133|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 193754645 (185M) [application/octet-stream] Saving to: ‘/home/gitpod/.doctoolchain/jdk/jdk.tar.gz’ /home/gitpod/.doctoolchain/jdk 100%[====================================================>] 184.78M 310MB/s in 0.6s 2022-08-25 20:07:13 (310 MB/s) - ‘/home/gitpod/.doctoolchain/jdk/jdk.tar.gz’ saved [193754645/193754645] FINISHED --2022-08-25 20:07:13-- Total wall clock time: 1.7s Downloaded: 1 files, 185M in 0.6s (310 MB/s) expanding JDK
-
Answer the questions that appear during installation.
You will see lots of
.jar
files getting downloaded. -
Type
./dtcw tasks
.You will see this:
Details
dtcw - docToolchain wrapper V0.31 docToolchain V2.0.5 local java JDK found use /home/gitpod/.doctoolchain/jdk as JDK docker available force use of local install docToolchain not installed. sdkman not found Do you wish to install doctoolchain to /home/gitpod/.doctoolchain? 1) Yes 2) No #? 1 installing doctoolchain mkdir: cannot create directory ‘/home/gitpod/.doctoolchain’: File exists % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 1783k 100 1783k 0 0 2857k 0 --:--:-- --:--:-- --:--:-- 2857k Archive: /home/gitpod/.doctoolchain/source.zip creating: /home/gitpod/.doctoolchain/./docToolchain-2.0.5/ creating: /home/gitpod/.doctoolchain/./docToolchain-2.0.5/bin/ inflating: /home/gitpod/.doctoolchain/./docToolchain-2.0.5/bin/autobuildSite.bash inflating: /home/gitpod/.doctoolchain/./docToolchain-2.0.5/bin/doctoolchain [152 lines omitted] inflating: /home/gitpod/.doctoolchain/./docToolchain-2.0.5/template_config/pdfTheme/custom-theme.yml creating: /home/gitpod/.doctoolchain/./docToolchain-2.0.5/resources/ creating: /home/gitpod/.doctoolchain/./docToolchain-2.0.5/resources/asciidoctor-reveal.js/ creating: /home/gitpod/.doctoolchain/./docToolchain-2.0.5/resources/reveal.js/ Picked up JAVA_TOOL_OPTIONS: -Xmx3489m Downloading https://services.gradle.org/distributions/gradle-6.9.2-bin.zip ..........10%..........20%..........30%...........40%..........50%..........60%..........70%...........80%..........90%..........100% Welcome to Gradle 6.9.2! Here are the highlights of this release: - This is a small backport release. - Java 16 can be used to compile when used with Java toolchains - Dynamic versions can be used within plugin declarations - Native support for Apple Silicon processors For more details see https://docs.gradle.org/6.9.2/release-notes.html To honour the JVM settings for this build a single-use Daemon process will be forked. See https://docs.gradle.org/6.9.2/userguide/gradle_daemon.html#sec:disabling_the_daemon. Daemon will be stopped at the end of the build > Configure project : Config file '/workspace/publishToConfluenceDemo/docToolchainConfig.groovy' does not exist' [ant:input] [ant:input] do you want me to create a default one for you? (y, n) <<-------------> 0% CONFIGURING [2m 55s] > Task :help Welcome to Gradle 6.9.2. To run a build, run gradlew <task> ... To see a list of available tasks, run gradlew tasks To see a list of command-line options, run gradlew --help To see more detail about a task, run gradlew help --task <task> For troubleshooting, visit https://help.gradle.org BUILD SUCCESSFUL in 3m 29s 1 actionable task: 1 executed
./dtcw downloadTemplate
dtcw - docToolchain wrapper V0.31
docToolchain V2.0.5
local java JDK found
use /home/gitpod/.doctoolchain/jdk as JDK
docker available
home folder exists
use local homefolder install /home/gitpod/.doctoolchain/
Picked up JAVA_TOOL_OPTIONS: -Xmx3489m
To honour the JVM settings for this build a single-use Daemon process will be forked. See https://docs.gradle.org/6.9.2/userguide/gradle_daemon.html#sec:disabling_the_daemon.
Daemon will be stopped at the end of the build
> Task :downloadTemplate
Install arc42 documentation template.
For more information about arc42 see https://arc42.org
[ant:input] Which language do you want to install? (EN, DE, ES, RU)
<-<-------------> 0% EXECUTING [11s]
[ant:input] Do you want the template with or without help? (withhelp, plain)
<-<<-<--<-------------> 0% EXECUTING [17s]
Download https://github.com/arc42/arc42-template/raw/master/dist/arc42-template-EN-withhelp-asciidoc.zip
arc42 template unpacked into /workspace/publishToConfluenceDemo/src/docs/arc42
added template to docToolchainConfig.groovy
use 'generateHTML', 'generatePDF' or 'generateSite' to convert the template
BUILD SUCCESSFUL in 22s
1 actionable task: 1 executed
+ You should now have the following folder structure in your project:
+ .Project Folder Structure
.
├── docToolchainConfig.groovy
├── dtcw
└── src
└── docs
├── arc42
│ ├── arc42.adoc
│ └── chapters
│ ├── 01_introduction_and_goals.adoc
│ ├── 02_architecture_constraints.adoc
│ ├── 03_system_scope_and_context.adoc
│ ├── 04_solution_strategy.adoc
│ ├── 05_building_block_view.adoc
│ ├── 06_runtime_view.adoc
│ ├── 07_deployment_view.adoc
│ ├── 08_concepts.adoc
│ ├── 09_architecture_decisions.adoc
│ ├── 10_quality_requirements.adoc
│ ├── 11_technical_risks.adoc
│ ├── 12_glossary.adoc
│ ├── about-arc42.adoc
│ └── config.adoc
└── images
├── 01_2_iso-25010-topics-EN.png
├── 05_building_blocks-EN.png
├── 08-Crosscutting-Concepts-Structure-EN.png
└── arc42-logo.png
5 directories, 21 files
Step 2. Configure Publication to Confluence
To configure authentication through the Confluence API, do the following.
-
In the root of your project foler, open the file
docToolchainConfig.groovy
. -
Find the text
confluence.with
.This is the start of the section where you configure publication to Confluence. As you can see, docToolchain is preconfigured to publish sample input (the arc42 template) to Confluence. The input for the publishToConfluence task is the output of the
generateHTML
task. You should see this:input = [ [ file: "build/html5/arc42/arc42.html" ], ]
-
Set up the API endpoint. Get your Atlassian Confluence URL, such as https://arc42-template.atlassian.net.
Endpoint Syntaxapi = 'https://[yourServer]/[context]'
In this case, the correct endpoint is
https://arc42-template.atlassian.net/wiki
.
The context is optional, unless it is something other that "wiki". If you would like to enforce a URL that has no context (only valid if you specified useV1Api = true ) for Confluence Server you should specify the full API URL, like https://confluence.example.com/rest/api .
|
-
In
docToolchainConfig.groovy
, add the space-key, such as8FE
.
spaceKey = '8FE'
Step 2.1. Configure Confluence Authentication
Step 2.1a. CLI Authentication with username and password (insecure)
This method is not recommended. Instead of passing your password, you can use a Personal Access Token, which can easily be revoked on the event of a compromise. See Authentication with Personal Access Token. |
In the Terminal, type the following:
./dtcw publishToConfluence -PconfluenceUser=<your username> -PconfluencePass=<your password>
Step 2.1b: CLI Authentication with username and API token
This method only works for Confluence Cloud. I can use an API token. The key has to be generated from the central Atlassian account. |
-
Navigate to your central Atlassian profile.
-
Go to Manage your Account.
-
Click Security > API token > Create and manage API tokens.
Here is the shortcut to this page. -
Now, click Create API token.
-
Store your API token in a safe location.
-
Add your API token e-mail address as username and password to the
.dtcw
command../dtcw publishToConfluence -PconfluenceUser=<your email> -PconfluencePass=<your api-token>
Step 2.1c: CLI Authentication with Personal Access Token
If you do not want to pass your password and you are not an admin of your Confluence instance, you can use a Personal Access Token (PAT). Follow the Confluence documentation to generate one.
In the Terminal, type the following to publish to Confluence with your PAT:
./dtcw publishToConfluence -PconfluenceBearerToken=<your personal access token>
Step 3: Verify Your Configuration
To verify your configuration execute ./dtcw verifyConfluenceApiAccess
and pass the credentials to the task, depending on the setup you chose in the steps before.
An example would be
./dtcw verifyConfluenceApiAccess -PconfluenceUser=<your email> -PconfluencePass=<your api-token>
If the API is accessible, the task will succeed and print the API version that is used. Otherwise, an error will be printed.
...
Daemon will be stopped at the end of the build
> Task :verifyConfluenceApiAccess
Using Confluence API V1
BUILD SUCCESSFUL in 15s
3 actionable tasks: 3 executed
+
Step 4: Publish Your Pages
To publish your pages to Confluence, type:
../dtcw publishToConfluence <extra arguments>
Details
dtcw - docToolchain wrapper V0.31
docToolchain V2.0.5
local java JDK found
use /home/gitpod/.doctoolchain/jdk as JDK
docker available
home folder exists
use local homefolder install /home/gitpod/.doctoolchain/
Picked up JAVA_TOOL_OPTIONS: -Xmx3489m
To honour the JVM settings for this build a single-use Daemon process will be forked. See https://docs.gradle.org/6.9.2/userguide/gradle_daemon.html#sec:disabling_the_daemon.
Daemon will be stopped at the end of the build
> Task :publishToConfluence
publish /workspace/publishToConfluenceDemo/build/html5/arc42/arc42.html
arc42
Start getting headers
> created page 2033844225
1. Introduction and Goals
Start getting headers
image: ../images/01_2_iso-25010-topics-EN.png
allPages already retrieved
> created page 2033909761
Start getting headers
2. Architecture Constraints
Start getting headers
allPages already retrieved
> created page 2033975297
3. System Scope and Context
Start getting headers
allPages already retrieved
> created page 2034008065
4. Solution Strategy
Start getting headers
allPages already retrieved
> created page 2034040833
5. Building Block View
Start getting headers
image: ../images/05_building_blocks-EN.png
allPages already retrieved
> created page 2034073601
Start getting headers
6. Runtime View
Start getting headers
allPages already retrieved
> created page 2034139137
7. Deployment View
Start getting headers
allPages already retrieved
> created page 2034106374
8. Cross-cutting Concepts
Start getting headers
image: ../images/08-Crosscutting-Concepts-Structure-EN.png
allPages already retrieved
> created page 2034139152
Start getting headers
9. Architecture Decisions
Start getting headers
allPages already retrieved
> created page 2034040848
10. Quality Requirements
Start getting headers
This command will first run the task generateHTML
and then create one Confluence page for each arc42-chapter.

Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.