Add deploy -t/--travis to deploy via Travis - #649

Merged
yamgent merged 3 commits into
MarkBind:masterfrom
Xenonym:deploy-travis
Feb 8, 2019
Merged

Add deploy -t/--travis to deploy via Travis#649
yamgent merged 3 commits into
MarkBind:masterfrom
Xenonym:deploy-travis

Conversation

@Xenonym

@XenonymXenonym commented Jan 31, 2019

Copy link
Copy Markdown
Contributor

What is the purpose of this pull request? (put "X" next to an item, remove the rest)

• [X] Enhancement to an existing feature

Resolves#457.

What is the rationale for this request?
Currently, MarkBind supports deploying to GitHub Pages via markbind deploy. This is suitable for user documentation that only needs to be published with every new version. However, developer documentation is usually updated more frequently, and it will be useful to support a -t/--travis option to allow automatic deployment upon a push via Travis CI.

What changes did you make? (Give an overview)
I added a -t/--travis [tokenVar] option that can be run in Travis CI to automatically build and deploy a MarkBind site. -t/--travis [tokenVar] will:

  1. Check that MarkBind is currently being run in Travis CI.
  2. Retrieve the GitHub access token stored in GITHUB_TOKEN or a user specified tokenVar enviornment variable.
  3. Extract the GitHub repo slug if the user has specified a repo in site.json, and construct a HTTPS URL containing the token for pushing changes.
  4. Build and deploy the site.

Is there anything you'd like reviewers to focus on?

  1. Currently, I assume that we are only deploying to GitHub. This implementation may need to change for other Git providers, specifically, the regex for extracting the repo slug and the authentication method (not sure if other Git providers do https://[token]@provider/repo) .

Testing instructions:

  1. Create a MarkBind site on GitHub and add it to Travis CI. Sample instructions here.
  2. Add an appropriate .travis.yml to run markbind deploy -t. A sample .travis.yml:
    (Differs from the one in the documentation as it does not restrict to only building from master.)
language: node_jsnode_js:
- '8'install:
- npm i -g git://github.com/Xenonym/markbind.git#deploy-travisscript: markbind deploy --travis
  1. Push some changes to trigger the Travis CI build. The site should deploy to GitHub Pages automatically.

Comment threaddocs/userGuide/deployingTheSite.md Outdated

@nicholaschuayunzhinicholaschuayunzhi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR 😄

This implementation may need to change for other Git providers, specifically, the regex for extracting the repo slug and the authentication method

I feel its likely that we will have to write separate logic for different git providers if we want to automate this in a secure way.

EDIT: Could you help us to write some test for the travis deploy too? Thank you!

Comment threadsrc/Site.js
Comment threaddocs/userGuide/deployingTheSite.md Outdated
Comment threaddocs/userGuide/deployingTheSite.md Outdated
Comment threaddocs/userGuide/cliCommands.md Outdated
Comment threaddocs/userGuide/deployingTheSite.md Outdated
@nicholaschuayunzhi

Copy link
Copy Markdown
Contributor

Could you write some tests too? Thank you!

Comment threadsrc/Site.js Outdated
@Xenonym

Xenonym commented Feb 3, 2019

Copy link
Copy Markdown
ContributorAuthor

@nicholaschuayunzhi changed the behaviour of deploy --travis to only deploy, not build, as well as added some tests.

Also changed some of the deploy tests to have more consistent descriptions, please see if its okay!

@nicholaschuayunzhi

Copy link
Copy Markdown
Contributor

LGTM, thanks for your patience!

@yamgentyamgent left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if it would be more appropriate to name it as --ghtoken rather than --travis, because it can be used by other continuous integration as well? Or even be used manually by the user, for any peculiar reasons? EDIT: Nevermind, let's not complicate this feature.

@yamgentyamgent added this to the v1.17.4 milestone Feb 7, 2019
@yamgent
yamgent merged commit 83ae743 into MarkBind:masterFeb 8, 2019
@Xenonym
Xenonym deleted the deploy-travis branch February 8, 2019 08:24
@damithc

Copy link
Copy Markdown
Contributor

Managed to set it up for https://nus-cs3281.github.io/2019/
Good work @Xenonym

A side question: is it possible to set up Travis to use the latest minor version of MarkBind, e.g., v2.*? That way, provided we follow semantic versioning, Travis will use the latest version that will not have any breaking changes.

@Xenonym

Xenonym commented Feb 11, 2019

Copy link
Copy Markdown
ContributorAuthor

A side question: is it possible to set up Travis to use the latest minor version of MarkBind, e.g., v2.*? That way, provided we follow semantic versioning, Travis will use the latest version that will not have any breaking changes.

@damithc In a pinch, you can install markbind-cli@^1.18.0, which will install the latest version >=1.18.0 and < 2.0.0 based on semver syntax:

install:
- npm i -g markbind-cli@^1.18.0

Alternatively, if we anticipate this to be a common use case, we should tag the latest v1.x version on npm, eg. v1.x-latest. Then, a user can just do npm install -g markbind-cli@v1.x-latest.

@damithc

Copy link
Copy Markdown
Contributor

@damithc In a pinch, you can install markbind-cli@^1.18.0, which will install the latest version >=1.18.0 and < 2.0.0 based on semver syntax:

Nice. I think this is good enough for the time being.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Provide a way for github repos to auto-deploy docs using Travis

4 participants

@Xenonym@nicholaschuayunzhi@damithc@yamgent
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Add deploy -t/--travis to deploy via Travis - #649

Merged
yamgent merged 3 commits into
MarkBind:masterfrom
Xenonym:deploy-travis
Feb 8, 2019
Merged

Add deploy -t/--travis to deploy via Travis#649
yamgent merged 3 commits into
MarkBind:masterfrom
Xenonym:deploy-travis

Conversation

@Xenonym

@XenonymXenonym commented Jan 31, 2019

Copy link
Copy Markdown
Contributor

What is the purpose of this pull request? (put "X" next to an item, remove the rest)

• [X] Enhancement to an existing feature

Resolves#457.

What is the rationale for this request?
Currently, MarkBind supports deploying to GitHub Pages via markbind deploy. This is suitable for user documentation that only needs to be published with every new version. However, developer documentation is usually updated more frequently, and it will be useful to support a -t/--travis option to allow automatic deployment upon a push via Travis CI.

What changes did you make? (Give an overview)
I added a -t/--travis [tokenVar] option that can be run in Travis CI to automatically build and deploy a MarkBind site. -t/--travis [tokenVar] will:

  1. Check that MarkBind is currently being run in Travis CI.
  2. Retrieve the GitHub access token stored in GITHUB_TOKEN or a user specified tokenVar enviornment variable.
  3. Extract the GitHub repo slug if the user has specified a repo in site.json, and construct a HTTPS URL containing the token for pushing changes.
  4. Build and deploy the site.

Is there anything you'd like reviewers to focus on?

  1. Currently, I assume that we are only deploying to GitHub. This implementation may need to change for other Git providers, specifically, the regex for extracting the repo slug and the authentication method (not sure if other Git providers do https://[token]@provider/repo) .

Testing instructions:

  1. Create a MarkBind site on GitHub and add it to Travis CI. Sample instructions here.
  2. Add an appropriate .travis.yml to run markbind deploy -t. A sample .travis.yml:
    (Differs from the one in the documentation as it does not restrict to only building from master.)
language: node_jsnode_js:
- '8'install:
- npm i -g git://github.com/Xenonym/markbind.git#deploy-travisscript: markbind deploy --travis
  1. Push some changes to trigger the Travis CI build. The site should deploy to GitHub Pages automatically.

Comment threaddocs/userGuide/deployingTheSite.md Outdated

@nicholaschuayunzhinicholaschuayunzhi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR 😄

This implementation may need to change for other Git providers, specifically, the regex for extracting the repo slug and the authentication method

I feel its likely that we will have to write separate logic for different git providers if we want to automate this in a secure way.

EDIT: Could you help us to write some test for the travis deploy too? Thank you!

Comment threadsrc/Site.js
Comment threaddocs/userGuide/deployingTheSite.md Outdated
Comment threaddocs/userGuide/deployingTheSite.md Outdated
Comment threaddocs/userGuide/cliCommands.md Outdated
Comment threaddocs/userGuide/deployingTheSite.md Outdated
@nicholaschuayunzhi

Copy link
Copy Markdown
Contributor

Could you write some tests too? Thank you!

Comment threadsrc/Site.js Outdated
@Xenonym

Xenonym commented Feb 3, 2019

Copy link
Copy Markdown
ContributorAuthor

@nicholaschuayunzhi changed the behaviour of deploy --travis to only deploy, not build, as well as added some tests.

Also changed some of the deploy tests to have more consistent descriptions, please see if its okay!

@nicholaschuayunzhi

Copy link
Copy Markdown
Contributor

LGTM, thanks for your patience!

@yamgentyamgent left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if it would be more appropriate to name it as --ghtoken rather than --travis, because it can be used by other continuous integration as well? Or even be used manually by the user, for any peculiar reasons? EDIT: Nevermind, let's not complicate this feature.

@yamgentyamgent added this to the v1.17.4 milestone Feb 7, 2019
@yamgent
yamgent merged commit 83ae743 into MarkBind:masterFeb 8, 2019
@Xenonym
Xenonym deleted the deploy-travis branch February 8, 2019 08:24
@damithc

Copy link
Copy Markdown
Contributor

Managed to set it up for https://nus-cs3281.github.io/2019/
Good work @Xenonym

A side question: is it possible to set up Travis to use the latest minor version of MarkBind, e.g., v2.*? That way, provided we follow semantic versioning, Travis will use the latest version that will not have any breaking changes.

@Xenonym

Xenonym commented Feb 11, 2019

Copy link
Copy Markdown
ContributorAuthor

A side question: is it possible to set up Travis to use the latest minor version of MarkBind, e.g., v2.*? That way, provided we follow semantic versioning, Travis will use the latest version that will not have any breaking changes.

@damithc In a pinch, you can install markbind-cli@^1.18.0, which will install the latest version >=1.18.0 and < 2.0.0 based on semver syntax:

install:
- npm i -g markbind-cli@^1.18.0

Alternatively, if we anticipate this to be a common use case, we should tag the latest v1.x version on npm, eg. v1.x-latest. Then, a user can just do npm install -g markbind-cli@v1.x-latest.

@damithc

Copy link
Copy Markdown
Contributor

@damithc In a pinch, you can install markbind-cli@^1.18.0, which will install the latest version >=1.18.0 and < 2.0.0 based on semver syntax:

Nice. I think this is good enough for the time being.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Provide a way for github repos to auto-deploy docs using Travis

4 participants

@Xenonym@nicholaschuayunzhi@damithc@yamgent
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add deploy -t/--travis to deploy via Travis - #649

Merged
yamgent merged 3 commits into
MarkBind:masterfrom
Xenonym:deploy-travis
Feb 8, 2019
Merged

Add deploy -t/--travis to deploy via Travis#649
yamgent merged 3 commits into
MarkBind:masterfrom
Xenonym:deploy-travis

Conversation

@Xenonym

@XenonymXenonym commented Jan 31, 2019

Copy link
Copy Markdown
Contributor

What is the purpose of this pull request? (put "X" next to an item, remove the rest)

• [X] Enhancement to an existing feature

Resolves#457.

What is the rationale for this request?
Currently, MarkBind supports deploying to GitHub Pages via markbind deploy. This is suitable for user documentation that only needs to be published with every new version. However, developer documentation is usually updated more frequently, and it will be useful to support a -t/--travis option to allow automatic deployment upon a push via Travis CI.

What changes did you make? (Give an overview)
I added a -t/--travis [tokenVar] option that can be run in Travis CI to automatically build and deploy a MarkBind site. -t/--travis [tokenVar] will:

  1. Check that MarkBind is currently being run in Travis CI.
  2. Retrieve the GitHub access token stored in GITHUB_TOKEN or a user specified tokenVar enviornment variable.
  3. Extract the GitHub repo slug if the user has specified a repo in site.json, and construct a HTTPS URL containing the token for pushing changes.
  4. Build and deploy the site.

Is there anything you'd like reviewers to focus on?

  1. Currently, I assume that we are only deploying to GitHub. This implementation may need to change for other Git providers, specifically, the regex for extracting the repo slug and the authentication method (not sure if other Git providers do https://[token]@provider/repo) .

Testing instructions:

  1. Create a MarkBind site on GitHub and add it to Travis CI. Sample instructions here.
  2. Add an appropriate .travis.yml to run markbind deploy -t. A sample .travis.yml:
    (Differs from the one in the documentation as it does not restrict to only building from master.)
language: node_jsnode_js:
- '8'install:
- npm i -g git://github.com/Xenonym/markbind.git#deploy-travisscript: markbind deploy --travis
  1. Push some changes to trigger the Travis CI build. The site should deploy to GitHub Pages automatically.

Comment threaddocs/userGuide/deployingTheSite.md Outdated

@nicholaschuayunzhinicholaschuayunzhi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR 😄

This implementation may need to change for other Git providers, specifically, the regex for extracting the repo slug and the authentication method

I feel its likely that we will have to write separate logic for different git providers if we want to automate this in a secure way.

EDIT: Could you help us to write some test for the travis deploy too? Thank you!

Comment threadsrc/Site.js
Comment threaddocs/userGuide/deployingTheSite.md Outdated
Comment threaddocs/userGuide/deployingTheSite.md Outdated
Comment threaddocs/userGuide/cliCommands.md Outdated
Comment threaddocs/userGuide/deployingTheSite.md Outdated
@nicholaschuayunzhi

Copy link
Copy Markdown
Contributor

Could you write some tests too? Thank you!

Comment threadsrc/Site.js Outdated
@Xenonym

Xenonym commented Feb 3, 2019

Copy link
Copy Markdown
ContributorAuthor

@nicholaschuayunzhi changed the behaviour of deploy --travis to only deploy, not build, as well as added some tests.

Also changed some of the deploy tests to have more consistent descriptions, please see if its okay!

@nicholaschuayunzhi

Copy link
Copy Markdown
Contributor

LGTM, thanks for your patience!

@yamgentyamgent left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if it would be more appropriate to name it as --ghtoken rather than --travis, because it can be used by other continuous integration as well? Or even be used manually by the user, for any peculiar reasons? EDIT: Nevermind, let's not complicate this feature.

@yamgentyamgent added this to the v1.17.4 milestone Feb 7, 2019
@yamgent
yamgent merged commit 83ae743 into MarkBind:masterFeb 8, 2019
@Xenonym
Xenonym deleted the deploy-travis branch February 8, 2019 08:24
@damithc

Copy link
Copy Markdown
Contributor

Managed to set it up for https://nus-cs3281.github.io/2019/
Good work @Xenonym

A side question: is it possible to set up Travis to use the latest minor version of MarkBind, e.g., v2.*? That way, provided we follow semantic versioning, Travis will use the latest version that will not have any breaking changes.

@Xenonym

Xenonym commented Feb 11, 2019

Copy link
Copy Markdown
ContributorAuthor

A side question: is it possible to set up Travis to use the latest minor version of MarkBind, e.g., v2.*? That way, provided we follow semantic versioning, Travis will use the latest version that will not have any breaking changes.

@damithc In a pinch, you can install markbind-cli@^1.18.0, which will install the latest version >=1.18.0 and < 2.0.0 based on semver syntax:

install:
- npm i -g markbind-cli@^1.18.0

Alternatively, if we anticipate this to be a common use case, we should tag the latest v1.x version on npm, eg. v1.x-latest. Then, a user can just do npm install -g markbind-cli@v1.x-latest.

@damithc

Copy link
Copy Markdown
Contributor

@damithc In a pinch, you can install markbind-cli@^1.18.0, which will install the latest version >=1.18.0 and < 2.0.0 based on semver syntax:

Nice. I think this is good enough for the time being.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Provide a way for github repos to auto-deploy docs using Travis

4 participants

@Xenonym@nicholaschuayunzhi@damithc@yamgent
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add deploy -t/--travis to deploy via Travis - #649

Merged
yamgent merged 3 commits into
MarkBind:masterfrom
Xenonym:deploy-travis
Feb 8, 2019
Merged

Add deploy -t/--travis to deploy via Travis#649
yamgent merged 3 commits into
MarkBind:masterfrom
Xenonym:deploy-travis

Conversation

@Xenonym

@XenonymXenonym commented Jan 31, 2019

Copy link
Copy Markdown
Contributor

What is the purpose of this pull request? (put "X" next to an item, remove the rest)

• [X] Enhancement to an existing feature

Resolves#457.

What is the rationale for this request?
Currently, MarkBind supports deploying to GitHub Pages via markbind deploy. This is suitable for user documentation that only needs to be published with every new version. However, developer documentation is usually updated more frequently, and it will be useful to support a -t/--travis option to allow automatic deployment upon a push via Travis CI.

What changes did you make? (Give an overview)
I added a -t/--travis [tokenVar] option that can be run in Travis CI to automatically build and deploy a MarkBind site. -t/--travis [tokenVar] will:

  1. Check that MarkBind is currently being run in Travis CI.
  2. Retrieve the GitHub access token stored in GITHUB_TOKEN or a user specified tokenVar enviornment variable.
  3. Extract the GitHub repo slug if the user has specified a repo in site.json, and construct a HTTPS URL containing the token for pushing changes.
  4. Build and deploy the site.

Is there anything you'd like reviewers to focus on?

  1. Currently, I assume that we are only deploying to GitHub. This implementation may need to change for other Git providers, specifically, the regex for extracting the repo slug and the authentication method (not sure if other Git providers do https://[token]@provider/repo) .

Testing instructions:

  1. Create a MarkBind site on GitHub and add it to Travis CI. Sample instructions here.
  2. Add an appropriate .travis.yml to run markbind deploy -t. A sample .travis.yml:
    (Differs from the one in the documentation as it does not restrict to only building from master.)
language: node_jsnode_js:
- '8'install:
- npm i -g git://github.com/Xenonym/markbind.git#deploy-travisscript: markbind deploy --travis
  1. Push some changes to trigger the Travis CI build. The site should deploy to GitHub Pages automatically.

Comment threaddocs/userGuide/deployingTheSite.md Outdated

@nicholaschuayunzhinicholaschuayunzhi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR 😄

This implementation may need to change for other Git providers, specifically, the regex for extracting the repo slug and the authentication method

I feel its likely that we will have to write separate logic for different git providers if we want to automate this in a secure way.

EDIT: Could you help us to write some test for the travis deploy too? Thank you!

Comment threadsrc/Site.js
Comment threaddocs/userGuide/deployingTheSite.md Outdated
Comment threaddocs/userGuide/deployingTheSite.md Outdated
Comment threaddocs/userGuide/cliCommands.md Outdated
Comment threaddocs/userGuide/deployingTheSite.md Outdated
@nicholaschuayunzhi

Copy link
Copy Markdown
Contributor

Could you write some tests too? Thank you!

Comment threadsrc/Site.js Outdated
@Xenonym

Xenonym commented Feb 3, 2019

Copy link
Copy Markdown
ContributorAuthor

@nicholaschuayunzhi changed the behaviour of deploy --travis to only deploy, not build, as well as added some tests.

Also changed some of the deploy tests to have more consistent descriptions, please see if its okay!

@nicholaschuayunzhi

Copy link
Copy Markdown
Contributor

LGTM, thanks for your patience!

@yamgentyamgent left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if it would be more appropriate to name it as --ghtoken rather than --travis, because it can be used by other continuous integration as well? Or even be used manually by the user, for any peculiar reasons? EDIT: Nevermind, let's not complicate this feature.

@yamgentyamgent added this to the v1.17.4 milestone Feb 7, 2019
@yamgent
yamgent merged commit 83ae743 into MarkBind:masterFeb 8, 2019
@Xenonym
Xenonym deleted the deploy-travis branch February 8, 2019 08:24
@damithc

Copy link
Copy Markdown
Contributor

Managed to set it up for https://nus-cs3281.github.io/2019/
Good work @Xenonym

A side question: is it possible to set up Travis to use the latest minor version of MarkBind, e.g., v2.*? That way, provided we follow semantic versioning, Travis will use the latest version that will not have any breaking changes.

@Xenonym

Xenonym commented Feb 11, 2019

Copy link
Copy Markdown
ContributorAuthor

A side question: is it possible to set up Travis to use the latest minor version of MarkBind, e.g., v2.*? That way, provided we follow semantic versioning, Travis will use the latest version that will not have any breaking changes.

@damithc In a pinch, you can install markbind-cli@^1.18.0, which will install the latest version >=1.18.0 and < 2.0.0 based on semver syntax:

install:
- npm i -g markbind-cli@^1.18.0

Alternatively, if we anticipate this to be a common use case, we should tag the latest v1.x version on npm, eg. v1.x-latest. Then, a user can just do npm install -g markbind-cli@v1.x-latest.

@damithc

Copy link
Copy Markdown
Contributor

@damithc In a pinch, you can install markbind-cli@^1.18.0, which will install the latest version >=1.18.0 and < 2.0.0 based on semver syntax:

Nice. I think this is good enough for the time being.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Provide a way for github repos to auto-deploy docs using Travis

4 participants

@Xenonym@nicholaschuayunzhi@damithc@yamgent
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Add deploy -t/--travis to deploy via Travis - #649

Merged
yamgent merged 3 commits into
MarkBind:masterfrom
Xenonym:deploy-travis
Feb 8, 2019
Merged

Add deploy -t/--travis to deploy via Travis#649
yamgent merged 3 commits into
MarkBind:masterfrom
Xenonym:deploy-travis

Conversation

@Xenonym

@XenonymXenonym commented Jan 31, 2019

Copy link
Copy Markdown
Contributor

What is the purpose of this pull request? (put "X" next to an item, remove the rest)

• [X] Enhancement to an existing feature

Resolves#457.

What is the rationale for this request?
Currently, MarkBind supports deploying to GitHub Pages via markbind deploy. This is suitable for user documentation that only needs to be published with every new version. However, developer documentation is usually updated more frequently, and it will be useful to support a -t/--travis option to allow automatic deployment upon a push via Travis CI.

What changes did you make? (Give an overview)
I added a -t/--travis [tokenVar] option that can be run in Travis CI to automatically build and deploy a MarkBind site. -t/--travis [tokenVar] will:

  1. Check that MarkBind is currently being run in Travis CI.
  2. Retrieve the GitHub access token stored in GITHUB_TOKEN or a user specified tokenVar enviornment variable.
  3. Extract the GitHub repo slug if the user has specified a repo in site.json, and construct a HTTPS URL containing the token for pushing changes.
  4. Build and deploy the site.

Is there anything you'd like reviewers to focus on?

  1. Currently, I assume that we are only deploying to GitHub. This implementation may need to change for other Git providers, specifically, the regex for extracting the repo slug and the authentication method (not sure if other Git providers do https://[token]@provider/repo) .

Testing instructions:

  1. Create a MarkBind site on GitHub and add it to Travis CI. Sample instructions here.
  2. Add an appropriate .travis.yml to run markbind deploy -t. A sample .travis.yml:
    (Differs from the one in the documentation as it does not restrict to only building from master.)
language: node_jsnode_js:
- '8'install:
- npm i -g git://github.com/Xenonym/markbind.git#deploy-travisscript: markbind deploy --travis
  1. Push some changes to trigger the Travis CI build. The site should deploy to GitHub Pages automatically.

Comment threaddocs/userGuide/deployingTheSite.md Outdated

@nicholaschuayunzhinicholaschuayunzhi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR 😄

This implementation may need to change for other Git providers, specifically, the regex for extracting the repo slug and the authentication method

I feel its likely that we will have to write separate logic for different git providers if we want to automate this in a secure way.

EDIT: Could you help us to write some test for the travis deploy too? Thank you!

Comment threadsrc/Site.js
Comment threaddocs/userGuide/deployingTheSite.md Outdated
Comment threaddocs/userGuide/deployingTheSite.md Outdated
Comment threaddocs/userGuide/cliCommands.md Outdated
Comment threaddocs/userGuide/deployingTheSite.md Outdated
@nicholaschuayunzhi

Copy link
Copy Markdown
Contributor

Could you write some tests too? Thank you!

Comment threadsrc/Site.js Outdated
@Xenonym

Xenonym commented Feb 3, 2019

Copy link
Copy Markdown
ContributorAuthor

@nicholaschuayunzhi changed the behaviour of deploy --travis to only deploy, not build, as well as added some tests.

Also changed some of the deploy tests to have more consistent descriptions, please see if its okay!

@nicholaschuayunzhi

Copy link
Copy Markdown
Contributor

LGTM, thanks for your patience!

@yamgentyamgent left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if it would be more appropriate to name it as --ghtoken rather than --travis, because it can be used by other continuous integration as well? Or even be used manually by the user, for any peculiar reasons? EDIT: Nevermind, let's not complicate this feature.

@yamgentyamgent added this to the v1.17.4 milestone Feb 7, 2019
@yamgent
yamgent merged commit 83ae743 into MarkBind:masterFeb 8, 2019
@Xenonym
Xenonym deleted the deploy-travis branch February 8, 2019 08:24
@damithc

Copy link
Copy Markdown
Contributor

Managed to set it up for https://nus-cs3281.github.io/2019/
Good work @Xenonym

A side question: is it possible to set up Travis to use the latest minor version of MarkBind, e.g., v2.*? That way, provided we follow semantic versioning, Travis will use the latest version that will not have any breaking changes.

@Xenonym

Xenonym commented Feb 11, 2019

Copy link
Copy Markdown
ContributorAuthor

A side question: is it possible to set up Travis to use the latest minor version of MarkBind, e.g., v2.*? That way, provided we follow semantic versioning, Travis will use the latest version that will not have any breaking changes.

@damithc In a pinch, you can install markbind-cli@^1.18.0, which will install the latest version >=1.18.0 and < 2.0.0 based on semver syntax:

install:
- npm i -g markbind-cli@^1.18.0

Alternatively, if we anticipate this to be a common use case, we should tag the latest v1.x version on npm, eg. v1.x-latest. Then, a user can just do npm install -g markbind-cli@v1.x-latest.

@damithc

Copy link
Copy Markdown
Contributor

@damithc In a pinch, you can install markbind-cli@^1.18.0, which will install the latest version >=1.18.0 and < 2.0.0 based on semver syntax:

Nice. I think this is good enough for the time being.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Provide a way for github repos to auto-deploy docs using Travis

4 participants

@Xenonym@nicholaschuayunzhi@damithc@yamgent
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add deploy -t/--travis to deploy via Travis - #649

Merged
yamgent merged 3 commits into
MarkBind:masterfrom
Xenonym:deploy-travis
Feb 8, 2019
Merged

Add deploy -t/--travis to deploy via Travis#649
yamgent merged 3 commits into
MarkBind:masterfrom
Xenonym:deploy-travis

Conversation

@Xenonym

@XenonymXenonym commented Jan 31, 2019

Copy link
Copy Markdown
Contributor

What is the purpose of this pull request? (put "X" next to an item, remove the rest)

• [X] Enhancement to an existing feature

Resolves#457.

What is the rationale for this request?
Currently, MarkBind supports deploying to GitHub Pages via markbind deploy. This is suitable for user documentation that only needs to be published with every new version. However, developer documentation is usually updated more frequently, and it will be useful to support a -t/--travis option to allow automatic deployment upon a push via Travis CI.

What changes did you make? (Give an overview)
I added a -t/--travis [tokenVar] option that can be run in Travis CI to automatically build and deploy a MarkBind site. -t/--travis [tokenVar] will:

  1. Check that MarkBind is currently being run in Travis CI.
  2. Retrieve the GitHub access token stored in GITHUB_TOKEN or a user specified tokenVar enviornment variable.
  3. Extract the GitHub repo slug if the user has specified a repo in site.json, and construct a HTTPS URL containing the token for pushing changes.
  4. Build and deploy the site.

Is there anything you'd like reviewers to focus on?

  1. Currently, I assume that we are only deploying to GitHub. This implementation may need to change for other Git providers, specifically, the regex for extracting the repo slug and the authentication method (not sure if other Git providers do https://[token]@provider/repo) .

Testing instructions:

  1. Create a MarkBind site on GitHub and add it to Travis CI. Sample instructions here.
  2. Add an appropriate .travis.yml to run markbind deploy -t. A sample .travis.yml:
    (Differs from the one in the documentation as it does not restrict to only building from master.)
language: node_jsnode_js:
- '8'install:
- npm i -g git://github.com/Xenonym/markbind.git#deploy-travisscript: markbind deploy --travis
  1. Push some changes to trigger the Travis CI build. The site should deploy to GitHub Pages automatically.

Comment threaddocs/userGuide/deployingTheSite.md Outdated

@nicholaschuayunzhinicholaschuayunzhi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR 😄

This implementation may need to change for other Git providers, specifically, the regex for extracting the repo slug and the authentication method

I feel its likely that we will have to write separate logic for different git providers if we want to automate this in a secure way.

EDIT: Could you help us to write some test for the travis deploy too? Thank you!

Comment threadsrc/Site.js
Comment threaddocs/userGuide/deployingTheSite.md Outdated
Comment threaddocs/userGuide/deployingTheSite.md Outdated
Comment threaddocs/userGuide/cliCommands.md Outdated
Comment threaddocs/userGuide/deployingTheSite.md Outdated
@nicholaschuayunzhi

Copy link
Copy Markdown
Contributor

Could you write some tests too? Thank you!

Comment threadsrc/Site.js Outdated
@Xenonym

Xenonym commented Feb 3, 2019

Copy link
Copy Markdown
ContributorAuthor

@nicholaschuayunzhi changed the behaviour of deploy --travis to only deploy, not build, as well as added some tests.

Also changed some of the deploy tests to have more consistent descriptions, please see if its okay!

@nicholaschuayunzhi

Copy link
Copy Markdown
Contributor

LGTM, thanks for your patience!

@yamgentyamgent left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if it would be more appropriate to name it as --ghtoken rather than --travis, because it can be used by other continuous integration as well? Or even be used manually by the user, for any peculiar reasons? EDIT: Nevermind, let's not complicate this feature.

@yamgentyamgent added this to the v1.17.4 milestone Feb 7, 2019
@yamgent
yamgent merged commit 83ae743 into MarkBind:masterFeb 8, 2019
@Xenonym
Xenonym deleted the deploy-travis branch February 8, 2019 08:24
@damithc

Copy link
Copy Markdown
Contributor

Managed to set it up for https://nus-cs3281.github.io/2019/
Good work @Xenonym

A side question: is it possible to set up Travis to use the latest minor version of MarkBind, e.g., v2.*? That way, provided we follow semantic versioning, Travis will use the latest version that will not have any breaking changes.

@Xenonym

Xenonym commented Feb 11, 2019

Copy link
Copy Markdown
ContributorAuthor

A side question: is it possible to set up Travis to use the latest minor version of MarkBind, e.g., v2.*? That way, provided we follow semantic versioning, Travis will use the latest version that will not have any breaking changes.

@damithc In a pinch, you can install markbind-cli@^1.18.0, which will install the latest version >=1.18.0 and < 2.0.0 based on semver syntax:

install:
- npm i -g markbind-cli@^1.18.0

Alternatively, if we anticipate this to be a common use case, we should tag the latest v1.x version on npm, eg. v1.x-latest. Then, a user can just do npm install -g markbind-cli@v1.x-latest.

@damithc

Copy link
Copy Markdown
Contributor

@damithc In a pinch, you can install markbind-cli@^1.18.0, which will install the latest version >=1.18.0 and < 2.0.0 based on semver syntax:

Nice. I think this is good enough for the time being.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Provide a way for github repos to auto-deploy docs using Travis

4 participants

@Xenonym@nicholaschuayunzhi@damithc@yamgent
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add deploy -t/--travis to deploy via Travis - #649

Merged
yamgent merged 3 commits into
MarkBind:masterfrom
Xenonym:deploy-travis
Feb 8, 2019
Merged

Add deploy -t/--travis to deploy via Travis#649
yamgent merged 3 commits into
MarkBind:masterfrom
Xenonym:deploy-travis

Conversation

@Xenonym

@XenonymXenonym commented Jan 31, 2019

Copy link
Copy Markdown
Contributor

What is the purpose of this pull request? (put "X" next to an item, remove the rest)

• [X] Enhancement to an existing feature

Resolves#457.

What is the rationale for this request?
Currently, MarkBind supports deploying to GitHub Pages via markbind deploy. This is suitable for user documentation that only needs to be published with every new version. However, developer documentation is usually updated more frequently, and it will be useful to support a -t/--travis option to allow automatic deployment upon a push via Travis CI.

What changes did you make? (Give an overview)
I added a -t/--travis [tokenVar] option that can be run in Travis CI to automatically build and deploy a MarkBind site. -t/--travis [tokenVar] will:

  1. Check that MarkBind is currently being run in Travis CI.
  2. Retrieve the GitHub access token stored in GITHUB_TOKEN or a user specified tokenVar enviornment variable.
  3. Extract the GitHub repo slug if the user has specified a repo in site.json, and construct a HTTPS URL containing the token for pushing changes.
  4. Build and deploy the site.

Is there anything you'd like reviewers to focus on?

  1. Currently, I assume that we are only deploying to GitHub. This implementation may need to change for other Git providers, specifically, the regex for extracting the repo slug and the authentication method (not sure if other Git providers do https://[token]@provider/repo) .

Testing instructions:

  1. Create a MarkBind site on GitHub and add it to Travis CI. Sample instructions here.
  2. Add an appropriate .travis.yml to run markbind deploy -t. A sample .travis.yml:
    (Differs from the one in the documentation as it does not restrict to only building from master.)
language: node_jsnode_js:
- '8'install:
- npm i -g git://github.com/Xenonym/markbind.git#deploy-travisscript: markbind deploy --travis
  1. Push some changes to trigger the Travis CI build. The site should deploy to GitHub Pages automatically.

Comment threaddocs/userGuide/deployingTheSite.md Outdated

@nicholaschuayunzhinicholaschuayunzhi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR 😄

This implementation may need to change for other Git providers, specifically, the regex for extracting the repo slug and the authentication method

I feel its likely that we will have to write separate logic for different git providers if we want to automate this in a secure way.

EDIT: Could you help us to write some test for the travis deploy too? Thank you!

Comment threadsrc/Site.js
Comment threaddocs/userGuide/deployingTheSite.md Outdated
Comment threaddocs/userGuide/deployingTheSite.md Outdated
Comment threaddocs/userGuide/cliCommands.md Outdated
Comment threaddocs/userGuide/deployingTheSite.md Outdated
@nicholaschuayunzhi

Copy link
Copy Markdown
Contributor

Could you write some tests too? Thank you!

Comment threadsrc/Site.js Outdated
@Xenonym

Xenonym commented Feb 3, 2019

Copy link
Copy Markdown
ContributorAuthor

@nicholaschuayunzhi changed the behaviour of deploy --travis to only deploy, not build, as well as added some tests.

Also changed some of the deploy tests to have more consistent descriptions, please see if its okay!

@nicholaschuayunzhi

Copy link
Copy Markdown
Contributor

LGTM, thanks for your patience!

@yamgentyamgent left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if it would be more appropriate to name it as --ghtoken rather than --travis, because it can be used by other continuous integration as well? Or even be used manually by the user, for any peculiar reasons? EDIT: Nevermind, let's not complicate this feature.

@yamgentyamgent added this to the v1.17.4 milestone Feb 7, 2019
@yamgent
yamgent merged commit 83ae743 into MarkBind:masterFeb 8, 2019
@Xenonym
Xenonym deleted the deploy-travis branch February 8, 2019 08:24
@damithc

Copy link
Copy Markdown
Contributor

Managed to set it up for https://nus-cs3281.github.io/2019/
Good work @Xenonym

A side question: is it possible to set up Travis to use the latest minor version of MarkBind, e.g., v2.*? That way, provided we follow semantic versioning, Travis will use the latest version that will not have any breaking changes.

@Xenonym

Xenonym commented Feb 11, 2019

Copy link
Copy Markdown
ContributorAuthor

A side question: is it possible to set up Travis to use the latest minor version of MarkBind, e.g., v2.*? That way, provided we follow semantic versioning, Travis will use the latest version that will not have any breaking changes.

@damithc In a pinch, you can install markbind-cli@^1.18.0, which will install the latest version >=1.18.0 and < 2.0.0 based on semver syntax:

install:
- npm i -g markbind-cli@^1.18.0

Alternatively, if we anticipate this to be a common use case, we should tag the latest v1.x version on npm, eg. v1.x-latest. Then, a user can just do npm install -g markbind-cli@v1.x-latest.

@damithc

Copy link
Copy Markdown
Contributor

@damithc In a pinch, you can install markbind-cli@^1.18.0, which will install the latest version >=1.18.0 and < 2.0.0 based on semver syntax:

Nice. I think this is good enough for the time being.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Provide a way for github repos to auto-deploy docs using Travis

4 participants

@Xenonym@nicholaschuayunzhi@damithc@yamgent
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Add deploy -t/--travis to deploy via Travis - #649

Merged
yamgent merged 3 commits into
MarkBind:masterfrom
Xenonym:deploy-travis
Feb 8, 2019
Merged

Add deploy -t/--travis to deploy via Travis#649
yamgent merged 3 commits into
MarkBind:masterfrom
Xenonym:deploy-travis

Conversation

@Xenonym

@XenonymXenonym commented Jan 31, 2019

Copy link
Copy Markdown
Contributor

What is the purpose of this pull request? (put "X" next to an item, remove the rest)

• [X] Enhancement to an existing feature

Resolves#457.

What is the rationale for this request?
Currently, MarkBind supports deploying to GitHub Pages via markbind deploy. This is suitable for user documentation that only needs to be published with every new version. However, developer documentation is usually updated more frequently, and it will be useful to support a -t/--travis option to allow automatic deployment upon a push via Travis CI.

What changes did you make? (Give an overview)
I added a -t/--travis [tokenVar] option that can be run in Travis CI to automatically build and deploy a MarkBind site. -t/--travis [tokenVar] will:

  1. Check that MarkBind is currently being run in Travis CI.
  2. Retrieve the GitHub access token stored in GITHUB_TOKEN or a user specified tokenVar enviornment variable.
  3. Extract the GitHub repo slug if the user has specified a repo in site.json, and construct a HTTPS URL containing the token for pushing changes.
  4. Build and deploy the site.

Is there anything you'd like reviewers to focus on?

  1. Currently, I assume that we are only deploying to GitHub. This implementation may need to change for other Git providers, specifically, the regex for extracting the repo slug and the authentication method (not sure if other Git providers do https://[token]@provider/repo) .

Testing instructions:

  1. Create a MarkBind site on GitHub and add it to Travis CI. Sample instructions here.
  2. Add an appropriate .travis.yml to run markbind deploy -t. A sample .travis.yml:
    (Differs from the one in the documentation as it does not restrict to only building from master.)
language: node_jsnode_js:
- '8'install:
- npm i -g git://github.com/Xenonym/markbind.git#deploy-travisscript: markbind deploy --travis
  1. Push some changes to trigger the Travis CI build. The site should deploy to GitHub Pages automatically.

Comment threaddocs/userGuide/deployingTheSite.md Outdated

@nicholaschuayunzhinicholaschuayunzhi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR 😄

This implementation may need to change for other Git providers, specifically, the regex for extracting the repo slug and the authentication method

I feel its likely that we will have to write separate logic for different git providers if we want to automate this in a secure way.

EDIT: Could you help us to write some test for the travis deploy too? Thank you!

Comment threadsrc/Site.js
Comment threaddocs/userGuide/deployingTheSite.md Outdated
Comment threaddocs/userGuide/deployingTheSite.md Outdated
Comment threaddocs/userGuide/cliCommands.md Outdated
Comment threaddocs/userGuide/deployingTheSite.md Outdated
@nicholaschuayunzhi

Copy link
Copy Markdown
Contributor

Could you write some tests too? Thank you!

Comment threadsrc/Site.js Outdated
@Xenonym

Xenonym commented Feb 3, 2019

Copy link
Copy Markdown
ContributorAuthor

@nicholaschuayunzhi changed the behaviour of deploy --travis to only deploy, not build, as well as added some tests.

Also changed some of the deploy tests to have more consistent descriptions, please see if its okay!

@nicholaschuayunzhi

Copy link
Copy Markdown
Contributor

LGTM, thanks for your patience!

@yamgentyamgent left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if it would be more appropriate to name it as --ghtoken rather than --travis, because it can be used by other continuous integration as well? Or even be used manually by the user, for any peculiar reasons? EDIT: Nevermind, let's not complicate this feature.

@yamgentyamgent added this to the v1.17.4 milestone Feb 7, 2019
@yamgent
yamgent merged commit 83ae743 into MarkBind:masterFeb 8, 2019
@Xenonym
Xenonym deleted the deploy-travis branch February 8, 2019 08:24
@damithc

Copy link
Copy Markdown
Contributor

Managed to set it up for https://nus-cs3281.github.io/2019/
Good work @Xenonym

A side question: is it possible to set up Travis to use the latest minor version of MarkBind, e.g., v2.*? That way, provided we follow semantic versioning, Travis will use the latest version that will not have any breaking changes.

@Xenonym

Xenonym commented Feb 11, 2019

Copy link
Copy Markdown
ContributorAuthor

A side question: is it possible to set up Travis to use the latest minor version of MarkBind, e.g., v2.*? That way, provided we follow semantic versioning, Travis will use the latest version that will not have any breaking changes.

@damithc In a pinch, you can install markbind-cli@^1.18.0, which will install the latest version >=1.18.0 and < 2.0.0 based on semver syntax:

install:
- npm i -g markbind-cli@^1.18.0

Alternatively, if we anticipate this to be a common use case, we should tag the latest v1.x version on npm, eg. v1.x-latest. Then, a user can just do npm install -g markbind-cli@v1.x-latest.

@damithc

Copy link
Copy Markdown
Contributor

@damithc In a pinch, you can install markbind-cli@^1.18.0, which will install the latest version >=1.18.0 and < 2.0.0 based on semver syntax:

Nice. I think this is good enough for the time being.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Provide a way for github repos to auto-deploy docs using Travis

4 participants

@Xenonym@nicholaschuayunzhi@damithc@yamgent