Compare commits
6 Commits
sass-upgrade
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 402f53056c | |||
| 3ad97b8b5e | |||
| 872d05154c | |||
| 457231a14d | |||
| 2ad0fc902b | |||
| 8464a206dc |
@@ -0,0 +1,34 @@
|
|||||||
|
name: Build and Push Masto Image
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Generate timestamp
|
||||||
|
id: vars
|
||||||
|
run: echo "TAG=$(date +%Y%m%d-%H%M)" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Login to Docker Hub
|
||||||
|
run: |
|
||||||
|
echo "${{ secrets.DOCKER_PASSWORD }}" | docker login \
|
||||||
|
-u "${{ secrets.DOCKER_USERNAME }}" \
|
||||||
|
--password-stdin
|
||||||
|
|
||||||
|
- name: Build image
|
||||||
|
run: |
|
||||||
|
docker build \
|
||||||
|
-t domoel/masto:latest \
|
||||||
|
-t domoel/masto:${TAG} \
|
||||||
|
.
|
||||||
|
|
||||||
|
- name: Push image
|
||||||
|
run: |
|
||||||
|
docker push domoel/masto:latest
|
||||||
|
docker push domoel/masto:${TAG}
|
||||||
+12
-8
@@ -1,12 +1,16 @@
|
|||||||
### BUILDER IMAGE ###
|
### BUILDER IMAGE ###
|
||||||
FROM docker.io/superseriousbusiness/masto-fe-standalone-woodpecker-build:0.1.0 AS builder
|
FROM docker.io/superseriousbusiness/masto-fe-standalone-woodpecker-build:0.1.0 AS builder
|
||||||
|
|
||||||
# Prepare the build directory, copy
|
|
||||||
# relevant source + config files over.
|
|
||||||
WORKDIR /build
|
WORKDIR /build
|
||||||
|
|
||||||
|
USER root
|
||||||
|
RUN mkdir -p /build/.yarn && chown -R node:node /build
|
||||||
|
USER node
|
||||||
|
|
||||||
COPY --chown=node:node app /build/app
|
COPY --chown=node:node app /build/app
|
||||||
COPY --chown=node:node config /build/config
|
COPY --chown=node:node config /build/config
|
||||||
COPY --chown=node:node public /build/public
|
COPY --chown=node:node public /build/public
|
||||||
|
|
||||||
COPY --chown=node:node \
|
COPY --chown=node:node \
|
||||||
.browserslistrc \
|
.browserslistrc \
|
||||||
babel.config.js \
|
babel.config.js \
|
||||||
@@ -16,19 +20,19 @@ COPY --chown=node:node \
|
|||||||
yarn.lock \
|
yarn.lock \
|
||||||
/build/
|
/build/
|
||||||
|
|
||||||
# Create a production build of the frontend.
|
|
||||||
RUN yarn && yarn build:production
|
RUN yarn && yarn build:production
|
||||||
|
|
||||||
### RUNTIME IMAGE ###
|
|
||||||
FROM nginx:alpine AS runtime
|
|
||||||
|
|
||||||
# Copy bigger nested stuff.
|
### RUNTIME IMAGE ###
|
||||||
|
FROM docker.io/nginx:alpine AS runtime
|
||||||
|
|
||||||
COPY --from=builder /build/public/packs/js/flavours/glitch /usr/share/nginx/html/packs/js/flavours/glitch
|
COPY --from=builder /build/public/packs/js/flavours/glitch /usr/share/nginx/html/packs/js/flavours/glitch
|
||||||
COPY --from=builder /build/public/packs/js/flavours/vanilla /usr/share/nginx/html/packs/js/flavours/vanilla
|
COPY --from=builder /build/public/packs/js/flavours/vanilla /usr/share/nginx/html/packs/js/flavours/vanilla
|
||||||
|
|
||||||
# Copy remaining files.
|
|
||||||
COPY --from=builder /build/public /usr/share/nginx/html/
|
COPY --from=builder /build/public /usr/share/nginx/html/
|
||||||
|
|
||||||
# Set up nginx.
|
|
||||||
COPY nginx.conf /etc/nginx/nginx.conf
|
COPY nginx.conf /etc/nginx/nginx.conf
|
||||||
|
|
||||||
EXPOSE 80
|
EXPOSE 80
|
||||||
|
|
||||||
|
CMD ["nginx", "-g", "daemon off;"]
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
@import 'reset';
|
@import 'reset';
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
--color-bg: #191b22;
|
--color-bg: #1e1f29;
|
||||||
--color-fg: #fff;
|
--color-fg: #f7f7fa;
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
@@ -64,29 +64,29 @@ form {
|
|||||||
|
|
||||||
:focus-visible,
|
:focus-visible,
|
||||||
button:focus-visible {
|
button:focus-visible {
|
||||||
outline: 2px solid #66befe;
|
outline: 2px solid #bd93f9;
|
||||||
outline-offset: 3px;
|
outline-offset: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
button {
|
button {
|
||||||
padding: 7px 10px;
|
padding: 7px 10px;
|
||||||
border: 1px solid lighten(#66befe, 7%);
|
border: 1px solid lighten(#bd93f9, 7%);
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
color: #2a2b2f;
|
color: #1e1f29;
|
||||||
font-family: inherit;
|
font-family: inherit;
|
||||||
font-size: inherit;
|
font-size: inherit;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
background-color: #66befe;
|
background-color: #1e1f29;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: #89caff;
|
background-color: #bd93f9;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:disabled {
|
&:disabled {
|
||||||
background-color: #9baec8;
|
background-color: #CEBBED;
|
||||||
cursor: default;
|
cursor: default;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -95,28 +95,28 @@ input[type='text'] {
|
|||||||
display: block;
|
display: block;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
border: 1px solid lighten(#282c37, 7%);
|
border: 1px solid lighten(#1e1f29, 7%);
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
color: #9baec8;
|
color: #CEBBED;
|
||||||
font-family: inherit;
|
font-family: inherit;
|
||||||
font-size: inherit;
|
font-size: inherit;
|
||||||
line-height: 18px;
|
line-height: 18px;
|
||||||
background: #282c37;
|
background: #1e1f29;
|
||||||
}
|
}
|
||||||
|
|
||||||
.content {
|
.content {
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
border: 1px solid lighten(#39404f, 7%);
|
border: 1px solid lighten(#2f313d, 7%);
|
||||||
color: #fff;
|
color: #fff;
|
||||||
background-color: #39404f;
|
background-color: #2f313d;
|
||||||
}
|
}
|
||||||
|
|
||||||
.link-footer {
|
.link-footer {
|
||||||
padding-inline: 10px;
|
padding-inline: 10px;
|
||||||
color: #97a8b4;
|
color: var(--color-fg);
|
||||||
font-size: 0.875rem;
|
font-size: 0.875rem;
|
||||||
|
|
||||||
a {
|
a {
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 2.9 KiB |
+7
-8
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<title>Login | Masto-FE (🦥 flavour)</title>
|
<title>Zeitfresser Mastodon Frontend</title>
|
||||||
<meta content="width=device-width, initial-scale=1" name="viewport">
|
<meta content="width=device-width, initial-scale=1" name="viewport">
|
||||||
<link rel="stylesheet" media="all" href="/packs/css/flavours/glitch/login.css" />
|
<link rel="stylesheet" media="all" href="/packs/css/flavours/glitch/login.css" />
|
||||||
<script src="/auth.js"></script>
|
<script src="/auth.js"></script>
|
||||||
@@ -12,10 +12,10 @@
|
|||||||
<body class="app-body">
|
<body class="app-body">
|
||||||
<div class="login-container">
|
<div class="login-container">
|
||||||
<header>
|
<header>
|
||||||
<img alt="a friendly smiling sloth" src="images/mascot.svg" />
|
<img alt="a friendly smiling sloth" src="images/logo.avif" />
|
||||||
</header>
|
</header>
|
||||||
<main>
|
<main>
|
||||||
<h1>Log into your instance</h1>
|
<h1>Zeitfresser Mastodon Frontend</h1>
|
||||||
<form method="post" id="login">
|
<form method="post" id="login">
|
||||||
<label for="instance">Instance URL</label>
|
<label for="instance">Instance URL</label>
|
||||||
<input type="text" id="instance" value="" class="input instance">
|
<input type="text" id="instance" value="" class="input instance">
|
||||||
@@ -25,17 +25,16 @@
|
|||||||
</form>
|
</form>
|
||||||
<aside class="content">
|
<aside class="content">
|
||||||
<p>
|
<p>
|
||||||
<strong>Note:</strong>
|
Zeitfresser Mastodon is a client-sided web frontend to run Mastodon or GoToSocial server backends on your machine
|
||||||
this application is completely client-side, meaning everything happens in the browser on your machine.
|
|
||||||
It does not store information anywhere else than your browser's local storage.
|
It does not store information anywhere else than your browser's local storage.
|
||||||
</p>
|
</p>
|
||||||
</aside>
|
</aside>
|
||||||
</main>
|
</main>
|
||||||
<footer class="link-footer">
|
<footer class="link-footer">
|
||||||
<p>
|
<p>
|
||||||
<strong>Masto-FE (🦥 flavour)</strong>
|
<strong>Zeitfresser Mastodon Frontend</strong>
|
||||||
<span aria-hidden="true"> · </span>
|
<span aria-hidden="true"> · </span>
|
||||||
<a href="https://codeberg.org/superseriousbusiness/masto-fe-standalone" rel="noopener noreferrer" target="_blank">
|
<a href="https://git.ztfr.eu/Dome/Masto" rel="noopener noreferrer" target="_blank">
|
||||||
Source code
|
Source code
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
@@ -43,4 +42,4 @@
|
|||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Reference in New Issue
Block a user