Commonize builds, add staging build
All checks were successful
Build and Test Staging / build_test_deploy (pull_request) Has been skipped

This commit is contained in:
2025-07-09 02:11:04 -07:00
parent 7de03b565a
commit 3ecb9b2994
3 changed files with 59 additions and 9 deletions

View File

@@ -1,7 +1,12 @@
name: Build and Test name: Build and Test
on: on:
push: workflow_call:
branches: [main] inputs:
build_environment:
description: "The build environment (e.g., staging, production)"
required: false
default: "development"
jobs: jobs:
determine_version: determine_version:
@@ -10,6 +15,8 @@ jobs:
repo_name: ${{ steps.project_metadata.outputs.REPO_NAME }} repo_name: ${{ steps.project_metadata.outputs.REPO_NAME }}
repo_version_hash: ${{ steps.project_metadata.outputs.REPO_VERSION_HASH }} repo_version_hash: ${{ steps.project_metadata.outputs.REPO_VERSION_HASH }}
project_version: ${{ steps.project_metadata.outputs.PROJECT_VERSION }} project_version: ${{ steps.project_metadata.outputs.PROJECT_VERSION }}
docker_tags: ${{ steps.generate_docker_tags.outputs.DOCKER_TAGS }}
docker_deploy_target: ${{ steps.generate_docker_deployment_target.outputs.DOCKER_DEPLOY_TARGET }}
steps: steps:
- name: Checkout Repository - name: Checkout Repository
uses: actions/checkout@v4 uses: actions/checkout@v4
@@ -24,6 +31,32 @@ jobs:
echo REPO_VERSION_HASH=$(git describe --tags --always | sed 's/^v//') >> $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 echo PROJECT_VERSION=$(npm pkg get version --workspaces=false | tr -d \") >> $GITHUB_OUTPUT
- name: Generate Docker Tags
id: generate_docker_tags
run: |
DOCKER_TAGS=""
if [ "${{ inputs.build_environment }}" = "staging" ]; then
DOCKER_TAGS=("gitea.perren.cloud/caperren/caperren-com:latest-staging")
else
DOCKER_TAGS=("gitea.perren.cloud/caperren/caperren-com:${{ steps.project_metadata.outputs.REPO_VERSION_HASH }},")
DOCKER_TAGS+=("gitea.perren.cloud/caperren/caperren-com:${{ steps.project_metadata.outputs.PROJECT_VERSION }},")
DOCKER_TAGS+=("gitea.perren.cloud/caperren/caperren-com:latest")
fi
echo DOCKER_TAGS >> $GITHUB_OUTPUT
- name: Generate Docker Deployment Target
id: generate_docker_deployment_target
run: |
if [ "${{ inputs.build_environment }}" = "staging" ]; then
DOCKER_DEPLOY_TARGET=caperren-com-staging
else
DOCKER_DEPLOY_TARGET="caperren-com"
fi
echo $DOCKER_DEPLOY_TARGET >> $GITHUB_OUTPUT
build_and_push: build_and_push:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: determine_version needs: determine_version
@@ -48,10 +81,7 @@ jobs:
with: with:
context: caperren-com context: caperren-com
push: true push: true
tags: | tags: ${{ needs.determine_version.outputs.docker_tags }}
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/caperren-com:latest
test: test:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -71,7 +101,7 @@ jobs:
-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 '{ -d '{
"name": "caperren-com", "name": "${{ needs.determine_version.outputs.docker_deploy_target }}",
"options": {} "options": {}
}' }'
- name: Stop App - name: Stop App
@@ -81,7 +111,7 @@ jobs:
-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 '"${{ needs.determine_version.outputs.docker_deploy_target }}"'
- name: Start App - name: Start App
run: | run: |
curl -k -X 'POST' \ curl -k -X 'POST' \
@@ -89,4 +119,4 @@ jobs:
-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 '"${{ needs.determine_version.outputs.docker_deploy_target }}"'

View File

@@ -0,0 +1,10 @@
name: Build and Test Production
on:
push:
branches: [main]
jobs:
build_test_deploy:
uses: ./.gitea/workflows/build-common.yaml
with:
build_environment: production

View File

@@ -0,0 +1,10 @@
name: Build and Test Staging
on:
pull_request:
types: [ opened, synchronize, reopened ]
jobs:
build_test_deploy:
uses: ./.gitea/workflows/build-common.yaml
with:
build_environment: staging