Compare commits
3 Commits
renovate/n
...
update-Nod
| Author | SHA1 | Date | |
|---|---|---|---|
| 4521ca2090 | |||
| 74e49ddde7 | |||
| f42e10156e |
4
.github/dependabot.yml
vendored
4
.github/dependabot.yml
vendored
@@ -4,3 +4,7 @@ updates:
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
- package-ecosystem: 'npm'
|
||||
directory: '/'
|
||||
schedule:
|
||||
interval: 'daily'
|
||||
184
.github/workflows/actions.yml
vendored
184
.github/workflows/actions.yml
vendored
@@ -1,96 +1,88 @@
|
||||
name: Docker Build
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main # Set a branch to deploy
|
||||
|
||||
env:
|
||||
IMAGE_REGISTRY: ghcr.io
|
||||
IMAGE_OWNER: fluttershub
|
||||
IMAGE_NAME: homepage
|
||||
|
||||
jobs:
|
||||
Build_x86:
|
||||
runs-on: ubuntu-latest
|
||||
# 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_x64
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
push: true
|
||||
platforms: linux/amd64
|
||||
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
|
||||
|
||||
Build_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
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
push: true
|
||||
platforms: linux/arm64
|
||||
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
|
||||
|
||||
|
||||
Deploy:
|
||||
runs-on: ubuntu-latest
|
||||
needs: Build_x86
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Run Ansible playbook
|
||||
# uses: dawidd6/action-ansible-playbook@v2.5.0
|
||||
uses: dawidd6/action-ansible-playbook@671974ed60e946e11964cb0c26e69caaa4b1f559
|
||||
with:
|
||||
playbook: playbook.yml
|
||||
directory: ./
|
||||
key: ${{secrets.DEPLOY_SSH_KEY}}
|
||||
inventory: |
|
||||
[docker]
|
||||
fluttershub.com
|
||||
[docker:vars]
|
||||
ansible_ssh_common_args='-o StrictHostKeyChecking=no'
|
||||
ansible_ssh_user=deploy
|
||||
options: |
|
||||
--verbose
|
||||
# Set to "true" if root is required for running your playbook
|
||||
# sudo: false # optional
|
||||
# Set to "true" if the Ansible output should not include colors (defaults to "false")
|
||||
# no_color: # optional
|
||||
name: Docker Build
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
env:
|
||||
IMAGE_REGISTRY: ghcr.io
|
||||
TOKEN_USER: HotaruBlaze
|
||||
IMAGE_OWNER: fluttershub
|
||||
IMAGE_NAME: homepage
|
||||
|
||||
jobs:
|
||||
BuildImage:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
CPU_ARCH:
|
||||
- arm64
|
||||
- x86_64
|
||||
# If running with act, Uncomment below
|
||||
# container: phaze9/action-runner
|
||||
env:
|
||||
DOCKER_CONFIG: $HOME/.docker
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v1
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v1
|
||||
|
||||
- name: Available platforms
|
||||
run: echo ${{ steps.buildx.outputs.platforms }}
|
||||
|
||||
- name: Login to ghcr.io
|
||||
uses: docker/login-action@v1
|
||||
with:
|
||||
registry: ${{ env.IMAGE_REGISTRY }}
|
||||
username: ${{ env.TOKEN_USER }}
|
||||
password: ${{ secrets.TOKEN }}
|
||||
|
||||
- name: Build and push - x64
|
||||
id: docker_build_x64
|
||||
uses: docker/build-push-action@v2
|
||||
if: ${{ matrix.CPU_ARCH == 'x86_64'}}
|
||||
with:
|
||||
push: true
|
||||
platforms: linux/amd64
|
||||
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
|
||||
|
||||
- name: Build and push - arm64
|
||||
id: docker_build_arm64
|
||||
uses: docker/build-push-action@v2
|
||||
if: ${{ matrix.CPU_ARCH == 'arm64'}}
|
||||
with:
|
||||
push: true
|
||||
platforms: linux/arm64
|
||||
labels: org.opencontainers.image.source https://github.com/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}
|
||||
tags: ${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}:arm-latest
|
||||
|
||||
Deploy:
|
||||
runs-on: ubuntu-latest
|
||||
needs: BuildImage
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Run Ansible playbook
|
||||
# uses: dawidd6/action-ansible-playbook@v2.5.0
|
||||
uses: dawidd6/action-ansible-playbook@671974ed60e946e11964cb0c26e69caaa4b1f559
|
||||
with:
|
||||
playbook: playbook.yml
|
||||
directory: ./
|
||||
key: ${{secrets.DEPLOY_SSH_KEY}}
|
||||
inventory: |
|
||||
[docker]
|
||||
fluttershub.com
|
||||
[docker:vars]
|
||||
ansible_ssh_common_args='-o StrictHostKeyChecking=no'
|
||||
ansible_ssh_user=deploy
|
||||
options: |
|
||||
--verbose
|
||||
# Set to "true" if root is required for running your playbook
|
||||
# sudo: false # optional
|
||||
# Set to "true" if the Ansible output should not include colors (defaults to "false")
|
||||
# no_color: # optional
|
||||
|
||||
10
.github/workflows/snyk-container.yml
vendored
10
.github/workflows/snyk-container.yml
vendored
@@ -14,9 +14,13 @@
|
||||
name: Snyk Container
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main ]
|
||||
pull_request:
|
||||
# The branches below must be a subset of the branches above
|
||||
branches: [ main ]
|
||||
schedule:
|
||||
- cron: '18 21 * * 3'
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
@@ -28,14 +32,14 @@ jobs:
|
||||
security-events: write # for github/codeql-action/upload-sarif to upload SARIF results
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v3
|
||||
- name: Build a Docker image
|
||||
run: docker build -t ghcr.io/fluttershub/homepage:snyk .
|
||||
- name: Run Snyk to check Docker image for 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
|
||||
continue-on-error: true
|
||||
uses: snyk/actions/docker@master
|
||||
uses: snyk/actions/docker@14818c4695ecc4045f33c9cee9e795a788711ca4
|
||||
env:
|
||||
# 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
|
||||
@@ -45,6 +49,6 @@ jobs:
|
||||
image: ghcr.io/fluttershub/homepage:snyk
|
||||
args: --file=Dockerfile
|
||||
- name: Upload result to GitHub Code Scanning
|
||||
uses: github/codeql-action/upload-sarif@v3
|
||||
uses: github/codeql-action/upload-sarif@v2
|
||||
with:
|
||||
sarif_file: snyk.sarif
|
||||
|
||||
15
Dockerfile
15
Dockerfile
@@ -1,23 +1,20 @@
|
||||
FROM node:22.17.0 AS base
|
||||
FROM node:18-alpine AS base
|
||||
LABEL version="4.1.0"
|
||||
LABEL description=""
|
||||
|
||||
RUN apt-get update && apt-get upgrade -y \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /usr/src/app
|
||||
COPY ["package.json", "./"]
|
||||
COPY ["yarn.lock", "./"]
|
||||
|
||||
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"]
|
||||
RUN npm run Prod
|
||||
|
||||
FROM nginx:1.27.4-alpine as Web
|
||||
|
||||
RUN apk --update --no-cache upgrade
|
||||
|
||||
FROM nginx:1.21.6-alpine as Web
|
||||
LABEL maintainer="Phoenix (https://github.com/HotaruBlaze)"
|
||||
COPY docker/nginx.conf /etc/nginx/nginx.conf
|
||||
COPY docker/web.conf /etc/nginx/conf.d/web.conf
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
version: "3"
|
||||
|
||||
services:
|
||||
fluttershub-homepage:
|
||||
fluttershub.com:
|
||||
image: ghcr.io/fluttershub/homepage:x64-latest
|
||||
restart: always
|
||||
networks:
|
||||
|
||||
4125
package-lock.json
generated
4125
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
11
package.json
11
package.json
@@ -7,7 +7,7 @@
|
||||
"author": "HotaruBlaze",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git@github.com:Fluttershub/Homepage.git"
|
||||
"url": "git@github.com:github/Fluttershub.git"
|
||||
},
|
||||
"scripts": {
|
||||
"preinit": "npx npm-force-resolutions",
|
||||
@@ -17,12 +17,13 @@
|
||||
"Prod": "npm run Cleanup && npm run Init && parcel build src/index.pug --dist-dir build"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@parcel/transformer-pug": "2.14.4",
|
||||
"@parcel/transformer-sass": "2.14.4",
|
||||
"parcel": "^2.14.4"
|
||||
"parcel": "^2.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.*"
|
||||
},
|
||||
"resolutions": {
|
||||
"node-forge": "1.3.1"
|
||||
"node-forge": "0.10.0"
|
||||
},
|
||||
"dependencies": {},
|
||||
"bugs": {
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
mode: '0755'
|
||||
loop:
|
||||
- docker-compose.yml
|
||||
register: compose
|
||||
|
||||
- name: deploy Docker Compose stack if updated
|
||||
community.docker.docker_compose:
|
||||
@@ -25,3 +26,4 @@
|
||||
pull: true
|
||||
files:
|
||||
- docker-compose.yml
|
||||
when: compose.changed
|
||||
|
||||
@@ -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 |
@@ -14,7 +14,7 @@ html(lang='en')
|
||||
.container
|
||||
.pod
|
||||
.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
|
||||
p.about_me.standard_text.text-box-glow
|
||||
.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://github.com/HotaruBlaze") Github
|
||||
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
|
||||
.creator
|
||||
a.build_text(href="https://www.youtube.com/watch?v=5DWFZhAVI3s") Cookie?
|
||||
a.cookie(href="https://img.fluttershub.com/pdDK7pdVJZU3d9UI.jpg") 🍪
|
||||
a.build_text(href="https://img.fluttershub.com/EgOwhwrHyHWw.png") Cookie? 🍪
|
||||
|
||||
@@ -2,5 +2,5 @@ meta(property='og:url', content='https://fluttershub.com')
|
||||
meta(property='og:type', content='website')
|
||||
meta(property='og:title', content='Phoenix\'s Personal Website')
|
||||
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:secure_url', content='https://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://storage.googleapis.com/api.fluttershub.com/images/public/profile_pic.jpg')
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
@use "animations/bounce.scss";
|
||||
@use "animations/flicker.scss";
|
||||
@use "animations/slide.scss";
|
||||
@import "animations/bounce.scss";
|
||||
@import "animations/flicker.scss";
|
||||
@import "animations/slide.scss";
|
||||
@@ -60,9 +60,6 @@ body,html, .container {
|
||||
-moz-user-select: text;
|
||||
text-decoration: none;
|
||||
}
|
||||
.cookie {
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
.no_hightnight a:link, a{
|
||||
color: inherit;
|
||||
|
||||
@@ -1,40 +1,42 @@
|
||||
// @use "./bounce.scss";
|
||||
|
||||
// Keyframes must be declared at the top level
|
||||
@keyframes border-pulsate {
|
||||
0% {
|
||||
box-shadow: none;
|
||||
}
|
||||
60% {
|
||||
box-shadow:
|
||||
inset 0 0 50px #fff,
|
||||
inset 20px 0 80px #f5f,
|
||||
inset -20px 0 80px #0ff,
|
||||
inset 20px 0 300px #f0f,
|
||||
inset -20px 0 300px #0ff,
|
||||
0 0 50px #fff,
|
||||
-10px 0 80px #f0f,
|
||||
10px 0 80px #0ff;
|
||||
}
|
||||
100% {
|
||||
box-shadow: none;
|
||||
}
|
||||
}
|
||||
// @import "./bounce.scss";
|
||||
|
||||
#profile_pic {
|
||||
width: 256px;
|
||||
height: 256px;
|
||||
|
||||
/* Safari 3-4, iOS 1-3.2, Android 1.6- */
|
||||
-webkit-border-radius: 50%;
|
||||
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%;
|
||||
-moz-border-radius: 50%;
|
||||
|
||||
/* Opera 10.5, IE 9, Safari 5, Chrome, Firefox 4, iOS 4, Android 2.1+ */
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.glow img {
|
||||
.glow img{
|
||||
@keyframes border-pulsate {
|
||||
0%{
|
||||
box-shadow:none;
|
||||
}
|
||||
60%{
|
||||
box-shadow:
|
||||
inset 0 0 50px #fff,
|
||||
inset 20px 0 80px #f5f,
|
||||
inset -20px 0 80px #0ff,
|
||||
inset 20px 0 300px #f0f,
|
||||
inset -20px 0 300px #0ff,
|
||||
0 0 50px #fff,
|
||||
-10px 0 80px #f0f,
|
||||
10px 0 80px #0ff;
|
||||
}
|
||||
100%{
|
||||
box-shadow:none;
|
||||
}
|
||||
}
|
||||
// -webkit-animation: bounce-in-fwd 1.1s cubic-bezier(0.645, 0.045, 0.355, 1.000) both;
|
||||
// animation: bounce-in-fwd 1.1s cubic-bezier(0.645, 0.045, 0.355, 1.000) both;
|
||||
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; */
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
@use "components/common.scss";
|
||||
// @use "components/animation.scss";
|
||||
@use "components/img.scss";
|
||||
@use "components/footer.scss";
|
||||
@use "components/animations.scss";
|
||||
// @use "components/slide.scss";
|
||||
// @use "components/links.scss";
|
||||
@import "components/common.scss";
|
||||
// @import "components/animation.scss";
|
||||
@import "components/img.scss";
|
||||
@import "components/footer.scss";
|
||||
@import "components/animations.scss";
|
||||
// @import "components/slide.scss";
|
||||
// @import "components/links.scss";
|
||||
Reference in New Issue
Block a user