Compare commits
16 Commits
ba121c6479
...
efaa02ae20
| Author | SHA1 | Date | |
|---|---|---|---|
| efaa02ae20 | |||
| 396b6d210b | |||
| 594bc9bc4f | |||
| e4a87c3941 | |||
| 3ba6db7f83 | |||
| b37ee3f94c | |||
| da2fc876d4 | |||
| 4c6aa09c12 | |||
| 88996012d7 | |||
| cb2c9dece3 | |||
| d6a3341944 | |||
| bb39ed567f | |||
| 548118e13e | |||
| 3ecb9b2994 | |||
| 7de03b565a | |||
| 0924c7ba00 |
@@ -1,4 +1,4 @@
|
|||||||
name: Build and Test
|
name: Build and Test - Production
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [main]
|
branches: [main]
|
||||||
@@ -52,6 +52,10 @@ jobs:
|
|||||||
gitea.perren.cloud/caperren/${{ needs.determine_version.outputs.repo_name }}:${{ needs.determine_version.outputs.repo_version_hash }}
|
gitea.perren.cloud/caperren/${{ needs.determine_version.outputs.repo_name }}:${{ needs.determine_version.outputs.repo_version_hash }}
|
||||||
gitea.perren.cloud/caperren/${{ needs.determine_version.outputs.repo_name }}:${{ needs.determine_version.outputs.project_version }}
|
gitea.perren.cloud/caperren/${{ needs.determine_version.outputs.repo_name }}:${{ needs.determine_version.outputs.project_version }}
|
||||||
gitea.perren.cloud/caperren/caperren-com:latest
|
gitea.perren.cloud/caperren/caperren-com:latest
|
||||||
|
build-args: |
|
||||||
|
REPO_VERSION_HASH=${{ needs.determine_version.outputs.repo_version_hash }}
|
||||||
|
PROJECT_VERSION=${{ needs.determine_version.outputs.project_version }}
|
||||||
|
BUILD_ENVIRONMENT=production
|
||||||
|
|
||||||
test:
|
test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@@ -85,8 +89,8 @@ jobs:
|
|||||||
- name: Start App
|
- name: Start App
|
||||||
run: |
|
run: |
|
||||||
curl -k -X 'POST' \
|
curl -k -X 'POST' \
|
||||||
'https://caperren.com:444/api/v2.0/app/stop' \
|
'https://caperren.com:444/api/v2.0/app/start' \
|
||||||
-H 'accept: */*' \
|
-H 'accept: */*' \
|
||||||
-H 'Authorization: Bearer ${{ secrets.TRUENAS_CAPERRENCOM_API_KEY }}' \
|
-H 'Authorization: Bearer ${{ secrets.TRUENAS_CAPERRENCOM_API_KEY }}' \
|
||||||
-H 'Content-Type: application/json' \
|
-H 'Content-Type: application/json' \
|
||||||
-d '"caperren-com"'
|
-d '"caperren-com"'
|
||||||
95
.gitea/workflows/build-staging.yaml
Normal file
95
.gitea/workflows/build-staging.yaml
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
name: Build and Test - Staging
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
types: [ opened, synchronize, reopened ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
determine_version:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
repo_name: ${{ steps.project_metadata.outputs.REPO_NAME }}
|
||||||
|
repo_version_hash: ${{ steps.project_metadata.outputs.REPO_VERSION_HASH }}
|
||||||
|
project_version: ${{ steps.project_metadata.outputs.PROJECT_VERSION }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup Node Environment
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
|
||||||
|
- name: Acquire Project Metadata
|
||||||
|
id: project_metadata
|
||||||
|
run: |
|
||||||
|
echo REPO_NAME=$(echo ${GITHUB_REPOSITORY} | awk -F"/" '{print $2}') >> $GITHUB_OUTPUT
|
||||||
|
echo REPO_VERSION_HASH=$(git describe --tags --always | sed 's/^v//') >> $GITHUB_OUTPUT
|
||||||
|
echo PROJECT_VERSION=$(npm pkg get version --workspaces=false | tr -d \") >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
build_and_push:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: determine_version
|
||||||
|
steps:
|
||||||
|
- name: Checkout caperren-com Repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
path: caperren-com
|
||||||
|
|
||||||
|
- name: Login to Docker Registry
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: gitea.perren.cloud
|
||||||
|
username: ${{ secrets.REGISTRY_USERNAME }}
|
||||||
|
password: ${{ secrets.ACTIONS_TOKEN }}
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
- name: Build and Push
|
||||||
|
uses: docker/build-push-action@v5
|
||||||
|
with:
|
||||||
|
context: caperren-com
|
||||||
|
push: true
|
||||||
|
tags: |
|
||||||
|
gitea.perren.cloud/caperren/caperren-com:latest-staging
|
||||||
|
build-args: |
|
||||||
|
REPO_VERSION_HASH=${{ needs.determine_version.outputs.repo_version_hash }}
|
||||||
|
PROJECT_VERSION=${{ needs.determine_version.outputs.project_version }}
|
||||||
|
BUILD_ENVIRONMENT=staging
|
||||||
|
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: build_and_push
|
||||||
|
steps:
|
||||||
|
- run: echo "Placeholder"
|
||||||
|
|
||||||
|
deploy_staging:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: test
|
||||||
|
steps:
|
||||||
|
- name: Pull New Image For App
|
||||||
|
run: |
|
||||||
|
curl -k -X 'POST' \
|
||||||
|
'https://caperren.com:444/api/v2.0/app/pull_images' \
|
||||||
|
-H 'accept: */*' \
|
||||||
|
-H 'Authorization: Bearer ${{ secrets.TRUENAS_CAPERRENCOM_API_KEY }}' \
|
||||||
|
-H 'Content-Type: application/json' \
|
||||||
|
-d '{
|
||||||
|
"name": "caperren-com-stg",
|
||||||
|
"options": {}
|
||||||
|
}'
|
||||||
|
|
||||||
|
- name: Stop App
|
||||||
|
run: |
|
||||||
|
curl -k -X 'POST' \
|
||||||
|
'https://caperren.com:444/api/v2.0/app/stop' \
|
||||||
|
-H 'accept: */*' \
|
||||||
|
-H 'Authorization: Bearer ${{ secrets.TRUENAS_CAPERRENCOM_API_KEY }}' \
|
||||||
|
-H 'Content-Type: application/json' \
|
||||||
|
-d '"caperren-com-stg"'
|
||||||
|
- name: Start App
|
||||||
|
run: |
|
||||||
|
curl -k -X 'POST' \
|
||||||
|
'https://caperren.com:444/api/v2.0/app/start' \
|
||||||
|
-H 'accept: */*' \
|
||||||
|
-H 'Authorization: Bearer ${{ secrets.TRUENAS_CAPERRENCOM_API_KEY }}' \
|
||||||
|
-H 'Content-Type: application/json' \
|
||||||
|
-d '"caperren-com-stg"'
|
||||||
@@ -12,7 +12,16 @@ FROM base AS build-deps
|
|||||||
RUN npm install
|
RUN npm install
|
||||||
|
|
||||||
FROM build-deps AS build
|
FROM build-deps AS build
|
||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
|
ARG REPO_VERSION_HASH
|
||||||
|
ARG BUILD_ENVIRONMENT
|
||||||
|
ARG PROJECT_VERSION
|
||||||
|
|
||||||
|
RUN echo "PUBLIC_REPO_VERSION_HASH=/"${REPO_VERSION_HASH}/" \n\
|
||||||
|
BUILD_ENVIRONMENT=/"${BUILD_ENVIRONMENT}/" \n\
|
||||||
|
PUBLIC_PROJECT_VERSION=/"${PROJECT_VERSION}/"" >> nope
|
||||||
RUN npm run build
|
RUN npm run build
|
||||||
|
|
||||||
FROM httpd:latest AS runtime
|
FROM httpd:latest AS runtime
|
||||||
|
|||||||
5
src/components/Footer.astro
Normal file
5
src/components/Footer.astro
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
---
|
||||||
|
<footer class="flex justify-center items-center text-center">
|
||||||
|
{import.meta.env.BUILD_ENVIRONMENT || "development"} | {import.meta.env.PUBLIC_REPO_VERSION_HASH || "invalid"}@{import.meta.env.PUBLIC_PROJECT_VERSION || "0.0.0"}
|
||||||
|
</footer>
|
||||||
9
src/env.d.ts
vendored
Normal file
9
src/env.d.ts
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
interface ImportMetaEnv {
|
||||||
|
readonly PUBLIC_REPO_VERSION_HASH: string;
|
||||||
|
readonly PUBLIC_PROJECT_VERSION: string;
|
||||||
|
readonly BUILD_ENVIRONMENT: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ImportMeta {
|
||||||
|
readonly env: ImportMetaEnv;
|
||||||
|
}
|
||||||
@@ -1,20 +1,22 @@
|
|||||||
---
|
---
|
||||||
import '../styles/global.css'
|
import '../styles/global.css'
|
||||||
import Navbar from '../components/Navbar.astro';
|
import Navbar from '../components/Navbar.astro';
|
||||||
|
import Footer from '../components/Footer.astro';
|
||||||
|
|
||||||
const pageTitle = Astro.props.title ? `${Astro.props.title} - Corwin Perren`: "Corwin Perren";
|
const pageTitle = Astro.props.title ? `${Astro.props.title} - Corwin Perren` : "Corwin Perren";
|
||||||
---
|
---
|
||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8"/>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||||
<title>{pageTitle}</title>
|
<title>{pageTitle}</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<Navbar />
|
<Navbar/>
|
||||||
<main style="padding: 2rem;">
|
<main style="padding: 2rem;">
|
||||||
<slot />
|
<slot/>
|
||||||
</main>
|
</main>
|
||||||
|
<Footer/>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
Reference in New Issue
Block a user