mirror of
https://github.com/pawelmalak/flame.git
synced 2025-07-19 11:39:36 +02:00
Build multiarch and maintenance fixes (#19)
* add multiarch build and push to CI * various maintenance fixes * fix github actions steps outputs
This commit is contained in:
parent
b02329d9a0
commit
40cade8f74
9 changed files with 14792 additions and 19060 deletions
|
@ -1,4 +1,6 @@
|
||||||
FROM node:16 as builder
|
FROM node:16-alpine3.11 as builder
|
||||||
|
|
||||||
|
RUN apk --no-cache --virtual build-dependencies add python python3 make g++
|
||||||
|
|
||||||
# Get package.json and install modules
|
# Get package.json and install modules
|
||||||
COPY package*.json /tmp/package.json
|
COPY package*.json /tmp/package.json
|
||||||
|
@ -21,7 +23,7 @@ RUN mkdir -p ./public ./data \
|
||||||
&& mv ./client/build/* ./public \
|
&& mv ./client/build/* ./public \
|
||||||
&& rm -rf ./client
|
&& rm -rf ./client
|
||||||
|
|
||||||
FROM node:16-alpine
|
FROM node:16-alpine3.11
|
||||||
|
|
||||||
COPY --from=builder /app /app
|
COPY --from=builder /app /app
|
||||||
|
|
||||||
|
|
27
.github/workflows/docker-image.yml
vendored
27
.github/workflows/docker-image.yml
vendored
|
@ -10,7 +10,7 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- name: Get current date
|
- name: Get current date
|
||||||
id: date
|
id: date
|
||||||
run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
|
run: echo "date=$(date +'%Y-%m-%d')" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
- name: Check out the repo
|
- name: Check out the repo
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
@ -25,7 +25,19 @@ jobs:
|
||||||
fi
|
fi
|
||||||
TAGS="${DOCKER_IMAGE}:${VERSION},${DOCKER_IMAGE}:${{ steps.date.outputs.date }}"
|
TAGS="${DOCKER_IMAGE}:${VERSION},${DOCKER_IMAGE}:${{ steps.date.outputs.date }}"
|
||||||
echo ${TAGS}
|
echo ${TAGS}
|
||||||
echo ::set-output name=tags::${TAGS}
|
echo "tags=${TAGS}" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
- name: Prepare-multiarch
|
||||||
|
id: prep-multiarch
|
||||||
|
run: |
|
||||||
|
DOCKER_IMAGE=ghcr.io/${{ github.repository }}
|
||||||
|
VERSION=multiarch
|
||||||
|
if [[ '${{ github.head_ref }}' != '' ]]; then
|
||||||
|
VERSION=${{github.head_ref}}
|
||||||
|
fi
|
||||||
|
TAGS="${DOCKER_IMAGE}:${VERSION}-multiarch,${DOCKER_IMAGE}:${{ steps.date.outputs.date }}-multiarch"
|
||||||
|
echo ${TAGS}
|
||||||
|
echo "tags-multiarch=${TAGS}" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v1
|
uses: docker/setup-qemu-action@v1
|
||||||
|
@ -44,6 +56,15 @@ jobs:
|
||||||
uses: docker/build-push-action@v2
|
uses: docker/build-push-action@v2
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
file: ./.docker/Dockerfile.multiarch
|
file: ./.docker/Dockerfile
|
||||||
push: true
|
push: true
|
||||||
tags: ${{ steps.prep.outputs.tags }}
|
tags: ${{ steps.prep.outputs.tags }}
|
||||||
|
|
||||||
|
- name: Push multiarch to GitHub Packages
|
||||||
|
uses: docker/build-push-action@v2
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: ./.docker/Dockerfile
|
||||||
|
platforms: linux/amd64,linux/arm/v7,linux/arm64
|
||||||
|
push: true
|
||||||
|
tags: ${{ steps.prep-multiarch.outputs.tags-multiarch }}
|
||||||
|
|
26085
client/package-lock.json
generated
26085
client/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -24,7 +24,7 @@
|
||||||
"react-dom": "^17.0.2",
|
"react-dom": "^17.0.2",
|
||||||
"react-redux": "^7.2.6",
|
"react-redux": "^7.2.6",
|
||||||
"react-router-dom": "^5.2.0",
|
"react-router-dom": "^5.2.0",
|
||||||
"react-scripts": "4.0.3",
|
"react-scripts": "5.0.1",
|
||||||
"redux": "^4.1.2",
|
"redux": "^4.1.2",
|
||||||
"redux-devtools-extension": "^2.13.9",
|
"redux-devtools-extension": "^2.13.9",
|
||||||
"redux-thunk": "^2.4.0",
|
"redux-thunk": "^2.4.0",
|
||||||
|
|
|
@ -6,7 +6,7 @@ import { GeneralForm, Query } from '../../../interfaces';
|
||||||
import { actionCreators } from '../../../store';
|
import { actionCreators } from '../../../store';
|
||||||
import { State } from '../../../store/reducers';
|
import { State } from '../../../store/reducers';
|
||||||
import { generalSettingsTemplate, inputHandler } from '../../../utility';
|
import { generalSettingsTemplate, inputHandler } from '../../../utility';
|
||||||
import { queries } from '../../../utility/searchQueries.json';
|
import searchQueries from '../../../utility/searchQueries.json';
|
||||||
import { Button, InputGroup, SettingsHeadline } from '../../UI';
|
import { Button, InputGroup, SettingsHeadline } from '../../UI';
|
||||||
import { CustomQueries } from './CustomQueries/CustomQueries';
|
import { CustomQueries } from './CustomQueries/CustomQueries';
|
||||||
|
|
||||||
|
@ -166,8 +166,8 @@ export const GeneralSettings = (): JSX.Element => {
|
||||||
value={formData.defaultSearchProvider}
|
value={formData.defaultSearchProvider}
|
||||||
onChange={(e) => inputChangeHandler(e)}
|
onChange={(e) => inputChangeHandler(e)}
|
||||||
>
|
>
|
||||||
{[...queries, ...customQueries].map((query: Query, idx) => {
|
{[...searchQueries.queries, ...customQueries].map((query: Query, idx) => {
|
||||||
const isCustom = idx >= queries.length;
|
const isCustom = idx >= searchQueries.queries.length;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<option key={idx} value={query.prefix}>
|
<option key={idx} value={query.prefix}>
|
||||||
|
@ -189,8 +189,8 @@ export const GeneralSettings = (): JSX.Element => {
|
||||||
value={formData.secondarySearchProvider}
|
value={formData.secondarySearchProvider}
|
||||||
onChange={(e) => inputChangeHandler(e)}
|
onChange={(e) => inputChangeHandler(e)}
|
||||||
>
|
>
|
||||||
{[...queries, ...customQueries].map((query: Query, idx) => {
|
{[...searchQueries.queries, ...customQueries].map((query: Query, idx) => {
|
||||||
const isCustom = idx >= queries.length;
|
const isCustom = idx >= searchQueries.queries.length;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<option key={idx} value={query.prefix}>
|
<option key={idx} value={query.prefix}>
|
||||||
|
|
|
@ -1,35 +1,30 @@
|
||||||
import { NavLink, Link, Switch, Route } from 'react-router-dom';
|
import { useSelector } from 'react-redux';
|
||||||
|
import { Link, NavLink, Route, Switch } from 'react-router-dom';
|
||||||
|
|
||||||
|
import { Route as SettingsRoute } from '../../interfaces';
|
||||||
|
import { State } from '../../store/reducers';
|
||||||
|
import { ProtectedRoute } from '../Routing/ProtectedRoute';
|
||||||
|
import { Container, Headline } from '../UI';
|
||||||
|
import { AppDetails } from './AppDetails/AppDetails';
|
||||||
|
import { DockerSettings } from './DockerSettings/DockerSettings';
|
||||||
|
import { GeneralSettings } from './GeneralSettings/GeneralSettings';
|
||||||
|
import settings from './settings.json';
|
||||||
|
import classes from './Settings.module.css';
|
||||||
|
import { StyleSettings } from './StyleSettings/StyleSettings';
|
||||||
|
import { Themer } from './Themer/Themer';
|
||||||
|
import { UISettings } from './UISettings/UISettings';
|
||||||
|
import { WeatherSettings } from './WeatherSettings/WeatherSettings';
|
||||||
|
|
||||||
// Redux
|
// Redux
|
||||||
import { useSelector } from 'react-redux';
|
|
||||||
import { State } from '../../store/reducers';
|
|
||||||
|
|
||||||
// Typescript
|
// Typescript
|
||||||
import { Route as SettingsRoute } from '../../interfaces';
|
|
||||||
|
|
||||||
// CSS
|
// CSS
|
||||||
import classes from './Settings.module.css';
|
|
||||||
|
|
||||||
// Components
|
// Components
|
||||||
import { Themer } from './Themer/Themer';
|
|
||||||
import { WeatherSettings } from './WeatherSettings/WeatherSettings';
|
|
||||||
import { UISettings } from './UISettings/UISettings';
|
|
||||||
import { AppDetails } from './AppDetails/AppDetails';
|
|
||||||
import { StyleSettings } from './StyleSettings/StyleSettings';
|
|
||||||
import { GeneralSettings } from './GeneralSettings/GeneralSettings';
|
|
||||||
import { DockerSettings } from './DockerSettings/DockerSettings';
|
|
||||||
import { ProtectedRoute } from '../Routing/ProtectedRoute';
|
|
||||||
|
|
||||||
// UI
|
// UI
|
||||||
import { Container, Headline } from '../UI';
|
|
||||||
|
|
||||||
// Data
|
// Data
|
||||||
import { routes } from './settings.json';
|
|
||||||
|
|
||||||
export const Settings = (): JSX.Element => {
|
export const Settings = (): JSX.Element => {
|
||||||
const { isAuthenticated } = useSelector((state: State) => state.auth);
|
const { isAuthenticated } = useSelector((state: State) => state.auth);
|
||||||
|
|
||||||
const tabs = isAuthenticated ? routes : routes.filter((r) => !r.authRequired);
|
const tabs = isAuthenticated ? settings.routes : settings.routes.filter((r) => !r.authRequired);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Container>
|
<Container>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
const classes = require('./SettingsHeadline.module.css');
|
import classes from './SettingsHeadline.module.css';
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
text: string;
|
text: string;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { queries } from './searchQueries.json';
|
import { isUrlOrIp } from '.';
|
||||||
import { SearchResult } from '../interfaces';
|
import { SearchResult } from '../interfaces';
|
||||||
import { store } from '../store/store';
|
import { store } from '../store/store';
|
||||||
import { isUrlOrIp } from '.';
|
import searchQueries from './searchQueries.json';
|
||||||
|
|
||||||
export const searchParser = (searchQuery: string): SearchResult => {
|
export const searchParser = (searchQuery: string): SearchResult => {
|
||||||
const result: SearchResult = {
|
const result: SearchResult = {
|
||||||
|
@ -40,7 +40,7 @@ export const searchParser = (searchQuery: string): SearchResult => {
|
||||||
|
|
||||||
// Find primary search engine template
|
// Find primary search engine template
|
||||||
const findProvider = (prefix: string) => {
|
const findProvider = (prefix: string) => {
|
||||||
return [...queries, ...customQueries].find((q) => q.prefix === prefix);
|
return [...searchQueries.queries, ...customQueries].find((q) => q.prefix === prefix);
|
||||||
};
|
};
|
||||||
|
|
||||||
const primarySearch = findProvider(prefix);
|
const primarySearch = findProvider(prefix);
|
||||||
|
|
6909
package-lock.json
generated
6909
package-lock.json
generated
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue