Deploy user docs via Travis on release - #701

Merged
yamgent merged 1 commit into
MarkBind:masterfrom
Xenonym:devops/deploy-docs-travis
Feb 26, 2019
Merged

Deploy user docs via Travis on release#701
yamgent merged 1 commit into
MarkBind:masterfrom
Xenonym:devops/deploy-docs-travis

Conversation

@Xenonym

Copy link
Copy Markdown
Contributor

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

• [X] Other, please explain: DevOps enhancement

Closes#688.

What is the rationale for this request?
Since we have implemented markbind deploy --travis, we can now deploy our own user documentation automatically on release with Travis.

What changes did you make? (Give an overview)
I added a deploy phase to .travis.yml that will build and deploy the user docs on release (a commit with a tag matching the pattern vx.x.x).

Testing instructions:

  1. Pull this PR to your own fork, and test with Travis CI enabled.
    • Normal commits should test but not deploy.
    • Tagged commits matching vx.x.x should trigger the deploy stage. It will fail since GITHUB_TOKEN should not be set, but this is expected.

@damithc

Copy link
Copy Markdown
Contributor

We can make this branch based instead of tag based. e.g., have another branch named release. Would that be possible/cleaner?

@yamgent

Copy link
Copy Markdown
Member

We can make this branch based instead of tag based. e.g., have another branch named release. Would that be possible/cleaner?

That would be possible too, we can do that. Although the branch would probably only be used specifically for deploying documentation (since it doesn't fit our current release flow, as version tags are superior to a dedicated release branch).

@damithc

Copy link
Copy Markdown
Contributor

That would be possible too, we can do that. Although the branch would probably only be used specifically for deploying documentation (since it doesn't fit our current release flow, as version tags are superior to a dedicated release branch).

I see. Let's stick with the tags then.

@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.

Have tested it and works. We would need to set up a GITHUB_TOKEN on travis for the repository and make sure only releases should have tags.

EDIT: Additionally, developers with travis set up on their fork, with their GITHUB_TOKEN set, should not push any tags that match the vx.x.x format. Unless we have push rights removed from markbind.github.io.git

@yamgentyamgent added this to the v1.19.2 milestone Feb 25, 2019
@Xenonym

Copy link
Copy Markdown
ContributorAuthor

Have tested it and works. We would need to set up a GITHUB_TOKEN on travis for the repository and make sure only releases should have tags.

EDIT: Additionally, developers with travis set up on their fork, with their GITHUB_TOKEN set, should not push any tags that match the vx.x.x format. Unless we have push rights removed from markbind.github.io.git

As a precautionary measure, we should configure MarkBind/markbind.github.io.git so that only the Team Lead (@yamgent) has push permissions to it.

@yamgent

Copy link
Copy Markdown
Member

As a precautionary measure, we should configure MarkBind/markbind.github.io.git so that only the Team Lead (@yamgent) has push permissions to it.

The actual account behind the pushing is actually @traviscibot though (see aefca73). Restricting the permission to just the bot isn't sufficient because anyone else could still invoke Travis for pushing.

@yamgentyamgent removed this from the v1.19.2 milestone Feb 25, 2019
@nicholaschuayunzhi

Copy link
Copy Markdown
Contributor

The actual account behind the pushing is actually @traviscibot though (see aefca73). Restricting the permission to just the bot isn't sufficient because anyone else could still invoke Travis for pushing.

I believe the concern is specifically:

  1. dev have their own fork of the repo
  2. dev has set up travis for his fork
  3. dev's fork's travis has GITHUB_TOKEN set
  4. markbind.github.io.git allows pushes by any dev

Then a push to any branch on their fork with a tag matching vx.x.x would trigger a site rebuild on the live markbind site.

@yamgent

Copy link
Copy Markdown
Member

I believe the concern is specifically:

  1. dev have their own fork of the repo
  2. dev has set up travis for his fork
  3. dev's fork's travis has GITHUB_TOKEN set
  4. markbind.github.io.git allows pushes by any dev

Then a push to any branch on their fork with a tag matching vx.x.x would trigger a site rebuild on the live markbind site.

Got it, I got confused with how the GitHub tokens work, my apologies.

I don't think anyone on the @MarkBind/cs3282-developers team has push rights to markbind.github.io.git in the first place, so I think it should be fine.

@yamgentyamgent added this to the v1.19.2 milestone Feb 25, 2019
@yamgent
yamgent merged commit 8c3ea29 into MarkBind:masterFeb 26, 2019
@Xenonym
Xenonym deleted the devops/deploy-docs-travis branch February 27, 2019 07:49
@yamgent

yamgent commented Mar 4, 2019

Copy link
Copy Markdown
Member

Works nicely, deployment of MarkBind documentation is now automated. 👍

But on a side note:

EDIT: Additionally, developers with travis set up on their fork, with their GITHUB_TOKEN set, should not push any tags that match the vx.x.x format. Unless we have push rights removed from markbind.github.io.git

There is actually a very simple solution to this, by using the repo options:

deploy:
on:
repo: MarkBind/markbind

While I have push rights to markbind.github.io, I still don't want my fork to do any deployment (it attempted to do that, but error-ed out because I didn't set GITHUB_TOKEN for my fork). So using the repo option will solve the problem of avoiding deployments on forks.

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.

Automate deployment of MarkBind documentation via Travis

4 participants

@Xenonym@damithc@yamgent@nicholaschuayunzhi
, '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

Deploy user docs via Travis on release - #701

Merged
yamgent merged 1 commit into
MarkBind:masterfrom
Xenonym:devops/deploy-docs-travis
Feb 26, 2019
Merged

Deploy user docs via Travis on release#701
yamgent merged 1 commit into
MarkBind:masterfrom
Xenonym:devops/deploy-docs-travis

Conversation

@Xenonym

Copy link
Copy Markdown
Contributor

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

• [X] Other, please explain: DevOps enhancement

Closes#688.

What is the rationale for this request?
Since we have implemented markbind deploy --travis, we can now deploy our own user documentation automatically on release with Travis.

What changes did you make? (Give an overview)
I added a deploy phase to .travis.yml that will build and deploy the user docs on release (a commit with a tag matching the pattern vx.x.x).

Testing instructions:

  1. Pull this PR to your own fork, and test with Travis CI enabled.
    • Normal commits should test but not deploy.
    • Tagged commits matching vx.x.x should trigger the deploy stage. It will fail since GITHUB_TOKEN should not be set, but this is expected.

@damithc

Copy link
Copy Markdown
Contributor

We can make this branch based instead of tag based. e.g., have another branch named release. Would that be possible/cleaner?

@yamgent

Copy link
Copy Markdown
Member

We can make this branch based instead of tag based. e.g., have another branch named release. Would that be possible/cleaner?

That would be possible too, we can do that. Although the branch would probably only be used specifically for deploying documentation (since it doesn't fit our current release flow, as version tags are superior to a dedicated release branch).

@damithc

Copy link
Copy Markdown
Contributor

That would be possible too, we can do that. Although the branch would probably only be used specifically for deploying documentation (since it doesn't fit our current release flow, as version tags are superior to a dedicated release branch).

I see. Let's stick with the tags then.

@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.

Have tested it and works. We would need to set up a GITHUB_TOKEN on travis for the repository and make sure only releases should have tags.

EDIT: Additionally, developers with travis set up on their fork, with their GITHUB_TOKEN set, should not push any tags that match the vx.x.x format. Unless we have push rights removed from markbind.github.io.git

@yamgentyamgent added this to the v1.19.2 milestone Feb 25, 2019
@Xenonym

Copy link
Copy Markdown
ContributorAuthor

Have tested it and works. We would need to set up a GITHUB_TOKEN on travis for the repository and make sure only releases should have tags.

EDIT: Additionally, developers with travis set up on their fork, with their GITHUB_TOKEN set, should not push any tags that match the vx.x.x format. Unless we have push rights removed from markbind.github.io.git

As a precautionary measure, we should configure MarkBind/markbind.github.io.git so that only the Team Lead (@yamgent) has push permissions to it.

@yamgent

Copy link
Copy Markdown
Member

As a precautionary measure, we should configure MarkBind/markbind.github.io.git so that only the Team Lead (@yamgent) has push permissions to it.

The actual account behind the pushing is actually @traviscibot though (see aefca73). Restricting the permission to just the bot isn't sufficient because anyone else could still invoke Travis for pushing.

@yamgentyamgent removed this from the v1.19.2 milestone Feb 25, 2019
@nicholaschuayunzhi

Copy link
Copy Markdown
Contributor

The actual account behind the pushing is actually @traviscibot though (see aefca73). Restricting the permission to just the bot isn't sufficient because anyone else could still invoke Travis for pushing.

I believe the concern is specifically:

  1. dev have their own fork of the repo
  2. dev has set up travis for his fork
  3. dev's fork's travis has GITHUB_TOKEN set
  4. markbind.github.io.git allows pushes by any dev

Then a push to any branch on their fork with a tag matching vx.x.x would trigger a site rebuild on the live markbind site.

@yamgent

Copy link
Copy Markdown
Member

I believe the concern is specifically:

  1. dev have their own fork of the repo
  2. dev has set up travis for his fork
  3. dev's fork's travis has GITHUB_TOKEN set
  4. markbind.github.io.git allows pushes by any dev

Then a push to any branch on their fork with a tag matching vx.x.x would trigger a site rebuild on the live markbind site.

Got it, I got confused with how the GitHub tokens work, my apologies.

I don't think anyone on the @MarkBind/cs3282-developers team has push rights to markbind.github.io.git in the first place, so I think it should be fine.

@yamgentyamgent added this to the v1.19.2 milestone Feb 25, 2019
@yamgent
yamgent merged commit 8c3ea29 into MarkBind:masterFeb 26, 2019
@Xenonym
Xenonym deleted the devops/deploy-docs-travis branch February 27, 2019 07:49
@yamgent

yamgent commented Mar 4, 2019

Copy link
Copy Markdown
Member

Works nicely, deployment of MarkBind documentation is now automated. 👍

But on a side note:

EDIT: Additionally, developers with travis set up on their fork, with their GITHUB_TOKEN set, should not push any tags that match the vx.x.x format. Unless we have push rights removed from markbind.github.io.git

There is actually a very simple solution to this, by using the repo options:

deploy:
on:
repo: MarkBind/markbind

While I have push rights to markbind.github.io, I still don't want my fork to do any deployment (it attempted to do that, but error-ed out because I didn't set GITHUB_TOKEN for my fork). So using the repo option will solve the problem of avoiding deployments on forks.

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.

Automate deployment of MarkBind documentation via Travis

4 participants

@Xenonym@damithc@yamgent@nicholaschuayunzhi
, '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

Deploy user docs via Travis on release - #701

Merged
yamgent merged 1 commit into
MarkBind:masterfrom
Xenonym:devops/deploy-docs-travis
Feb 26, 2019
Merged

Deploy user docs via Travis on release#701
yamgent merged 1 commit into
MarkBind:masterfrom
Xenonym:devops/deploy-docs-travis

Conversation

@Xenonym

Copy link
Copy Markdown
Contributor

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

• [X] Other, please explain: DevOps enhancement

Closes#688.

What is the rationale for this request?
Since we have implemented markbind deploy --travis, we can now deploy our own user documentation automatically on release with Travis.

What changes did you make? (Give an overview)
I added a deploy phase to .travis.yml that will build and deploy the user docs on release (a commit with a tag matching the pattern vx.x.x).

Testing instructions:

  1. Pull this PR to your own fork, and test with Travis CI enabled.
    • Normal commits should test but not deploy.
    • Tagged commits matching vx.x.x should trigger the deploy stage. It will fail since GITHUB_TOKEN should not be set, but this is expected.

@damithc

Copy link
Copy Markdown
Contributor

We can make this branch based instead of tag based. e.g., have another branch named release. Would that be possible/cleaner?

@yamgent

Copy link
Copy Markdown
Member

We can make this branch based instead of tag based. e.g., have another branch named release. Would that be possible/cleaner?

That would be possible too, we can do that. Although the branch would probably only be used specifically for deploying documentation (since it doesn't fit our current release flow, as version tags are superior to a dedicated release branch).

@damithc

Copy link
Copy Markdown
Contributor

That would be possible too, we can do that. Although the branch would probably only be used specifically for deploying documentation (since it doesn't fit our current release flow, as version tags are superior to a dedicated release branch).

I see. Let's stick with the tags then.

@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.

Have tested it and works. We would need to set up a GITHUB_TOKEN on travis for the repository and make sure only releases should have tags.

EDIT: Additionally, developers with travis set up on their fork, with their GITHUB_TOKEN set, should not push any tags that match the vx.x.x format. Unless we have push rights removed from markbind.github.io.git

@yamgentyamgent added this to the v1.19.2 milestone Feb 25, 2019
@Xenonym

Copy link
Copy Markdown
ContributorAuthor

Have tested it and works. We would need to set up a GITHUB_TOKEN on travis for the repository and make sure only releases should have tags.

EDIT: Additionally, developers with travis set up on their fork, with their GITHUB_TOKEN set, should not push any tags that match the vx.x.x format. Unless we have push rights removed from markbind.github.io.git

As a precautionary measure, we should configure MarkBind/markbind.github.io.git so that only the Team Lead (@yamgent) has push permissions to it.

@yamgent

Copy link
Copy Markdown
Member

As a precautionary measure, we should configure MarkBind/markbind.github.io.git so that only the Team Lead (@yamgent) has push permissions to it.

The actual account behind the pushing is actually @traviscibot though (see aefca73). Restricting the permission to just the bot isn't sufficient because anyone else could still invoke Travis for pushing.

@yamgentyamgent removed this from the v1.19.2 milestone Feb 25, 2019
@nicholaschuayunzhi

Copy link
Copy Markdown
Contributor

The actual account behind the pushing is actually @traviscibot though (see aefca73). Restricting the permission to just the bot isn't sufficient because anyone else could still invoke Travis for pushing.

I believe the concern is specifically:

  1. dev have their own fork of the repo
  2. dev has set up travis for his fork
  3. dev's fork's travis has GITHUB_TOKEN set
  4. markbind.github.io.git allows pushes by any dev

Then a push to any branch on their fork with a tag matching vx.x.x would trigger a site rebuild on the live markbind site.

@yamgent

Copy link
Copy Markdown
Member

I believe the concern is specifically:

  1. dev have their own fork of the repo
  2. dev has set up travis for his fork
  3. dev's fork's travis has GITHUB_TOKEN set
  4. markbind.github.io.git allows pushes by any dev

Then a push to any branch on their fork with a tag matching vx.x.x would trigger a site rebuild on the live markbind site.

Got it, I got confused with how the GitHub tokens work, my apologies.

I don't think anyone on the @MarkBind/cs3282-developers team has push rights to markbind.github.io.git in the first place, so I think it should be fine.

@yamgentyamgent added this to the v1.19.2 milestone Feb 25, 2019
@yamgent
yamgent merged commit 8c3ea29 into MarkBind:masterFeb 26, 2019
@Xenonym
Xenonym deleted the devops/deploy-docs-travis branch February 27, 2019 07:49
@yamgent

yamgent commented Mar 4, 2019

Copy link
Copy Markdown
Member

Works nicely, deployment of MarkBind documentation is now automated. 👍

But on a side note:

EDIT: Additionally, developers with travis set up on their fork, with their GITHUB_TOKEN set, should not push any tags that match the vx.x.x format. Unless we have push rights removed from markbind.github.io.git

There is actually a very simple solution to this, by using the repo options:

deploy:
on:
repo: MarkBind/markbind

While I have push rights to markbind.github.io, I still don't want my fork to do any deployment (it attempted to do that, but error-ed out because I didn't set GITHUB_TOKEN for my fork). So using the repo option will solve the problem of avoiding deployments on forks.

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.

Automate deployment of MarkBind documentation via Travis

4 participants

@Xenonym@damithc@yamgent@nicholaschuayunzhi
, '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

Deploy user docs via Travis on release - #701

Merged
yamgent merged 1 commit into
MarkBind:masterfrom
Xenonym:devops/deploy-docs-travis
Feb 26, 2019
Merged

Deploy user docs via Travis on release#701
yamgent merged 1 commit into
MarkBind:masterfrom
Xenonym:devops/deploy-docs-travis

Conversation

@Xenonym

Copy link
Copy Markdown
Contributor

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

• [X] Other, please explain: DevOps enhancement

Closes#688.

What is the rationale for this request?
Since we have implemented markbind deploy --travis, we can now deploy our own user documentation automatically on release with Travis.

What changes did you make? (Give an overview)
I added a deploy phase to .travis.yml that will build and deploy the user docs on release (a commit with a tag matching the pattern vx.x.x).

Testing instructions:

  1. Pull this PR to your own fork, and test with Travis CI enabled.
    • Normal commits should test but not deploy.
    • Tagged commits matching vx.x.x should trigger the deploy stage. It will fail since GITHUB_TOKEN should not be set, but this is expected.

@damithc

Copy link
Copy Markdown
Contributor

We can make this branch based instead of tag based. e.g., have another branch named release. Would that be possible/cleaner?

@yamgent

Copy link
Copy Markdown
Member

We can make this branch based instead of tag based. e.g., have another branch named release. Would that be possible/cleaner?

That would be possible too, we can do that. Although the branch would probably only be used specifically for deploying documentation (since it doesn't fit our current release flow, as version tags are superior to a dedicated release branch).

@damithc

Copy link
Copy Markdown
Contributor

That would be possible too, we can do that. Although the branch would probably only be used specifically for deploying documentation (since it doesn't fit our current release flow, as version tags are superior to a dedicated release branch).

I see. Let's stick with the tags then.

@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.

Have tested it and works. We would need to set up a GITHUB_TOKEN on travis for the repository and make sure only releases should have tags.

EDIT: Additionally, developers with travis set up on their fork, with their GITHUB_TOKEN set, should not push any tags that match the vx.x.x format. Unless we have push rights removed from markbind.github.io.git

@yamgentyamgent added this to the v1.19.2 milestone Feb 25, 2019
@Xenonym

Copy link
Copy Markdown
ContributorAuthor

Have tested it and works. We would need to set up a GITHUB_TOKEN on travis for the repository and make sure only releases should have tags.

EDIT: Additionally, developers with travis set up on their fork, with their GITHUB_TOKEN set, should not push any tags that match the vx.x.x format. Unless we have push rights removed from markbind.github.io.git

As a precautionary measure, we should configure MarkBind/markbind.github.io.git so that only the Team Lead (@yamgent) has push permissions to it.

@yamgent

Copy link
Copy Markdown
Member

As a precautionary measure, we should configure MarkBind/markbind.github.io.git so that only the Team Lead (@yamgent) has push permissions to it.

The actual account behind the pushing is actually @traviscibot though (see aefca73). Restricting the permission to just the bot isn't sufficient because anyone else could still invoke Travis for pushing.

@yamgentyamgent removed this from the v1.19.2 milestone Feb 25, 2019
@nicholaschuayunzhi

Copy link
Copy Markdown
Contributor

The actual account behind the pushing is actually @traviscibot though (see aefca73). Restricting the permission to just the bot isn't sufficient because anyone else could still invoke Travis for pushing.

I believe the concern is specifically:

  1. dev have their own fork of the repo
  2. dev has set up travis for his fork
  3. dev's fork's travis has GITHUB_TOKEN set
  4. markbind.github.io.git allows pushes by any dev

Then a push to any branch on their fork with a tag matching vx.x.x would trigger a site rebuild on the live markbind site.

@yamgent

Copy link
Copy Markdown
Member

I believe the concern is specifically:

  1. dev have their own fork of the repo
  2. dev has set up travis for his fork
  3. dev's fork's travis has GITHUB_TOKEN set
  4. markbind.github.io.git allows pushes by any dev

Then a push to any branch on their fork with a tag matching vx.x.x would trigger a site rebuild on the live markbind site.

Got it, I got confused with how the GitHub tokens work, my apologies.

I don't think anyone on the @MarkBind/cs3282-developers team has push rights to markbind.github.io.git in the first place, so I think it should be fine.

@yamgentyamgent added this to the v1.19.2 milestone Feb 25, 2019
@yamgent
yamgent merged commit 8c3ea29 into MarkBind:masterFeb 26, 2019
@Xenonym
Xenonym deleted the devops/deploy-docs-travis branch February 27, 2019 07:49
@yamgent

yamgent commented Mar 4, 2019

Copy link
Copy Markdown
Member

Works nicely, deployment of MarkBind documentation is now automated. 👍

But on a side note:

EDIT: Additionally, developers with travis set up on their fork, with their GITHUB_TOKEN set, should not push any tags that match the vx.x.x format. Unless we have push rights removed from markbind.github.io.git

There is actually a very simple solution to this, by using the repo options:

deploy:
on:
repo: MarkBind/markbind

While I have push rights to markbind.github.io, I still don't want my fork to do any deployment (it attempted to do that, but error-ed out because I didn't set GITHUB_TOKEN for my fork). So using the repo option will solve the problem of avoiding deployments on forks.

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.

Automate deployment of MarkBind documentation via Travis

4 participants

@Xenonym@damithc@yamgent@nicholaschuayunzhi
, '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

Deploy user docs via Travis on release - #701

Merged
yamgent merged 1 commit into
MarkBind:masterfrom
Xenonym:devops/deploy-docs-travis
Feb 26, 2019
Merged

Deploy user docs via Travis on release#701
yamgent merged 1 commit into
MarkBind:masterfrom
Xenonym:devops/deploy-docs-travis

Conversation

@Xenonym

Copy link
Copy Markdown
Contributor

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

• [X] Other, please explain: DevOps enhancement

Closes#688.

What is the rationale for this request?
Since we have implemented markbind deploy --travis, we can now deploy our own user documentation automatically on release with Travis.

What changes did you make? (Give an overview)
I added a deploy phase to .travis.yml that will build and deploy the user docs on release (a commit with a tag matching the pattern vx.x.x).

Testing instructions:

  1. Pull this PR to your own fork, and test with Travis CI enabled.
    • Normal commits should test but not deploy.
    • Tagged commits matching vx.x.x should trigger the deploy stage. It will fail since GITHUB_TOKEN should not be set, but this is expected.

@damithc

Copy link
Copy Markdown
Contributor

We can make this branch based instead of tag based. e.g., have another branch named release. Would that be possible/cleaner?

@yamgent

Copy link
Copy Markdown
Member

We can make this branch based instead of tag based. e.g., have another branch named release. Would that be possible/cleaner?

That would be possible too, we can do that. Although the branch would probably only be used specifically for deploying documentation (since it doesn't fit our current release flow, as version tags are superior to a dedicated release branch).

@damithc

Copy link
Copy Markdown
Contributor

That would be possible too, we can do that. Although the branch would probably only be used specifically for deploying documentation (since it doesn't fit our current release flow, as version tags are superior to a dedicated release branch).

I see. Let's stick with the tags then.

@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.

Have tested it and works. We would need to set up a GITHUB_TOKEN on travis for the repository and make sure only releases should have tags.

EDIT: Additionally, developers with travis set up on their fork, with their GITHUB_TOKEN set, should not push any tags that match the vx.x.x format. Unless we have push rights removed from markbind.github.io.git

@yamgentyamgent added this to the v1.19.2 milestone Feb 25, 2019
@Xenonym

Copy link
Copy Markdown
ContributorAuthor

Have tested it and works. We would need to set up a GITHUB_TOKEN on travis for the repository and make sure only releases should have tags.

EDIT: Additionally, developers with travis set up on their fork, with their GITHUB_TOKEN set, should not push any tags that match the vx.x.x format. Unless we have push rights removed from markbind.github.io.git

As a precautionary measure, we should configure MarkBind/markbind.github.io.git so that only the Team Lead (@yamgent) has push permissions to it.

@yamgent

Copy link
Copy Markdown
Member

As a precautionary measure, we should configure MarkBind/markbind.github.io.git so that only the Team Lead (@yamgent) has push permissions to it.

The actual account behind the pushing is actually @traviscibot though (see aefca73). Restricting the permission to just the bot isn't sufficient because anyone else could still invoke Travis for pushing.

@yamgentyamgent removed this from the v1.19.2 milestone Feb 25, 2019
@nicholaschuayunzhi

Copy link
Copy Markdown
Contributor

The actual account behind the pushing is actually @traviscibot though (see aefca73). Restricting the permission to just the bot isn't sufficient because anyone else could still invoke Travis for pushing.

I believe the concern is specifically:

  1. dev have their own fork of the repo
  2. dev has set up travis for his fork
  3. dev's fork's travis has GITHUB_TOKEN set
  4. markbind.github.io.git allows pushes by any dev

Then a push to any branch on their fork with a tag matching vx.x.x would trigger a site rebuild on the live markbind site.

@yamgent

Copy link
Copy Markdown
Member

I believe the concern is specifically:

  1. dev have their own fork of the repo
  2. dev has set up travis for his fork
  3. dev's fork's travis has GITHUB_TOKEN set
  4. markbind.github.io.git allows pushes by any dev

Then a push to any branch on their fork with a tag matching vx.x.x would trigger a site rebuild on the live markbind site.

Got it, I got confused with how the GitHub tokens work, my apologies.

I don't think anyone on the @MarkBind/cs3282-developers team has push rights to markbind.github.io.git in the first place, so I think it should be fine.

@yamgentyamgent added this to the v1.19.2 milestone Feb 25, 2019
@yamgent
yamgent merged commit 8c3ea29 into MarkBind:masterFeb 26, 2019
@Xenonym
Xenonym deleted the devops/deploy-docs-travis branch February 27, 2019 07:49
@yamgent

yamgent commented Mar 4, 2019

Copy link
Copy Markdown
Member

Works nicely, deployment of MarkBind documentation is now automated. 👍

But on a side note:

EDIT: Additionally, developers with travis set up on their fork, with their GITHUB_TOKEN set, should not push any tags that match the vx.x.x format. Unless we have push rights removed from markbind.github.io.git

There is actually a very simple solution to this, by using the repo options:

deploy:
on:
repo: MarkBind/markbind

While I have push rights to markbind.github.io, I still don't want my fork to do any deployment (it attempted to do that, but error-ed out because I didn't set GITHUB_TOKEN for my fork). So using the repo option will solve the problem of avoiding deployments on forks.

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.

Automate deployment of MarkBind documentation via Travis

4 participants

@Xenonym@damithc@yamgent@nicholaschuayunzhi
, '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

Deploy user docs via Travis on release - #701

Merged
yamgent merged 1 commit into
MarkBind:masterfrom
Xenonym:devops/deploy-docs-travis
Feb 26, 2019
Merged

Deploy user docs via Travis on release#701
yamgent merged 1 commit into
MarkBind:masterfrom
Xenonym:devops/deploy-docs-travis

Conversation

@Xenonym

Copy link
Copy Markdown
Contributor

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

• [X] Other, please explain: DevOps enhancement

Closes#688.

What is the rationale for this request?
Since we have implemented markbind deploy --travis, we can now deploy our own user documentation automatically on release with Travis.

What changes did you make? (Give an overview)
I added a deploy phase to .travis.yml that will build and deploy the user docs on release (a commit with a tag matching the pattern vx.x.x).

Testing instructions:

  1. Pull this PR to your own fork, and test with Travis CI enabled.
    • Normal commits should test but not deploy.
    • Tagged commits matching vx.x.x should trigger the deploy stage. It will fail since GITHUB_TOKEN should not be set, but this is expected.

@damithc

Copy link
Copy Markdown
Contributor

We can make this branch based instead of tag based. e.g., have another branch named release. Would that be possible/cleaner?

@yamgent

Copy link
Copy Markdown
Member

We can make this branch based instead of tag based. e.g., have another branch named release. Would that be possible/cleaner?

That would be possible too, we can do that. Although the branch would probably only be used specifically for deploying documentation (since it doesn't fit our current release flow, as version tags are superior to a dedicated release branch).

@damithc

Copy link
Copy Markdown
Contributor

That would be possible too, we can do that. Although the branch would probably only be used specifically for deploying documentation (since it doesn't fit our current release flow, as version tags are superior to a dedicated release branch).

I see. Let's stick with the tags then.

@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.

Have tested it and works. We would need to set up a GITHUB_TOKEN on travis for the repository and make sure only releases should have tags.

EDIT: Additionally, developers with travis set up on their fork, with their GITHUB_TOKEN set, should not push any tags that match the vx.x.x format. Unless we have push rights removed from markbind.github.io.git

@yamgentyamgent added this to the v1.19.2 milestone Feb 25, 2019
@Xenonym

Copy link
Copy Markdown
ContributorAuthor

Have tested it and works. We would need to set up a GITHUB_TOKEN on travis for the repository and make sure only releases should have tags.

EDIT: Additionally, developers with travis set up on their fork, with their GITHUB_TOKEN set, should not push any tags that match the vx.x.x format. Unless we have push rights removed from markbind.github.io.git

As a precautionary measure, we should configure MarkBind/markbind.github.io.git so that only the Team Lead (@yamgent) has push permissions to it.

@yamgent

Copy link
Copy Markdown
Member

As a precautionary measure, we should configure MarkBind/markbind.github.io.git so that only the Team Lead (@yamgent) has push permissions to it.

The actual account behind the pushing is actually @traviscibot though (see aefca73). Restricting the permission to just the bot isn't sufficient because anyone else could still invoke Travis for pushing.

@yamgentyamgent removed this from the v1.19.2 milestone Feb 25, 2019
@nicholaschuayunzhi

Copy link
Copy Markdown
Contributor

The actual account behind the pushing is actually @traviscibot though (see aefca73). Restricting the permission to just the bot isn't sufficient because anyone else could still invoke Travis for pushing.

I believe the concern is specifically:

  1. dev have their own fork of the repo
  2. dev has set up travis for his fork
  3. dev's fork's travis has GITHUB_TOKEN set
  4. markbind.github.io.git allows pushes by any dev

Then a push to any branch on their fork with a tag matching vx.x.x would trigger a site rebuild on the live markbind site.

@yamgent

Copy link
Copy Markdown
Member

I believe the concern is specifically:

  1. dev have their own fork of the repo
  2. dev has set up travis for his fork
  3. dev's fork's travis has GITHUB_TOKEN set
  4. markbind.github.io.git allows pushes by any dev

Then a push to any branch on their fork with a tag matching vx.x.x would trigger a site rebuild on the live markbind site.

Got it, I got confused with how the GitHub tokens work, my apologies.

I don't think anyone on the @MarkBind/cs3282-developers team has push rights to markbind.github.io.git in the first place, so I think it should be fine.

@yamgentyamgent added this to the v1.19.2 milestone Feb 25, 2019
@yamgent
yamgent merged commit 8c3ea29 into MarkBind:masterFeb 26, 2019
@Xenonym
Xenonym deleted the devops/deploy-docs-travis branch February 27, 2019 07:49
@yamgent

yamgent commented Mar 4, 2019

Copy link
Copy Markdown
Member

Works nicely, deployment of MarkBind documentation is now automated. 👍

But on a side note:

EDIT: Additionally, developers with travis set up on their fork, with their GITHUB_TOKEN set, should not push any tags that match the vx.x.x format. Unless we have push rights removed from markbind.github.io.git

There is actually a very simple solution to this, by using the repo options:

deploy:
on:
repo: MarkBind/markbind

While I have push rights to markbind.github.io, I still don't want my fork to do any deployment (it attempted to do that, but error-ed out because I didn't set GITHUB_TOKEN for my fork). So using the repo option will solve the problem of avoiding deployments on forks.

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.

Automate deployment of MarkBind documentation via Travis

4 participants

@Xenonym@damithc@yamgent@nicholaschuayunzhi
, '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

Deploy user docs via Travis on release - #701

Merged
yamgent merged 1 commit into
MarkBind:masterfrom
Xenonym:devops/deploy-docs-travis
Feb 26, 2019
Merged

Deploy user docs via Travis on release#701
yamgent merged 1 commit into
MarkBind:masterfrom
Xenonym:devops/deploy-docs-travis

Conversation

@Xenonym

Copy link
Copy Markdown
Contributor

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

• [X] Other, please explain: DevOps enhancement

Closes#688.

What is the rationale for this request?
Since we have implemented markbind deploy --travis, we can now deploy our own user documentation automatically on release with Travis.

What changes did you make? (Give an overview)
I added a deploy phase to .travis.yml that will build and deploy the user docs on release (a commit with a tag matching the pattern vx.x.x).

Testing instructions:

  1. Pull this PR to your own fork, and test with Travis CI enabled.
    • Normal commits should test but not deploy.
    • Tagged commits matching vx.x.x should trigger the deploy stage. It will fail since GITHUB_TOKEN should not be set, but this is expected.

@damithc

Copy link
Copy Markdown
Contributor

We can make this branch based instead of tag based. e.g., have another branch named release. Would that be possible/cleaner?

@yamgent

Copy link
Copy Markdown
Member

We can make this branch based instead of tag based. e.g., have another branch named release. Would that be possible/cleaner?

That would be possible too, we can do that. Although the branch would probably only be used specifically for deploying documentation (since it doesn't fit our current release flow, as version tags are superior to a dedicated release branch).

@damithc

Copy link
Copy Markdown
Contributor

That would be possible too, we can do that. Although the branch would probably only be used specifically for deploying documentation (since it doesn't fit our current release flow, as version tags are superior to a dedicated release branch).

I see. Let's stick with the tags then.

@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.

Have tested it and works. We would need to set up a GITHUB_TOKEN on travis for the repository and make sure only releases should have tags.

EDIT: Additionally, developers with travis set up on their fork, with their GITHUB_TOKEN set, should not push any tags that match the vx.x.x format. Unless we have push rights removed from markbind.github.io.git

@yamgentyamgent added this to the v1.19.2 milestone Feb 25, 2019
@Xenonym

Copy link
Copy Markdown
ContributorAuthor

Have tested it and works. We would need to set up a GITHUB_TOKEN on travis for the repository and make sure only releases should have tags.

EDIT: Additionally, developers with travis set up on their fork, with their GITHUB_TOKEN set, should not push any tags that match the vx.x.x format. Unless we have push rights removed from markbind.github.io.git

As a precautionary measure, we should configure MarkBind/markbind.github.io.git so that only the Team Lead (@yamgent) has push permissions to it.

@yamgent

Copy link
Copy Markdown
Member

As a precautionary measure, we should configure MarkBind/markbind.github.io.git so that only the Team Lead (@yamgent) has push permissions to it.

The actual account behind the pushing is actually @traviscibot though (see aefca73). Restricting the permission to just the bot isn't sufficient because anyone else could still invoke Travis for pushing.

@yamgentyamgent removed this from the v1.19.2 milestone Feb 25, 2019
@nicholaschuayunzhi

Copy link
Copy Markdown
Contributor

The actual account behind the pushing is actually @traviscibot though (see aefca73). Restricting the permission to just the bot isn't sufficient because anyone else could still invoke Travis for pushing.

I believe the concern is specifically:

  1. dev have their own fork of the repo
  2. dev has set up travis for his fork
  3. dev's fork's travis has GITHUB_TOKEN set
  4. markbind.github.io.git allows pushes by any dev

Then a push to any branch on their fork with a tag matching vx.x.x would trigger a site rebuild on the live markbind site.

@yamgent

Copy link
Copy Markdown
Member

I believe the concern is specifically:

  1. dev have their own fork of the repo
  2. dev has set up travis for his fork
  3. dev's fork's travis has GITHUB_TOKEN set
  4. markbind.github.io.git allows pushes by any dev

Then a push to any branch on their fork with a tag matching vx.x.x would trigger a site rebuild on the live markbind site.

Got it, I got confused with how the GitHub tokens work, my apologies.

I don't think anyone on the @MarkBind/cs3282-developers team has push rights to markbind.github.io.git in the first place, so I think it should be fine.

@yamgentyamgent added this to the v1.19.2 milestone Feb 25, 2019
@yamgent
yamgent merged commit 8c3ea29 into MarkBind:masterFeb 26, 2019
@Xenonym
Xenonym deleted the devops/deploy-docs-travis branch February 27, 2019 07:49
@yamgent

yamgent commented Mar 4, 2019

Copy link
Copy Markdown
Member

Works nicely, deployment of MarkBind documentation is now automated. 👍

But on a side note:

EDIT: Additionally, developers with travis set up on their fork, with their GITHUB_TOKEN set, should not push any tags that match the vx.x.x format. Unless we have push rights removed from markbind.github.io.git

There is actually a very simple solution to this, by using the repo options:

deploy:
on:
repo: MarkBind/markbind

While I have push rights to markbind.github.io, I still don't want my fork to do any deployment (it attempted to do that, but error-ed out because I didn't set GITHUB_TOKEN for my fork). So using the repo option will solve the problem of avoiding deployments on forks.

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.

Automate deployment of MarkBind documentation via Travis

4 participants

@Xenonym@damithc@yamgent@nicholaschuayunzhi
, '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

Deploy user docs via Travis on release - #701

Merged
yamgent merged 1 commit into
MarkBind:masterfrom
Xenonym:devops/deploy-docs-travis
Feb 26, 2019
Merged

Deploy user docs via Travis on release#701
yamgent merged 1 commit into
MarkBind:masterfrom
Xenonym:devops/deploy-docs-travis

Conversation

@Xenonym

Copy link
Copy Markdown
Contributor

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

• [X] Other, please explain: DevOps enhancement

Closes#688.

What is the rationale for this request?
Since we have implemented markbind deploy --travis, we can now deploy our own user documentation automatically on release with Travis.

What changes did you make? (Give an overview)
I added a deploy phase to .travis.yml that will build and deploy the user docs on release (a commit with a tag matching the pattern vx.x.x).

Testing instructions:

  1. Pull this PR to your own fork, and test with Travis CI enabled.
    • Normal commits should test but not deploy.
    • Tagged commits matching vx.x.x should trigger the deploy stage. It will fail since GITHUB_TOKEN should not be set, but this is expected.

@damithc

Copy link
Copy Markdown
Contributor

We can make this branch based instead of tag based. e.g., have another branch named release. Would that be possible/cleaner?

@yamgent

Copy link
Copy Markdown
Member

We can make this branch based instead of tag based. e.g., have another branch named release. Would that be possible/cleaner?

That would be possible too, we can do that. Although the branch would probably only be used specifically for deploying documentation (since it doesn't fit our current release flow, as version tags are superior to a dedicated release branch).

@damithc

Copy link
Copy Markdown
Contributor

That would be possible too, we can do that. Although the branch would probably only be used specifically for deploying documentation (since it doesn't fit our current release flow, as version tags are superior to a dedicated release branch).

I see. Let's stick with the tags then.

@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.

Have tested it and works. We would need to set up a GITHUB_TOKEN on travis for the repository and make sure only releases should have tags.

EDIT: Additionally, developers with travis set up on their fork, with their GITHUB_TOKEN set, should not push any tags that match the vx.x.x format. Unless we have push rights removed from markbind.github.io.git

@yamgentyamgent added this to the v1.19.2 milestone Feb 25, 2019
@Xenonym

Copy link
Copy Markdown
ContributorAuthor

Have tested it and works. We would need to set up a GITHUB_TOKEN on travis for the repository and make sure only releases should have tags.

EDIT: Additionally, developers with travis set up on their fork, with their GITHUB_TOKEN set, should not push any tags that match the vx.x.x format. Unless we have push rights removed from markbind.github.io.git

As a precautionary measure, we should configure MarkBind/markbind.github.io.git so that only the Team Lead (@yamgent) has push permissions to it.

@yamgent

Copy link
Copy Markdown
Member

As a precautionary measure, we should configure MarkBind/markbind.github.io.git so that only the Team Lead (@yamgent) has push permissions to it.

The actual account behind the pushing is actually @traviscibot though (see aefca73). Restricting the permission to just the bot isn't sufficient because anyone else could still invoke Travis for pushing.

@yamgentyamgent removed this from the v1.19.2 milestone Feb 25, 2019
@nicholaschuayunzhi

Copy link
Copy Markdown
Contributor

The actual account behind the pushing is actually @traviscibot though (see aefca73). Restricting the permission to just the bot isn't sufficient because anyone else could still invoke Travis for pushing.

I believe the concern is specifically:

  1. dev have their own fork of the repo
  2. dev has set up travis for his fork
  3. dev's fork's travis has GITHUB_TOKEN set
  4. markbind.github.io.git allows pushes by any dev

Then a push to any branch on their fork with a tag matching vx.x.x would trigger a site rebuild on the live markbind site.

@yamgent

Copy link
Copy Markdown
Member

I believe the concern is specifically:

  1. dev have their own fork of the repo
  2. dev has set up travis for his fork
  3. dev's fork's travis has GITHUB_TOKEN set
  4. markbind.github.io.git allows pushes by any dev

Then a push to any branch on their fork with a tag matching vx.x.x would trigger a site rebuild on the live markbind site.

Got it, I got confused with how the GitHub tokens work, my apologies.

I don't think anyone on the @MarkBind/cs3282-developers team has push rights to markbind.github.io.git in the first place, so I think it should be fine.

@yamgentyamgent added this to the v1.19.2 milestone Feb 25, 2019
@yamgent
yamgent merged commit 8c3ea29 into MarkBind:masterFeb 26, 2019
@Xenonym
Xenonym deleted the devops/deploy-docs-travis branch February 27, 2019 07:49
@yamgent

yamgent commented Mar 4, 2019

Copy link
Copy Markdown
Member

Works nicely, deployment of MarkBind documentation is now automated. 👍

But on a side note:

EDIT: Additionally, developers with travis set up on their fork, with their GITHUB_TOKEN set, should not push any tags that match the vx.x.x format. Unless we have push rights removed from markbind.github.io.git

There is actually a very simple solution to this, by using the repo options:

deploy:
on:
repo: MarkBind/markbind

While I have push rights to markbind.github.io, I still don't want my fork to do any deployment (it attempted to do that, but error-ed out because I didn't set GITHUB_TOKEN for my fork). So using the repo option will solve the problem of avoiding deployments on forks.

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.

Automate deployment of MarkBind documentation via Travis

4 participants

@Xenonym@damithc@yamgent@nicholaschuayunzhi