initial commit
This commit is contained in:
33
gitolite-cgit/Dockerfile
Normal file
33
gitolite-cgit/Dockerfile
Normal file
@@ -0,0 +1,33 @@
|
||||
FROM alpine:latest
|
||||
LABEL MAINTAINER="heckyel@riseup.net"
|
||||
|
||||
# Install needed packages
|
||||
RUN set -xe \
|
||||
&& apk add --no-cache --purge -uU \
|
||||
# Install gitolite
|
||||
gitolite git openssh \
|
||||
# install git-daemon
|
||||
git-daemon \
|
||||
# add nginx and cgit
|
||||
cgit nginx fcgiwrap spawn-fcgi \
|
||||
# python 3 pkg for highlight, about page
|
||||
py3-markdown py3-pygments \
|
||||
# Create nginx folder
|
||||
&& mkdir -p /run/nginx \
|
||||
# Clean up
|
||||
&& rm -rf /var/cache/apk/* \
|
||||
&& rm -rf /tmp/*
|
||||
|
||||
# Volume to store all ssh host key
|
||||
VOLUME [ "/etc/ssh" ]
|
||||
|
||||
# Volume to store Gitolite data, used for Gitolite setup
|
||||
VOLUME [ "/var/lib/git" ]
|
||||
|
||||
EXPOSE 22 80 9418
|
||||
WORKDIR /var/lib/git
|
||||
|
||||
COPY cgit.css /usr/share/webapps/cgit/cgit.css
|
||||
COPY entrypoint.sh /
|
||||
RUN chmod u+x /entrypoint.sh
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
792
gitolite-cgit/cgit.css
Normal file
792
gitolite-cgit/cgit.css
Normal file
@@ -0,0 +1,792 @@
|
||||
:root {
|
||||
--background: #333;
|
||||
--text: #FFF;
|
||||
--text-hover: #60b0ff;
|
||||
--text-secundary: #333;
|
||||
--h1: #FFF;
|
||||
--h2: #FFF;
|
||||
--h3: #FFF;
|
||||
--h4: #FFF;
|
||||
--h5: #FFF;
|
||||
--h6: #FFF;
|
||||
}
|
||||
|
||||
body, table, form {
|
||||
padding: 0em;
|
||||
margin: 0em;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: sans-serif;
|
||||
font-size: 10pt;
|
||||
color: var(--text);
|
||||
background: var(--background);
|
||||
padding: 7px;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #60b0ff;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
table#header {
|
||||
width: 100%;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
|
||||
table#header td.logo {
|
||||
width: 96px;
|
||||
}
|
||||
|
||||
table#header td.main {
|
||||
text-align: left;
|
||||
font-size: 250%;
|
||||
padding-left: 10px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
table#header td.main a {
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
table#header td.form {
|
||||
text-align: left;
|
||||
vertical-align: bottom;
|
||||
padding-right: 1em;
|
||||
padding-bottom: 2px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
table#header td.form form,
|
||||
table#header td.form input,
|
||||
table#header td.form select {
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
table#header td.sub {
|
||||
color: var(--text);
|
||||
border-top: solid 1px var(--background);
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
table.tabs {
|
||||
border-bottom: solid 3px #60b0ff;
|
||||
border-collapse: collapse;
|
||||
margin-top: 2em;
|
||||
margin-bottom: 0px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table.tabs td {
|
||||
padding: 0px 1em;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
|
||||
table.tabs td a {
|
||||
padding: 2px 0.75em;
|
||||
color: var(--text);
|
||||
font-size: 110%;
|
||||
}
|
||||
|
||||
table.tabs td a.active {
|
||||
color: var(--text);
|
||||
background-color: #60b0ff;
|
||||
}
|
||||
|
||||
table.tabs td.form {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
table.tabs td.form form {
|
||||
padding-bottom: 2px;
|
||||
font-size: 90%;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
table.tabs td.form input,
|
||||
table.tabs td.form select {
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
div.path {
|
||||
margin: 0px;
|
||||
padding: 5px 2em 2px 2em;
|
||||
color: var(--text);
|
||||
background-color: #266584;
|
||||
}
|
||||
|
||||
div.content {
|
||||
margin: 0px;
|
||||
padding: 2em;
|
||||
border-bottom: solid 3px #60b0ff;
|
||||
}
|
||||
|
||||
|
||||
table.list {
|
||||
width: 100%;
|
||||
border: none;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
table.list tr {
|
||||
background: var(--background);
|
||||
}
|
||||
|
||||
table.list tr.logheader {
|
||||
background: var(--background);
|
||||
}
|
||||
|
||||
table.list tr:hover {
|
||||
background: var(--background);
|
||||
}
|
||||
|
||||
table.list tr.nohover:hover {
|
||||
background: var(--background);
|
||||
}
|
||||
|
||||
table.list th {
|
||||
font-weight: bold;
|
||||
color: var(--text);
|
||||
/*border-top: dashed 1px #888;
|
||||
border-bottom: dashed 1px #888;*/
|
||||
|
||||
padding: 0.1em 0.5em 0.05em 0.5em;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
table.list th a {
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
table.list td {
|
||||
border: none;
|
||||
padding: 0.1em 0.5em 0.1em 0.5em;
|
||||
}
|
||||
|
||||
table.list td.logsubject {
|
||||
font-family: monospace;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
table.list td.logmsg {
|
||||
font-family: monospace;
|
||||
white-space: pre;
|
||||
padding: 1em 0.5em 2em 0.5em;
|
||||
}
|
||||
|
||||
table.list td.lognotes-label {
|
||||
text-align:right;
|
||||
vertical-align:top;
|
||||
}
|
||||
|
||||
table.list td.lognotes {
|
||||
font-family: monospace;
|
||||
white-space: pre;
|
||||
padding: 0em 0.5em 2em 0.5em;
|
||||
}
|
||||
|
||||
table.list td a {
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
table.list td .decoration > a {
|
||||
color: var(--text-secundary);
|
||||
}
|
||||
|
||||
table.list td a.ls-dir {
|
||||
font-weight: bold;
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
table.list td a:hover {
|
||||
color: var(--text-hover);
|
||||
}
|
||||
|
||||
img {
|
||||
border: none;
|
||||
}
|
||||
|
||||
input#switch-btn {
|
||||
margin: 2px 0px 0px 0px;
|
||||
}
|
||||
|
||||
td#sidebar input.txt {
|
||||
width: 100%;
|
||||
margin: 2px 0px 0px 0px;
|
||||
}
|
||||
|
||||
table#grid {
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
td#content {
|
||||
vertical-align: top;
|
||||
padding: 1em 2em 1em 1em;
|
||||
border: none;
|
||||
}
|
||||
|
||||
div#summary {
|
||||
vertical-align: top;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
table#downloads {
|
||||
float: right;
|
||||
border-collapse: collapse;
|
||||
border: solid 1px #777;
|
||||
margin-left: 0.5em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
table#downloads th {
|
||||
background-color: var(--background);
|
||||
}
|
||||
|
||||
div#blob {
|
||||
border: solid 1px var(--text);
|
||||
}
|
||||
|
||||
div.error {
|
||||
color: red;
|
||||
font-weight: bold;
|
||||
margin: 1em 2em;
|
||||
}
|
||||
|
||||
a.ls-blob, a.ls-dir, a.ls-mod {
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
td.ls-size {
|
||||
text-align: right;
|
||||
font-family: monospace;
|
||||
width: 10em;
|
||||
}
|
||||
|
||||
td.ls-mode {
|
||||
font-family: monospace;
|
||||
width: 10em;
|
||||
}
|
||||
|
||||
table.blob {
|
||||
margin-top: 0.5em;
|
||||
border-top: solid 1px var(--text);
|
||||
}
|
||||
|
||||
table.blob td.lines {
|
||||
margin: 0; padding: 0 0 0 0.5em;
|
||||
vertical-align: top;
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
table.blob td.linenumbers {
|
||||
margin: 0; padding: 0 0.5em 0 0.5em;
|
||||
vertical-align: top;
|
||||
text-align: right;
|
||||
border-right: 1px solid var(--text);
|
||||
}
|
||||
|
||||
table.blob pre {
|
||||
padding: 0; margin: 0;
|
||||
}
|
||||
|
||||
table.blob a.no {
|
||||
color: var(--text);
|
||||
text-align: right;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
table.blob a.no a:hover {
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
table.bin-blob {
|
||||
margin-top: 0.5em;
|
||||
border: solid 1px var(--text);
|
||||
}
|
||||
|
||||
table.bin-blob th {
|
||||
font-family: monospace;
|
||||
white-space: pre;
|
||||
border: solid 1px var(--text);
|
||||
padding: 0.5em 1em;
|
||||
}
|
||||
|
||||
table.bin-blob td {
|
||||
font-family: monospace;
|
||||
white-space: pre;
|
||||
border-left: solid 1px var(--text);
|
||||
padding: 0em 1em;
|
||||
}
|
||||
|
||||
table.nowrap td {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
table.commit-info {
|
||||
border-collapse: collapse;
|
||||
margin-top: 1.5em;
|
||||
}
|
||||
|
||||
table.commit-info th {
|
||||
text-align: left;
|
||||
font-weight: normal;
|
||||
padding: 0.1em 1em 0.1em 0.1em;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
table.commit-info td {
|
||||
font-weight: normal;
|
||||
padding: 0.1em 1em 0.1em 0.1em;
|
||||
}
|
||||
|
||||
div.commit-subject {
|
||||
font-weight: bold;
|
||||
font-size: 125%;
|
||||
margin: 1.5em 0em 0.5em 0em;
|
||||
padding: 0em;
|
||||
}
|
||||
|
||||
div.commit-msg {
|
||||
white-space: pre;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
div.notes-header {
|
||||
font-weight: bold;
|
||||
padding-top: 1.5em;
|
||||
}
|
||||
|
||||
div.notes {
|
||||
white-space: pre;
|
||||
font-family: monospace;
|
||||
border: solid 1px #ee9;
|
||||
background-color: var(--background);
|
||||
padding: 0.3em 2em 0.3em 1em;
|
||||
float: left;
|
||||
}
|
||||
|
||||
div.notes-footer {
|
||||
clear: left;
|
||||
}
|
||||
|
||||
div.diffstat-header {
|
||||
font-weight: bold;
|
||||
padding-top: 1.5em;
|
||||
}
|
||||
|
||||
table.diffstat {
|
||||
border-collapse: collapse;
|
||||
border: solid 1px var(--text);
|
||||
background-color: var(--background);
|
||||
}
|
||||
|
||||
table.diffstat th {
|
||||
font-weight: normal;
|
||||
text-align: left;
|
||||
text-decoration: underline;
|
||||
padding: 0.1em 1em 0.1em 0.1em;
|
||||
font-size: 100%;
|
||||
}
|
||||
|
||||
table.diffstat td {
|
||||
padding: 0.2em 0.2em 0.1em 0.1em;
|
||||
font-size: 100%;
|
||||
border: none;
|
||||
}
|
||||
|
||||
table.diffstat td.mode {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
table.diffstat td span.modechange {
|
||||
padding-left: 1em;
|
||||
color: red;
|
||||
}
|
||||
|
||||
table.diffstat td.add a {
|
||||
color: green;
|
||||
}
|
||||
|
||||
table.diffstat td.del a {
|
||||
color: red;
|
||||
}
|
||||
|
||||
table.diffstat td.upd a {
|
||||
/* color: blue; */
|
||||
}
|
||||
|
||||
table.diffstat td.graph {
|
||||
width: 500px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
table.diffstat td.graph table {
|
||||
border: none;
|
||||
}
|
||||
|
||||
table.diffstat td.graph td {
|
||||
padding: 0px;
|
||||
border: 0px;
|
||||
height: 7pt;
|
||||
}
|
||||
|
||||
table.diffstat td.graph td.add {
|
||||
background-color: #5c5;
|
||||
}
|
||||
|
||||
table.diffstat td.graph td.rem {
|
||||
background-color: #c55;
|
||||
}
|
||||
|
||||
div.diffstat-summary {
|
||||
color: var(--text);
|
||||
padding-top: 0.5em;
|
||||
}
|
||||
|
||||
table.diff {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table.diff td {
|
||||
font-family: monospace;
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
table.diff td div.head {
|
||||
font-weight: bold;
|
||||
margin-top: 1em;
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
table.diff td div.hunk {
|
||||
color: #6CC;
|
||||
}
|
||||
|
||||
table.diff td div.add {
|
||||
color: #2bb34b;
|
||||
}
|
||||
|
||||
table.diff td div.del {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.sha1 {
|
||||
font-family: monospace;
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
table.list td.reposection {
|
||||
font-style: italic;
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
a.button {
|
||||
font-size: 80%;
|
||||
padding: 0em 0.5em;
|
||||
}
|
||||
|
||||
a.primary {
|
||||
font-size: 100%;
|
||||
}
|
||||
|
||||
a.secondary {
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
td.toplevel-repo {
|
||||
|
||||
}
|
||||
|
||||
table.list td.sublevel-repo {
|
||||
padding-left: 1.5em;
|
||||
}
|
||||
|
||||
div.pager {
|
||||
text-align: center;
|
||||
margin: 1em 0em 0em 0em;
|
||||
}
|
||||
|
||||
div.pager a {
|
||||
color: var(--text);
|
||||
margin: 0em 0.5em;
|
||||
}
|
||||
|
||||
span.age-mins {
|
||||
font-weight: bold;
|
||||
color: #0c0;
|
||||
}
|
||||
|
||||
span.age-hours {
|
||||
color: #0c0;
|
||||
}
|
||||
|
||||
span.age-days {
|
||||
color: #080;
|
||||
}
|
||||
|
||||
span.age-weeks {
|
||||
color: #bbb;
|
||||
}
|
||||
|
||||
span.age-months {
|
||||
color: #888;
|
||||
}
|
||||
|
||||
span.age-years {
|
||||
color: #666;
|
||||
}
|
||||
div.footer {
|
||||
margin-top: 0.5em;
|
||||
text-align: center;
|
||||
font-size: 80%;
|
||||
color: #ccc;
|
||||
}
|
||||
table.list td a.branch-deco {
|
||||
color: var(--text-secundary);
|
||||
}
|
||||
.decoration a.branch-deco {
|
||||
color: #444;
|
||||
}
|
||||
.decoration a.deco {
|
||||
color: var(--text);
|
||||
}
|
||||
a.branch-deco {
|
||||
margin: 0px 0.5em;
|
||||
padding: 0px 0.25em;
|
||||
background-color: #00ff00;
|
||||
border: solid 1px #00ff00;
|
||||
}
|
||||
table.list td a.tag-deco {
|
||||
color: var(--text);
|
||||
}
|
||||
a.tag-annotated-deco {
|
||||
margin: 0px 0.5em;
|
||||
padding: 0px 0.25em;
|
||||
background-color: #ffff00;
|
||||
border: solid 1px #ffff00;
|
||||
}
|
||||
|
||||
a.tag-deco {
|
||||
margin: 0px 0.5em;
|
||||
padding: 0px 0.25em;
|
||||
background-color: #ffff00;
|
||||
border: solid 1px #ffff00;
|
||||
}
|
||||
table.list td a.remote-deco {
|
||||
color: var(--text);
|
||||
}
|
||||
a.remote-deco {
|
||||
margin: 0px 0.5em;
|
||||
padding: 0px 0.25em;
|
||||
background-color: #0000ff;
|
||||
border: solid 1px #0000ff;
|
||||
}
|
||||
table.list td a.deco {
|
||||
color: var(--text);
|
||||
}
|
||||
a.deco {
|
||||
margin: 0px 0.5em;
|
||||
padding: 0px 0.25em;
|
||||
background-color: #ff0000;
|
||||
border: solid 1px #ff0000;
|
||||
}
|
||||
|
||||
div.commit-subject a.branch-deco,
|
||||
div.commit-subject a.tag-deco,
|
||||
div.commit-subject a.remote-deco,
|
||||
div.commit-subject a.deco {
|
||||
margin-left: 1em;
|
||||
font-size: 75%;
|
||||
}
|
||||
|
||||
table.stats {
|
||||
border: solid 1px var(--text);
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
table.stats th {
|
||||
text-align: left;
|
||||
padding: 1px 0.5em;
|
||||
background-color: #555;
|
||||
border: solid 1px var(--text);
|
||||
}
|
||||
|
||||
table.stats td {
|
||||
text-align: right;
|
||||
padding: 1px 0.5em;
|
||||
border: solid 1px var(--text);
|
||||
}
|
||||
|
||||
table.stats td.total {
|
||||
font-weight: bold;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
table.stats td.sum {
|
||||
color: #c00;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
table.stats td.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
table.vgraph {
|
||||
border-collapse: separate;
|
||||
border: solid 1px var(--text);
|
||||
height: 200px;
|
||||
}
|
||||
|
||||
table.vgraph th {
|
||||
background-color: var(--background);
|
||||
font-weight: bold;
|
||||
border: solid 1px var(--text);
|
||||
padding: 1px 0.5em;
|
||||
}
|
||||
|
||||
table.vgraph td {
|
||||
vertical-align: bottom;
|
||||
padding: 0px 10px;
|
||||
}
|
||||
|
||||
table.vgraph div.bar {
|
||||
background-color: var(--background);
|
||||
}
|
||||
|
||||
table.hgraph {
|
||||
border: solid 1px var(--text);
|
||||
width: 800px;
|
||||
}
|
||||
|
||||
table.hgraph th {
|
||||
background-color: #eee;
|
||||
font-weight: bold;
|
||||
border: solid 1px var(--text);
|
||||
padding: 1px 0.5em;
|
||||
}
|
||||
|
||||
table.hgraph td {
|
||||
vertical-align: center;
|
||||
padding: 2px 2px;
|
||||
}
|
||||
|
||||
table.hgraph div.bar {
|
||||
background-color: var(--background);
|
||||
height: 1em;
|
||||
}
|
||||
|
||||
table.ssdiff {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table.ssdiff td {
|
||||
font-size: 75%;
|
||||
font-family: monospace;
|
||||
white-space: pre;
|
||||
padding: 1px 4px 1px 4px;
|
||||
border-left: solid 1px #aaa;
|
||||
border-right: solid 1px #aaa;
|
||||
}
|
||||
|
||||
table.ssdiff td.add {
|
||||
color: var(--text);
|
||||
background: #cfc;
|
||||
min-width: 50%;
|
||||
}
|
||||
|
||||
table.ssdiff td.add_dark {
|
||||
color: var(--text);
|
||||
background: #aca;
|
||||
min-width: 50%;
|
||||
}
|
||||
|
||||
table.ssdiff span.add {
|
||||
background: #cfc;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
table.ssdiff td.del {
|
||||
color: var(--text);
|
||||
background: #fcc;
|
||||
min-width: 50%;
|
||||
}
|
||||
|
||||
table.ssdiff td.del_dark {
|
||||
color: var(--text);
|
||||
background: #caa;
|
||||
min-width: 50%;
|
||||
}
|
||||
|
||||
table.ssdiff span.del {
|
||||
background: #fcc;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
table.ssdiff td.changed {
|
||||
color: var(--text);
|
||||
background: #ffc;
|
||||
min-width: 50%;
|
||||
}
|
||||
|
||||
table.ssdiff td.changed_dark {
|
||||
color: var(--text);
|
||||
background: #cca;
|
||||
min-width: 50%;
|
||||
}
|
||||
|
||||
table.ssdiff td.lineno {
|
||||
color: var(--text);
|
||||
background: #eee;
|
||||
text-align: right;
|
||||
width: 3em;
|
||||
min-width: 3em;
|
||||
}
|
||||
|
||||
table.ssdiff td.hunk {
|
||||
color: var(--text);
|
||||
background: #ccf;
|
||||
border-top: solid 1px #aaa;
|
||||
border-bottom: solid 1px #aaa;
|
||||
}
|
||||
|
||||
table.ssdiff td.head {
|
||||
border-top: solid 1px #aaa;
|
||||
border-bottom: solid 1px #aaa;
|
||||
}
|
||||
|
||||
table.ssdiff td.head div.head {
|
||||
font-weight: bold;
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
table.ssdiff td.foot {
|
||||
border-top: solid 1px #aaa;
|
||||
border-left: none;
|
||||
border-right: none;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
table.ssdiff td.space {
|
||||
border: none;
|
||||
}
|
||||
|
||||
table.ssdiff td.space div {
|
||||
min-height: 3em;
|
||||
}
|
||||
|
||||
178
gitolite-cgit/entrypoint.sh
Executable file
178
gitolite-cgit/entrypoint.sh
Executable file
@@ -0,0 +1,178 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Validate environment variables
|
||||
|
||||
# Create ssh host key if not present
|
||||
if [ ! -f /etc/ssh/ssh_host_rsa_key ]; then
|
||||
ssh-keygen -A
|
||||
fi
|
||||
|
||||
# Setup gitolite at volume /var/lib/git
|
||||
if [ ! -f "/var/lib/git/.ssh/authorized_keys" ]; then
|
||||
# Configure gitolite
|
||||
echo "$SSH_KEY" > "/tmp/$SSH_KEY_NAME.pub"
|
||||
su git -c "gitolite setup -pk \"/tmp/$SSH_KEY_NAME.pub\""
|
||||
rm "/tmp/$SSH_KEY_NAME.pub"
|
||||
fi
|
||||
|
||||
# Init container
|
||||
if [ ! -f /etc/nginx/conf.d/cgit.conf ]; then
|
||||
# enable random git password
|
||||
GIT_PASSWORD=$(date +%s | sha256sum | base64 | head -c 32)
|
||||
echo "git:$GIT_PASSWORD" | chpasswd
|
||||
|
||||
# add web user (nginx) to gitolite group (git)
|
||||
adduser nginx git
|
||||
|
||||
## Config cgit interface
|
||||
cat > /etc/cgitrc <<- EOF
|
||||
# Use a virtual-root
|
||||
virtual-root=/
|
||||
|
||||
# Enable caching of up to 1000 output entries
|
||||
cache-size=1000
|
||||
|
||||
# Specify the css url
|
||||
css=/cgit.css
|
||||
|
||||
# Show extra links for each repository on the index page
|
||||
enable-index-links=1
|
||||
|
||||
# Enable ASCII art commit history graph on the log pages
|
||||
enable-commit-graph=1
|
||||
|
||||
# Show number of affected files per commit on the log pages
|
||||
enable-log-filecount=1
|
||||
|
||||
# Show number of added/removed lines per commit on the log pages
|
||||
enable-log-linecount=1
|
||||
|
||||
# Use a custom logo
|
||||
logo=/cgit.png
|
||||
|
||||
# Enable statistics per week, month and quarter
|
||||
max-stats=quarter
|
||||
|
||||
##
|
||||
## List of common mimetypes
|
||||
##
|
||||
|
||||
mimetype.gif=image/gif
|
||||
mimetype.html=text/html
|
||||
mimetype.jpg=image/jpeg
|
||||
mimetype.jpeg=image/jpeg
|
||||
mimetype.pdf=application/pdf
|
||||
mimetype.png=image/png
|
||||
mimetype.svg=image/svg+xml
|
||||
|
||||
# Enable syntax highlighting and about formatting
|
||||
source-filter=/usr/lib/cgit/filters/syntax-highlighting.py
|
||||
about-filter=/usr/lib/cgit/filters/about-formatting.sh
|
||||
|
||||
##
|
||||
## List of common readmes
|
||||
##
|
||||
readme=:README.md
|
||||
readme=:readme.md
|
||||
readme=:README.mkd
|
||||
readme=:readme.mkd
|
||||
readme=:README.rst
|
||||
readme=:readme.rst
|
||||
readme=:README.html
|
||||
readme=:readme.html
|
||||
readme=:README.htm
|
||||
readme=:readme.htm
|
||||
readme=:README.txt
|
||||
readme=:readme.txt
|
||||
readme=:README
|
||||
readme=:readme
|
||||
readme=:INSTALL.md
|
||||
readme=:install.md
|
||||
readme=:INSTALL.mkd
|
||||
readme=:install.mkd
|
||||
readme=:INSTALL.rst
|
||||
readme=:install.rst
|
||||
readme=:INSTALL.html
|
||||
readme=:install.html
|
||||
readme=:INSTALL.htm
|
||||
readme=:install.htm
|
||||
readme=:INSTALL.txt
|
||||
readme=:install.txt
|
||||
readme=:INSTALL
|
||||
readme=:install
|
||||
|
||||
# Direct cgit to repository location managed by gitolite
|
||||
remove-suffix=0
|
||||
project-list=/var/lib/git/projects.list
|
||||
section-from-path=3
|
||||
scan-path=/var/lib/git/repositories
|
||||
EOF
|
||||
|
||||
# Append clone-prefix
|
||||
if [[ ! -z "$CGIT_CLONE_PREFIX" ]]; then
|
||||
echo "# Specify some default clone prefixes" >> /etc/cgitrc
|
||||
echo "clone-prefix=$CGIT_CLONE_PREFIX" >> /etc/cgitrc
|
||||
fi
|
||||
|
||||
if [[ ! -z "$CGIT_ROOT_TITLE" ]]; then
|
||||
echo "# Set the title and heading of the repository index page" >> /etc/cgitrc
|
||||
echo "root-title=$CGIT_ROOT_TITLE" >> /etc/cgitrc
|
||||
fi
|
||||
|
||||
if [[ ! -z "$CGIT_DESC" ]]; then
|
||||
echo "# Set description repository" >> /etc/cgitrc
|
||||
echo "root-desc=$CGIT_DESC" >> /etc/cgitrc
|
||||
fi
|
||||
|
||||
if [[ ! -z "$CGIT_SNAPSHOT" ]]; then
|
||||
echo "# Allow download of tar.gz, tar.bz2, and tar.xz formats" >> /etc/cgitrc
|
||||
echo "snapshots=$CGIT_SNAPSHOT" >> /etc/cgitrc
|
||||
fi
|
||||
|
||||
# Using highlight syntax
|
||||
#sed -i.bak \
|
||||
# -e "s#exec highlight --force -f -I -X -S #\#&#g" \
|
||||
# -e "s#\#exec highlight --force -f -I -O xhtml#exec highlight --force --inline-css -f -I -O xhtml#g" \
|
||||
# /usr/lib/cgit/filters/syntax-highlighting.sh
|
||||
|
||||
# Nginx configuration
|
||||
rm /etc/nginx/conf.d/default.conf
|
||||
|
||||
cat > /etc/nginx/conf.d/cgit.conf <<- EOF
|
||||
server {
|
||||
listen 80 default_server;
|
||||
server_name localhost;
|
||||
|
||||
root /usr/share/webapps/cgit;
|
||||
try_files \$uri @cgit;
|
||||
|
||||
location ~* ^.+\.(css|png|ico)$ {
|
||||
expires 30d;
|
||||
}
|
||||
|
||||
location / {
|
||||
index cgit.cgi;
|
||||
fastcgi_param SCRIPT_FILENAME \$document_root/cgit.cgi;
|
||||
fastcgi_pass unix:/run/fcgiwrap/fcgiwrap.socket;
|
||||
fastcgi_param HTTP_HOST \$server_name;
|
||||
fastcgi_param PATH_INFO \$uri;
|
||||
fastcgi_param QUERY_INFO \$uri;
|
||||
include "fastcgi_params";
|
||||
}
|
||||
}
|
||||
EOF
|
||||
|
||||
fi
|
||||
|
||||
# Start sshd as detach, log to stderr (-e)
|
||||
/usr/sbin/sshd -e
|
||||
|
||||
# launch fcgiwrap via spawn-fcgi, port 1234
|
||||
spawn-fcgi -s /run/fcgiwrap/fcgiwrap.socket -f /usr/bin/fcgiwrap
|
||||
chmod 660 /run/fcgiwrap/fcgiwrap.socket
|
||||
|
||||
# Start git-daemon
|
||||
git daemon --detach --reuseaddr --base-path=/var/lib/git/repositories /var/lib/git/repositories
|
||||
|
||||
# Start nginx
|
||||
exec nginx -g "daemon off;"
|
||||
Reference in New Issue
Block a user