From 8f90e5ad8bc31d9ecbcdf815e4e866848c47527c Mon Sep 17 00:00:00 2001 From: Egor Kovetskiy Date: Tue, 28 Jul 2020 11:05:17 +0300 Subject: [PATCH] update CI notes --- README.md | 69 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 37 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index 556080e..4a855c0 100644 --- a/README.md +++ b/README.md @@ -224,42 +224,47 @@ base_url = "http://confluence.local" # Tricks -## Confluence & Gitlab integration +## Continuous Integration -Mark was created with CI in mind so you can easily integrate mark into your -pipeline, put the following code to your .gitlab-ci.yml in repository with your -markdown docs: +It's quite trivial to integrate Mark into a CI/CD system, here is an example with [Snake CI](https://snake-ci.com/) +in case of self-hosted Bitbucket Server / Data Center. ```yaml stages: - - apply + - sync -Apply: - stage: apply - script: - - files=($( - git diff - $CI_COMMIT_BEFORE_SHA..$CI_COMMIT_SHA - --name-only - --diff-filter=ACMRT - | grep '.md$' - )); - if [[ "${#files[@]}" == "0" ]]; then exit 0; fi; - set -e; - for file in ${files[@]}; do - echo; - echo "> Uploading ${file}"; - docker run --rm -i -v=$(pwd):/docs - kovetskiy/mark:latest - mark - -u $DOCS_WIKI_USERNAME - -p $DOCS_WIKI_PASSWORD - -b $DOCS_WIKI_BASE_URL - -f ${file}; - done +Sync documentation: + stage: sync + only: + branches: + - main + image: kovetskiy/mark + commands: + - for file in $(find -type f -name '*.md'); do + echo "> Sync $file"; + mark -u $MARK_USER -p $MARK_PASS -b $MARK_URL -f $file || exit 1; + echo; + done ``` - and declare the following environment variables (secrets) -* `DOCS_WIKI_USERNAME` — Username for access to Confluence -* `DOCS_WIKI_PASSWORD` — Password for access to Confluence -* `DOCS_WIKI_BASE_URL` — Base URL of Confluence (cloud users should add /wiki at the end) +In this example, I'm using the `kovetskiy/mark` image for creating a job container where the +repository with documentation will be cloned to. The following command finds all `*.md` files and runs mark against them one by one: + +```bash +for file in $(find -type f -name '*.md'); do + echo "> Sync $file"; + mark -u $MARK_USER -p $MARK_PASS -b $MARK_URL -f $file || exit 1; + echo; +done +``` + +The following directive tells the CI to run this particular job only if the changes are pushed into the +`main` branch. It means you can safely push your changes into feature branches without being afraid +that they automatically shown in Confluence, then go through the reviewal process and automatically +deploy them when PR got merged. + +```yaml +only: + branches: + - main +```