From 581e65e174f5f0e2a4cb8d94fb7e01f06eb02020 Mon Sep 17 00:00:00 2001 From: Micke Nordin Date: Mon, 18 Mar 2024 14:57:29 +0100 Subject: [PATCH] Add site --- .jenkins.yaml | 15 ++++ Dockerfile | 9 ++ Makefile | 2 + html/assets/cs3-logo.png | Bin 0 -> 17536 bytes html/assets/hljs-github.min.css | 124 ++++++++++++++++++++++++++++ html/assets/hublogo.svg | 75 +++++++++++++++++ html/assets/pilcrow.css | 42 ++++++++++ html/assets/style.css | 141 ++++++++++++++++++++++++++++++++ html/assets/sunet.svg | 31 +++++++ html/index.html | 25 ++++++ html/workshop/index.html | 90 ++++++++++++++++++++ markdown/index.md | 16 ++++ markdown/workshop/index.md | 36 ++++++++ 13 files changed, 606 insertions(+) create mode 100644 .jenkins.yaml create mode 100644 Dockerfile create mode 100644 Makefile create mode 100644 html/assets/cs3-logo.png create mode 100644 html/assets/hljs-github.min.css create mode 100644 html/assets/hublogo.svg create mode 100644 html/assets/pilcrow.css create mode 100644 html/assets/style.css create mode 100644 html/assets/sunet.svg create mode 100644 html/index.html create mode 100644 html/workshop/index.html create mode 100644 markdown/index.md create mode 100644 markdown/workshop/index.md diff --git a/.jenkins.yaml b/.jenkins.yaml new file mode 100644 index 0000000..71133fe --- /dev/null +++ b/.jenkins.yaml @@ -0,0 +1,15 @@ +--- +environment_variables: + SITE_VERSION: "0.0.1-1" +git: + branch: main +triggers: + cron: "@daily" +clean_workspace: true +builders: + - docker +docker_name: drive/jupyter-site +docker_tags: + - "${SITE_VERSION}" + - "latest" +docker_no_cache: true diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..7f57ab8 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,9 @@ +FROM busybox + +RUN adduser -D static +USER static +WORKDIR /home/static + +COPY ./html /home/static +CMD ["busybox", "httpd", "-f", "-v", "-p", "3000"] + diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..4c9ebee --- /dev/null +++ b/Makefile @@ -0,0 +1,2 @@ +all: + generate-md --layout jasonm23-foghorn --input ./markdown --output ./html diff --git a/html/assets/cs3-logo.png b/html/assets/cs3-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..4aba01119ccb86d178d927af88b2400916258e4a GIT binary patch literal 17536 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 literal 0 HcmV?d00001 diff --git a/html/assets/hljs-github.min.css b/html/assets/hljs-github.min.css new file mode 100644 index 0000000..9b4f3aa --- /dev/null +++ b/html/assets/hljs-github.min.css @@ -0,0 +1,124 @@ +/* + +github.com style (c) Vasily Polovnyov + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #333; + background: #f8f8f8; + -webkit-text-size-adjust: none; +} + +.hljs-comment, +.diff .hljs-header, +.hljs-javadoc { + color: #998; + font-style: italic; +} + +.hljs-keyword, +.css .rule .hljs-keyword, +.hljs-winutils, +.nginx .hljs-title, +.hljs-subst, +.hljs-request, +.hljs-status { + color: #333; + font-weight: bold; +} + +.hljs-number, +.hljs-hexcolor, +.ruby .hljs-constant { + color: #008080; +} + +.hljs-string, +.hljs-tag .hljs-value, +.hljs-phpdoc, +.hljs-dartdoc, +.tex .hljs-formula { + color: #d14; +} + +.hljs-title, +.hljs-id, +.scss .hljs-preprocessor { + color: #900; + font-weight: bold; +} + +.hljs-list .hljs-keyword, +.hljs-subst { + font-weight: normal; +} + +.hljs-class .hljs-title, +.hljs-type, +.vhdl .hljs-literal, +.tex .hljs-command { + color: #458; + font-weight: bold; +} + +.hljs-tag, +.hljs-tag .hljs-title, +.hljs-rules .hljs-property, +.django .hljs-tag .hljs-keyword { + color: #000080; + font-weight: normal; +} + +.hljs-attribute, +.hljs-variable, +.lisp .hljs-body { + color: #008080; +} + +.hljs-regexp { + color: #009926; +} + +.hljs-symbol, +.ruby .hljs-symbol .hljs-string, +.lisp .hljs-keyword, +.clojure .hljs-keyword, +.scheme .hljs-keyword, +.tex .hljs-special, +.hljs-prompt { + color: #990073; +} + +.hljs-built_in { + color: #0086b3; +} + +.hljs-preprocessor, +.hljs-pragma, +.hljs-pi, +.hljs-doctype, +.hljs-shebang, +.hljs-cdata { + color: #999; + font-weight: bold; +} + +.hljs-deletion { + background: #fdd; +} + +.hljs-addition { + background: #dfd; +} + +.diff .hljs-change { + background: #0086b3; +} + +.hljs-chunk { + color: #aaa; +} diff --git a/html/assets/hublogo.svg b/html/assets/hublogo.svg new file mode 100644 index 0000000..f000235 --- /dev/null +++ b/html/assets/hublogo.svg @@ -0,0 +1,75 @@ + + + +Group Copy 2 +Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/html/assets/pilcrow.css b/html/assets/pilcrow.css new file mode 100644 index 0000000..769196f --- /dev/null +++ b/html/assets/pilcrow.css @@ -0,0 +1,42 @@ +h1, +h2, +h3, +h4, +h5, +h6 { + position: relative; +} + +h1:hover .header-link:before, +h2:hover .header-link:before, +h3:hover .header-link:before, +h4:hover .header-link:before, +h5:hover .header-link:before, +h6:hover .header-link:before { + content: "\00B6";/* pilcrow */ + color: #888; + font-size: smaller; +} + +.header-link { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + + position: absolute; + top: 0; + left: -0.7em; + display: block; + padding-right: 1em; +} + +h1:hover .header-link, +h2:hover .header-link, +h3:hover .header-link, +h4:hover .header-link, +h5:hover .header-link, +h6:hover .header-link { + display: inline-block; + text-decoration: none; +} diff --git a/html/assets/style.css b/html/assets/style.css new file mode 100644 index 0000000..aa93e18 --- /dev/null +++ b/html/assets/style.css @@ -0,0 +1,141 @@ +@import url(//fonts.googleapis.com/css?family=Vollkorn:400,400italic,700,700italic&subset=latin); + +html, body { + padding:1em; + margin:auto; + max-width:42em; + background:#fefefe; + } +body { + font: 1.3em "Vollkorn", Palatino, Times; + color: #333; + line-height: 1.4; + text-align: justify; + } +header, nav, article, footer { + width: 700px; + margin:0 auto; + } +article { + margin-top: 4em; + margin-bottom: 4em; + min-height: 400px; + } +footer { + margin-bottom:50px; + } +video { + margin: 2em 0; + border:1px solid #ddd; + } + +nav { + font-size: .9em; + font-style: italic; + border-bottom: 1px solid #ddd; + padding: 1em 0; + } +nav p { + margin: 0; + } + +/* Typography +-------------------------------------------------------- */ + +h1 { + margin-top: 0; + font-weight: normal; + } +h2 { + font-weight: normal; + } +h3 { + font-weight: normal; + font-style: italic; + margin-top:3em; + } +p { + margin-top:0; + -webkit-hypens:auto; + -moz-hypens:auto; + hyphens:auto; + } +ul { + list-style: square; + padding-left:1.2em; + } +ol { + padding-left:1.2em; + } +blockquote { + margin-left: 1em; + padding-left: 1em; + border-left: 1px solid #ddd; + } +code { + font-family: "Consolas", "Menlo", "Monaco", monospace, serif; + font-size: .9em; + } +a { + color: #2484c1; + text-decoration: none; + } +a:hover { + text-decoration: underline; + } +a img { + border:none; + } +h1 a, h1 a:hover { + color: #333; + text-decoration: none; + } +hr { + color : #ddd; + height : 1px; + margin: 2em 0; + border-top : solid 1px #ddd; + border-bottom : none; + border-left: 0; + border-right: 0; + } +p#heart{ + font-size: 2em; + line-height: 1; + text-align: center; + color: #ccc; + } +.red { + color:#B50000; + } + +/* Home Page +--------------------------- */ + +body#index li { + margin-bottom: 1em; + } + + +/* iPad +-------------------------------------------------------- */ +@media only screen and (max-device-width: 1024px) { +body { + font-size: 120%; + line-height: 1.4; + } +} /* @iPad */ + +/* iPhone +-------------------------------------------------------- */ +@media only screen and (max-device-width: 480px) { +body { + text-align: left; + } +article, footer { + width: auto; + } +article { + padding: 0 10px; + } +} /* @iPhone */ diff --git a/html/assets/sunet.svg b/html/assets/sunet.svg new file mode 100644 index 0000000..58c8c0a --- /dev/null +++ b/html/assets/sunet.svg @@ -0,0 +1,31 @@ + + Till startsidan + + + + + + + + + + + + + diff --git a/html/index.html b/html/index.html new file mode 100644 index 0000000..f75e725 --- /dev/null +++ b/html/index.html @@ -0,0 +1,25 @@ + + + + JupyterHub @ SUNET + + + + + + +

JupyterHub @ SUNET

+

Sunet is deploying a JupyterHub installation for the SUNET Drive community. +In line with our policies we are releasing our efforts as free and open source software.

+

Please have a look at our github repository for more information on our Nextcloud app and associated information on how we deploy our setup:

+ +

We are also organizing an online technical workshop for the CS3 community on 2024-05-15. Please register if you are so inclined:

+ +

Many thanks to both the From Zero to JupyterHub project and the Nextcloud project for the shoulders we are able to stand on.

+

SUNET     JupyterHub

+ + diff --git a/html/workshop/index.html b/html/workshop/index.html new file mode 100644 index 0000000..8177858 --- /dev/null +++ b/html/workshop/index.html @@ -0,0 +1,90 @@ + + + + CS3 JupyterHub Community Technical Workshop 2024 + + + + + + +

CS3 JupyterHub Community Technical Workshop 2024

+

The Workshop organized by SUNET as an informal event for the CS3 JupyterHub Community. The will be held online on Wednesday, May 15, 2024, 13:00-16:00 CEST.

+

To participate, please register by sending an email to drive@sunet.se with the subject "JupyterHub Workshop 2024" and your name and affiliation.

+

The workshop will be held in English on Zoom. A link to the Zoom meeting will be sent to all registered participants well in time for the workshop.

+

Presentations

+

Ideally each institution represented will hold a presentation of their JupyterHub deployment. +Please indicate in your registration email if you are planning to do so, and we will add your institution's presentation to the schedule. +The slot for the presentation will be 15 minutes with an additional 5 minutes for questions.

+

After each hour of the presentations, we will have a 10 minutes break. Any additional time that is left after the presentations will be used for a free form discussion. +If we run out of presentations and/or other things to say before the three hours have passed, we will end the workshop early.

+

Schedule

+

This is the tentative schedule for the workshop. It is subject to change.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
When     What
13:00 - 13:10Welcome
13:10 - 13:20SUNET
13:20 - 13:40TBD
13:40 - 14:00TBD
14:00 - 14:10Break
14:10 - 14:30TBD
14:30 - 14:50TBD
14:50 - 15:00Break
15:00 - 15:20TBD
15:20 - 15:40TBD
15:40 - 16:00Discussion
+
+

SUNET     JupyterHub     CS3

+ + diff --git a/markdown/index.md b/markdown/index.md new file mode 100644 index 0000000..99b90ab --- /dev/null +++ b/markdown/index.md @@ -0,0 +1,16 @@ +# JupyterHub @ SUNET + +Sunet is deploying a JupyterHub installation for the SUNET Drive community. +In line with our policies we are releasing our efforts as free and open source software. + +Please have a look at our github repository for more information on our [Nextcloud app](https://apps.nextcloud.com/apps/integration_jupyterhub) and associated information on how we deploy our setup: + +* [https://github.com/sunet/nextcloud-jupyter](https://github.com/sunet/nextcloud-jupyter) + +We are also organizing an online technical workshop for the CS3 community on 2024-05-15. Please register if you are so inclined: + +* [/workshop](/workshop/index.html) + +Many thanks to both the [From Zero to JupyterHub](https://z2jh.jupyter.org/en/stable/) project and the [Nextcloud](https://nextcloud.com) project for the shoulders we are able to stand on. + +SUNET     JupyterHub diff --git a/markdown/workshop/index.md b/markdown/workshop/index.md new file mode 100644 index 0000000..60b2b0e --- /dev/null +++ b/markdown/workshop/index.md @@ -0,0 +1,36 @@ +# CS3 JupyterHub Community Technical Workshop 2024 + +The Workshop organized by [SUNET](https://sunet.se) as an informal event for the [CS3](https://www.cs3community.org/) JupyterHub Community. The will be held online on Wednesday, May 15, 2024, 13:00-16:00 CEST. + +To participate, please register by sending an email to [drive@sunet.se](mailto:drive@sunet.se) with the subject "JupyterHub Workshop 2024" and your name and affiliation. + +The workshop will be held in English on Zoom. A link to the Zoom meeting will be sent to all registered participants well in time for the workshop. + +## Presentations + +Ideally each institution represented will hold a presentation of their JupyterHub deployment. +Please indicate in your registration email if you are planning to do so, and we will add your institution's presentation to the schedule. +The slot for the presentation will be 15 minutes with an additional 5 minutes for questions. + +After each hour of the presentations, we will have a 10 minutes break. Any additional time that is left after the presentations will be used for a free form discussion. +If we run out of presentations and/or other things to say before the three hours have passed, we will end the workshop early. + +## Schedule + +This is the tentative schedule for the workshop. It is subject to change. + +| When |     |What | +| --- | --- | --- | +| 13:00 - 13:10 | | Welcome | +| 13:10 - 13:20 | | [SUNET](https://www.sunet.se) | +| 13:20 - 13:40 | | TBD | +| 13:40 - 14:00 | | TBD | +| 14:00 - 14:10 | | Break | +| 14:10 - 14:30 | | TBD | +| 14:30 - 14:50 | | TBD | +| 14:50 - 15:00 | | Break | +| 15:00 - 15:20 | | TBD | +| 15:20 - 15:40 | | TBD | +| 15:40 - 16:00 | | Discussion | +--- +SUNET     JupyterHub     CS3