3 Commits

Author SHA1 Message Date
4521ca2090 Specify python version 2022-05-14 08:14:38 +01:00
74e49ddde7 Add build requirements for node-gyp 2022-05-14 08:12:20 +01:00
f42e10156e Change base to use alpine 2022-05-14 08:09:01 +01:00
17 changed files with 1079 additions and 5635 deletions

View File

@@ -4,3 +4,7 @@ updates:
directory: "/" directory: "/"
schedule: schedule:
interval: "daily" interval: "daily"
- package-ecosystem: 'npm'
directory: '/'
schedule:
interval: 'daily'

View File

@@ -3,81 +3,73 @@ name: Docker Build
on: on:
push: push:
branches: branches:
- main # Set a branch to deploy - main
env: env:
IMAGE_REGISTRY: ghcr.io IMAGE_REGISTRY: ghcr.io
TOKEN_USER: HotaruBlaze
IMAGE_OWNER: fluttershub IMAGE_OWNER: fluttershub
IMAGE_NAME: homepage IMAGE_NAME: homepage
jobs: jobs:
Build_x86: BuildImage:
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy:
matrix:
CPU_ARCH:
- arm64
- x86_64
# If running with act, Uncomment below # If running with act, Uncomment below
# container: phaze9/action-runner # container: phaze9/action-runner
env: env:
DOCKER_CONFIG: $HOME/.docker DOCKER_CONFIG: $HOME/.docker
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v2
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx - name: Set up Docker Buildx
id: buildx id: buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v1
- name: Available platforms
run: echo ${{ steps.buildx.outputs.platforms }}
- name: Login to ghcr.io - name: Login to ghcr.io
uses: docker/login-action@v3 uses: docker/login-action@v1
with: with:
registry: ${{ env.IMAGE_REGISTRY }} registry: ${{ env.IMAGE_REGISTRY }}
username: ${{ env.IMAGE_OWNER }} username: ${{ env.TOKEN_USER }}
password: ${{ secrets.GITHUB_TOKEN }} password: ${{ secrets.TOKEN }}
- name: Build Docker Image - name: Build and push - x64
id: docker_build_x64 id: docker_build_x64
uses: docker/build-push-action@v6 uses: docker/build-push-action@v2
if: ${{ matrix.CPU_ARCH == 'x86_64'}}
with: with:
push: true push: true
platforms: linux/amd64 platforms: linux/amd64
labels: org.opencontainers.image.source https://github.com/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }} labels: org.opencontainers.image.source https://github.com/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}
tags: ${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}:x64-latest tags: ${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}:x64-latest
Build_ARM64: - name: Build and push - arm64
runs-on: [self-hosted, linux, ARM64]
# If running with act, Uncomment below
# container: phaze9/action-runner
env:
DOCKER_CONFIG: $HOME/.docker
steps:
- uses: actions/checkout@v4
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v3
- name: Login to ghcr.io
uses: docker/login-action@v3
with:
registry: ${{ env.IMAGE_REGISTRY }}
username: ${{ env.IMAGE_OWNER }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build Docker Image
id: docker_build_arm64 id: docker_build_arm64
uses: docker/build-push-action@v6 uses: docker/build-push-action@v2
if: ${{ matrix.CPU_ARCH == 'arm64'}}
with: with:
push: true push: true
platforms: linux/arm64 platforms: linux/arm64
labels: org.opencontainers.image.source https://github.com/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }} labels: org.opencontainers.image.source https://github.com/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}
tags: ${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}:arm64-latest tags: ${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}:arm-latest
Deploy: Deploy:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: Build_x86 needs: BuildImage
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v2
- name: Run Ansible playbook - name: Run Ansible playbook
# uses: dawidd6/action-ansible-playbook@v2.5.0 # uses: dawidd6/action-ansible-playbook@v2.5.0
uses: dawidd6/action-ansible-playbook@9d50e1392c06ef7ad5a2e71eb8b97fc2642c7937 uses: dawidd6/action-ansible-playbook@671974ed60e946e11964cb0c26e69caaa4b1f559
with: with:
playbook: playbook.yml playbook: playbook.yml
directory: ./ directory: ./

View File

@@ -14,9 +14,13 @@
name: Snyk Container name: Snyk Container
on: on:
push:
branches: [ main ]
pull_request: pull_request:
# The branches below must be a subset of the branches above # The branches below must be a subset of the branches above
branches: [ main ] branches: [ main ]
schedule:
- cron: '18 21 * * 3'
permissions: permissions:
contents: read contents: read
@@ -28,14 +32,14 @@ jobs:
security-events: write # for github/codeql-action/upload-sarif to upload SARIF results security-events: write # for github/codeql-action/upload-sarif to upload SARIF results
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v3
- name: Build a Docker image - name: Build a Docker image
run: docker build -t ghcr.io/fluttershub/homepage:snyk . run: docker build -t ghcr.io/fluttershub/homepage:snyk .
- name: Run Snyk to check Docker image for vulnerabilities - name: Run Snyk to check Docker image for vulnerabilities
# Snyk can be used to break the build when it detects vulnerabilities. # Snyk can be used to break the build when it detects vulnerabilities.
# In this case we want to upload the issues to GitHub Code Scanning # In this case we want to upload the issues to GitHub Code Scanning
continue-on-error: true continue-on-error: true
uses: snyk/actions/docker@master uses: snyk/actions/docker@14818c4695ecc4045f33c9cee9e795a788711ca4
env: env:
# In order to use the Snyk Action you will need to have a Snyk API token. # In order to use the Snyk Action you will need to have a Snyk API token.
# More details in https://github.com/snyk/actions#getting-your-snyk-token # More details in https://github.com/snyk/actions#getting-your-snyk-token
@@ -45,6 +49,6 @@ jobs:
image: ghcr.io/fluttershub/homepage:snyk image: ghcr.io/fluttershub/homepage:snyk
args: --file=Dockerfile args: --file=Dockerfile
- name: Upload result to GitHub Code Scanning - name: Upload result to GitHub Code Scanning
uses: github/codeql-action/upload-sarif@v3 uses: github/codeql-action/upload-sarif@v2
with: with:
sarif_file: snyk.sarif sarif_file: snyk.sarif

View File

@@ -1,23 +1,20 @@
FROM node:18.20.7 AS base FROM node:18-alpine AS base
LABEL version="4.1.0" LABEL version="4.1.0"
LABEL description="" LABEL description=""
RUN apt-get update && apt-get upgrade -y \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /usr/src/app WORKDIR /usr/src/app
COPY ["package.json", "./"] COPY ["package.json", "./"]
COPY ["yarn.lock", "./"] COPY ["yarn.lock", "./"]
FROM base AS builder FROM base AS builder
RUN yarn install RUN apk add --no-cache --virtual .gyp python3 make g++ \
&& yarn install \
&& apk del .gyp
COPY ["src/", "./src"] COPY ["src/", "./src"]
RUN npm run Prod RUN npm run Prod
FROM nginx:1.27.4-alpine as Web FROM nginx:1.21.6-alpine as Web
RUN apk --update --no-cache upgrade
LABEL maintainer="Phoenix (https://github.com/HotaruBlaze)" LABEL maintainer="Phoenix (https://github.com/HotaruBlaze)"
COPY docker/nginx.conf /etc/nginx/nginx.conf COPY docker/nginx.conf /etc/nginx/nginx.conf
COPY docker/web.conf /etc/nginx/conf.d/web.conf COPY docker/web.conf /etc/nginx/conf.d/web.conf

View File

@@ -1,7 +1,7 @@
version: "3" version: "3"
services: services:
fluttershub-homepage: fluttershub.com:
image: ghcr.io/fluttershub/homepage:x64-latest image: ghcr.io/fluttershub/homepage:x64-latest
restart: always restart: always
networks: networks:

4125
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,7 @@
"author": "HotaruBlaze", "author": "HotaruBlaze",
"repository": { "repository": {
"type": "git", "type": "git",
"url": "git@github.com:Fluttershub/Homepage.git" "url": "git@github.com:github/Fluttershub.git"
}, },
"scripts": { "scripts": {
"preinit": "npx npm-force-resolutions", "preinit": "npx npm-force-resolutions",
@@ -17,12 +17,13 @@
"Prod": "npm run Cleanup && npm run Init && parcel build src/index.pug --dist-dir build" "Prod": "npm run Cleanup && npm run Init && parcel build src/index.pug --dist-dir build"
}, },
"devDependencies": { "devDependencies": {
"@parcel/transformer-pug": "2.14.4", "parcel": "^2.5.0"
"@parcel/transformer-sass": "2.14.4", },
"parcel": "^2.14.4" "engines": {
"node": "^18.*"
}, },
"resolutions": { "resolutions": {
"node-forge": "1.3.1" "node-forge": "0.10.0"
}, },
"dependencies": {}, "dependencies": {},
"bugs": { "bugs": {

View File

@@ -18,6 +18,7 @@
mode: '0755' mode: '0755'
loop: loop:
- docker-compose.yml - docker-compose.yml
register: compose
- name: deploy Docker Compose stack if updated - name: deploy Docker Compose stack if updated
community.docker.docker_compose: community.docker.docker_compose:
@@ -25,3 +26,4 @@
pull: true pull: true
files: files:
- docker-compose.yml - docker-compose.yml
when: compose.changed

View File

@@ -1,6 +0,0 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:recommended"
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 93 KiB

View File

@@ -14,7 +14,7 @@ html(lang='en')
.container .container
.pod .pod
.glow .glow
img#profile_pic(src='assets/profile_pic.png', alt='') img#profile_pic(src='https://img.fluttershub.com/VjpiMs7xp60yEcAH.png', alt='')
h1.welcome_text.text-flicker.text-flicker-1 Phoenix/Hotaru h1.welcome_text.text-flicker.text-flicker-1 Phoenix/Hotaru
p.about_me.standard_text.text-box-glow p.about_me.standard_text.text-box-glow
.pod .pod
@@ -22,8 +22,6 @@ html(lang='en')
a.standard_text.text-flicker-2(href="https://twitter.com/HotaruBlaze") Twitter a.standard_text.text-flicker-2(href="https://twitter.com/HotaruBlaze") Twitter
a.standard_text.text-flicker-2(href="https://github.com/HotaruBlaze") Github a.standard_text.text-flicker-2(href="https://github.com/HotaruBlaze") Github
a.standard_text.text-flicker-2(href="https://gitlab.com/HotaruBlaze") Gitlab a.standard_text.text-flicker-2(href="https://gitlab.com/HotaruBlaze") Gitlab
a.standard_text.text-flicker-2(href="mailto:hotarublaze@gmail.com") Email
footer.standard_text.footer-slide footer.standard_text.footer-slide
.creator .creator
a.build_text(href="https://www.youtube.com/watch?v=5DWFZhAVI3s") Cookie? a.build_text(href="https://img.fluttershub.com/EgOwhwrHyHWw.png") Cookie? 🍪
a.cookie(href="https://img.fluttershub.com/pdDK7pdVJZU3d9UI.jpg") 🍪

View File

@@ -2,5 +2,5 @@ meta(property='og:url', content='https://fluttershub.com')
meta(property='og:type', content='website') meta(property='og:type', content='website')
meta(property='og:title', content='Phoenix\'s Personal Website') meta(property='og:title', content='Phoenix\'s Personal Website')
meta(property='og:description', content='We got cookies and milk!') meta(property='og:description', content='We got cookies and milk!')
meta(property='og:image', content='http://s3.fluttershub.com/fluttershub-com/public/profile_pic.png') meta(property='og:image', content='http://storage.googleapis.com/api.fluttershub.com/images/public/profile_pic.jpg')
meta(property='og:image:secure_url', content='https://s3.fluttershub.com/fluttershub-com/public/profile_pic.png') meta(property='og:image:secure_url', content='https://storage.googleapis.com/api.fluttershub.com/images/public/profile_pic.jpg')

View File

@@ -1,3 +1,3 @@
@use "animations/bounce.scss"; @import "animations/bounce.scss";
@use "animations/flicker.scss"; @import "animations/flicker.scss";
@use "animations/slide.scss"; @import "animations/slide.scss";

View File

@@ -60,9 +60,6 @@ body,html, .container {
-moz-user-select: text; -moz-user-select: text;
text-decoration: none; text-decoration: none;
} }
.cookie {
text-decoration: none !important;
}
.no_hightnight a:link, a{ .no_hightnight a:link, a{
color: inherit; color: inherit;

View File

@@ -1,6 +1,18 @@
// @use "./bounce.scss"; // @import "./bounce.scss";
// Keyframes must be declared at the top level #profile_pic {
width: 256px;
height: 256px;
/* Safari 3-4, iOS 1-3.2, Android 1.6- */
-webkit-border-radius: 50%;
/* Firefox 1-3.6 */
-moz-border-radius: 50%;
/* Opera 10.5, IE 9, Safari 5, Chrome, Firefox 4, iOS 4, Android 2.1+ */
border-radius: 50%;
}
.glow img{
@keyframes border-pulsate { @keyframes border-pulsate {
0%{ 0%{
box-shadow:none; box-shadow:none;
@@ -20,21 +32,11 @@
box-shadow:none; box-shadow:none;
} }
} }
// -webkit-animation: bounce-in-fwd 1.1s cubic-bezier(0.645, 0.045, 0.355, 1.000) both;
#profile_pic { // animation: bounce-in-fwd 1.1s cubic-bezier(0.645, 0.045, 0.355, 1.000) both;
width: 256px;
height: 256px;
/* Safari 3-4, iOS 1-3.2, Android 1.6- */
-webkit-border-radius: 50%;
/* Firefox 1-3.6 */
-moz-border-radius: 50%;
/* Modern browsers */
border-radius: 50%;
}
.glow img {
animation: bounce-in 800ms cubic-bezier(0.645, 0.045, 0.355, 1.000) both, border-pulsate 10s infinite; animation: bounce-in 800ms cubic-bezier(0.645, 0.045, 0.355, 1.000) both, border-pulsate 10s infinite;
/* transition:all 4s ease-out;
/*animation-delay: 0s;
animation-play-state: running;
// animation-fill-mode: backwards; */
} }

View File

@@ -1,7 +1,7 @@
@use "components/common.scss"; @import "components/common.scss";
// @use "components/animation.scss"; // @import "components/animation.scss";
@use "components/img.scss"; @import "components/img.scss";
@use "components/footer.scss"; @import "components/footer.scss";
@use "components/animations.scss"; @import "components/animations.scss";
// @use "components/slide.scss"; // @import "components/slide.scss";
// @use "components/links.scss"; // @import "components/links.scss";

2254
yarn.lock

File diff suppressed because it is too large Load Diff