200 lines
6 KiB
YAML
200 lines
6 KiB
YAML
#### Circle CI YAML file
|
|
version: 2.1
|
|
|
|
parameters:
|
|
prj_owner:
|
|
type: string
|
|
default: "syl20bnr"
|
|
prj_repo:
|
|
type: string
|
|
default: "spacemacs"
|
|
website_owner:
|
|
type: string
|
|
default: "syl20bnr"
|
|
website_repo:
|
|
type: string
|
|
default: "develop.spacemacs.org"
|
|
bot_login:
|
|
type: string
|
|
default: "SpacemacsBot"
|
|
# Will be filled by setup script:
|
|
is_branch_update:
|
|
type: string
|
|
default: "{{ IS_BRANCH_UDATE }}"
|
|
|
|
executors:
|
|
spacetools:
|
|
docker:
|
|
- image: jare/spacemacs-circleci:latest
|
|
working_directory: ~/.emacs.d
|
|
environment:
|
|
- BASH_ENV: ".circleci/shared"
|
|
|
|
jobs:
|
|
"Validate PR":
|
|
executor: spacetools
|
|
environment:
|
|
- UPD_BOT_LOGIN: << pipeline.parameters.bot_login >>
|
|
- PRJ_OWNER: << pipeline.parameters.prj_owner >>
|
|
- PRJ_REPO: << pipeline.parameters.prj_repo >>
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: Make sure that this PR targets develop branch
|
|
command: .circleci/PR_base
|
|
- run:
|
|
name: Make sure that this PR doesn't need rebase
|
|
command: .circleci/PR_rebased
|
|
"Validate Documentation":
|
|
executor: spacetools
|
|
environment:
|
|
- UPD_BOT_LOGIN: << pipeline.parameters.bot_login >>
|
|
- PRJ_OWNER: << pipeline.parameters.prj_owner >>
|
|
- PRJ_REPO: << pipeline.parameters.prj_repo >>
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: Select changed files
|
|
command: .circleci/select_pr_changed
|
|
- run:
|
|
name: validate changed documentation files
|
|
command: .circleci/org/validate
|
|
"Update built-in files":
|
|
executor: spacetools
|
|
environment:
|
|
- PUBLISH: "built_in_updates"
|
|
- PRJ_OWNER: << pipeline.parameters.prj_owner >>
|
|
- PRJ_REPO: << pipeline.parameters.prj_repo >>
|
|
- UPD_BOT_LOGIN: << pipeline.parameters.bot_login >>
|
|
- UPD_BOT_REPO: << pipeline.parameters.prj_repo >>
|
|
- PR_BRANCH: "develop"
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: Initialize bot account
|
|
command: .circleci/bot_init
|
|
- run:
|
|
name: Download latest versions
|
|
command: .circleci/built_in/upd_built_in
|
|
- run:
|
|
name: Create patch file with the updates
|
|
command: .circleci/make_patch
|
|
- run:
|
|
name: Apply the patch file
|
|
command: .circleci/apply_patch
|
|
- run:
|
|
name: Push changes to Spacemacs Bot account
|
|
command: .circleci/push
|
|
- run:
|
|
name: Open PR if built in files must be updated
|
|
command: .circleci/maybe_pr
|
|
"Update documentation files":
|
|
executor: spacetools
|
|
environment:
|
|
- PUBLISH: "documentation_updates"
|
|
- PRJ_OWNER: << pipeline.parameters.prj_owner >>
|
|
- PRJ_REPO: << pipeline.parameters.prj_repo >>
|
|
- UPD_BOT_LOGIN: << pipeline.parameters.bot_login >>
|
|
- UPD_BOT_REPO: << pipeline.parameters.prj_repo >>
|
|
- PR_BRANCH: "develop"
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: Initialize bot account
|
|
command: .circleci/bot_init
|
|
- run:
|
|
name: Export documentation files
|
|
command: .circleci/org/sdnize
|
|
- run:
|
|
name: Update documentation files
|
|
command: .circleci/org/update_docs
|
|
- run:
|
|
name: Create patch file with the updates
|
|
command: .circleci/make_patch
|
|
- run:
|
|
name: Apply the patch file
|
|
command: .circleci/apply_patch
|
|
- run:
|
|
name: Push changes to Spacemacs Bot account
|
|
command: .circleci/push
|
|
- run:
|
|
name: Open PR if documentation needs fixes
|
|
command: .circleci/maybe_pr
|
|
"Update website documentation":
|
|
executor: spacetools
|
|
environment:
|
|
- PUBLISH: "website_documentation_updates"
|
|
- PRJ_OWNER: << pipeline.parameters.website_owner >>
|
|
- PRJ_REPO: << pipeline.parameters.website_repo >>
|
|
- UPD_BOT_LOGIN: << pipeline.parameters.bot_login >>
|
|
- UPD_BOT_REPO: << pipeline.parameters.website_repo >>
|
|
- PR_BRANCH: "gh-pages"
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: Initialize bot account
|
|
command: .circleci/bot_init
|
|
- run:
|
|
name: Install dependencies
|
|
command: .circleci/web/install_deps
|
|
- run:
|
|
name: Export documentation files
|
|
command: .circleci/web/htmlize
|
|
- run:
|
|
name: Clone website repo
|
|
command: |
|
|
git clone -b "${PR_BRANCH}" \
|
|
https://github.com/${PRJ_OWNER}/${PRJ_REPO} \
|
|
"/tmp/${PUBLISH}_old"
|
|
- run:
|
|
name: Replace old web files
|
|
command: rsync -avh ~/.emacs.d/export/ "/tmp/${PUBLISH}_old"
|
|
- run:
|
|
name: Create patch file with the updates
|
|
command: cd "/tmp/${PUBLISH}_old" && ~/.emacs.d/.circleci/make_patch
|
|
- run:
|
|
name: Apply the patch file
|
|
command: .circleci/apply_patch
|
|
- run:
|
|
name: Push changes to Spacemacs Bot account
|
|
command: .circleci/push
|
|
- run:
|
|
name: Open PR if web documentation needs fixes
|
|
command: .circleci/maybe_pr
|
|
|
|
workflows:
|
|
version: 2.1
|
|
validate-pr-files:
|
|
when:
|
|
not:
|
|
equal: [<< pipeline.parameters.is_branch_update >>, "yes"]
|
|
jobs:
|
|
- "Validate PR"
|
|
- "Validate Documentation"
|
|
update-documentation:
|
|
when:
|
|
and:
|
|
- equal: [<< pipeline.parameters.is_branch_update >>, "yes"]
|
|
- equal: [<< pipeline.git.branch >>, "develop"]
|
|
jobs:
|
|
- "Update documentation files"
|
|
- "Update website documentation"
|
|
update-built-in-on-push:
|
|
when:
|
|
and:
|
|
- equal: [<< pipeline.parameters.is_branch_update >>, "yes"]
|
|
- equal: [<< pipeline.git.branch >>, "develop"]
|
|
jobs:
|
|
- "Update built-in files"
|
|
update-built-in-on-schedule:
|
|
when:
|
|
equal: [<< pipeline.parameters.is_branch_update >>, "yes"]
|
|
triggers:
|
|
- schedule:
|
|
cron: "0 0,6,12,18 * * *"
|
|
filters:
|
|
branches:
|
|
only:
|
|
- develop
|
|
jobs:
|
|
- "Update built-in files"
|