mirror of
https://codeberg.org/JasterV/spazio-solazzo.git
synced 2026-04-26 18:20:03 +00:00
This pull request refactors and improves the GitHub Actions CI/CD workflow setup and enhances the application header component. The changes consolidate and clarify deployment workflows for production and review environments, improve environment variable handling, and update the application UI for greater flexibility. **CI/CD Workflow Refactoring and Improvements:** * Consolidated the CI workflow in `.github/workflows/ci.yml` to support both manual and reusable workflow triggers, making it easier to compose in other workflows. * Removed the old deployment workflows (`fly-deploy.yml` and `fly-review.yml`) in favor of new, clearer workflows for production (`production.yml`) and review apps (`review.yml`). These new workflows use reusable CI steps, improved secret management, and explicit environment configuration [[1]](diffhunk://#diff-e98bb23501189d64a1cee3fab4260cfa5fb4e0bf50a7352fc8c4bfe1939f92c2L1-L18) [[2]](diffhunk://#diff-360ed408b1160aff40b11529c2471f642a393cfd9375757bf6d4da2c7ab78db7L1-L34) [[3]](diffhunk://#diff-d5171f9b8c42863b1e934fda1fefedf968913c65aa5d715555a696fb3cbd4c7eR1-R45) [[4]](diffhunk://#diff-ebc21ccd816b27c07389e15ad88c9e74b71bde5e8e315e4e30902097d38386e5R1-R66). * Added a new `fly.review.toml` configuration file to standardize review app deployments on Fly.io, specifying build, deploy, environment, and VM settings. * Updated `fly.toml` to explicitly specify the Dockerfile for builds, improving deployment reliability. **Environment and Configuration Handling:** * Changed the application to require the `PHX_HOST` environment variable at runtime, raising an error if it is missing. This ensures correct host configuration for all deployments. **UI Component Enhancement:** * Refactored the `app_header` component to accept customizable `title` and `icon` attributes, and updated its usage in the main layout to display "Spazio Solazzo" with a sun icon. This makes the header more flexible and visually consistent [[1]](diffhunk://#diff-4b44e6943316f34ab5bf0f9ea1956fd2a65dc8a7cbb9c5a381578c13c6e559f6L42-R42) [[2]](diffhunk://#diff-4b44e6943316f34ab5bf0f9ea1956fd2a65dc8a7cbb9c5a381578c13c6e559f6R119-R138).
66 lines
2.3 KiB
YAML
66 lines
2.3 KiB
YAML
name: Deploy Review App
|
|
on:
|
|
# Run this workflow on every PR event. Existing review apps will be updated when the PR is updated.
|
|
pull_request:
|
|
types: [opened, reopened, synchronize, closed]
|
|
|
|
env:
|
|
FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}
|
|
FLY_REGION: ams
|
|
FLY_ORG: personal
|
|
APP_NAME: pr-${{ github.event.pull_request.number }}-jasterv-spazio-solazzo
|
|
|
|
jobs:
|
|
ci:
|
|
uses: ./.github/workflows/ci.yml
|
|
secrets: inherit
|
|
|
|
review_app:
|
|
runs-on: ubuntu-latest
|
|
needs: ci
|
|
outputs:
|
|
url: ${{ steps.deploy.outputs.url }}
|
|
# Only run one deployment at a time per PR.
|
|
concurrency:
|
|
group: pr-${{ github.event.number }}
|
|
|
|
# Deploying apps with this "review" environment allows the URL for the app to be displayed in the PR UI.
|
|
# Feel free to change the name of this environment.
|
|
environment:
|
|
name: review
|
|
# The script in the `deploy` sets the URL output for each review app.
|
|
url: ${{ steps.deploy.outputs.url }}
|
|
|
|
steps:
|
|
- name: Get code
|
|
uses: actions/checkout@v4
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v1
|
|
- name: Install flyctl CLI
|
|
uses: superfly/flyctl-actions/setup-flyctl@master
|
|
- name: Authenticate with Fly.io registry
|
|
run: flyctl auth docker
|
|
- name: Create Fly App before pushing docker image to registry
|
|
run: |
|
|
flyctl apps create ${{ env.APP_NAME }} --org ${{ env.FLY_ORG }} || true
|
|
- name: Build and push Docker image
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
push: true
|
|
tags: registry.fly.io/${{ env.APP_NAME }}:1.19
|
|
context: .
|
|
- name: Deploy PR app to Fly.io
|
|
id: deploy
|
|
uses: superfly/fly-pr-review-apps@1.5.0
|
|
with:
|
|
name: ${{ env.APP_NAME }}
|
|
config: fly.review.toml
|
|
secrets: |
|
|
TOKEN_SIGNING_SECRET=${{ secrets.TOKEN_SIGNING_SECRET }}
|
|
ADMIN_EMAIL=${{ secrets.ADMIN_EMAIL }}
|
|
SPAZIO_SOLAZZO_EMAIL=${{ secrets.SPAZIO_SOLAZZO_EMAIL }}
|
|
FRONT_OFFICE_PHONE_NUMBER=${{ secrets.FRONT_OFFICE_PHONE_NUMBER }}
|
|
RESEND_API_KEY=${{ secrets.RESEND_API_KEY }}
|
|
DATABASE_URL=${{ secrets.DATABASE_URL }}
|
|
SECRET_KEY_BASE=${{ secrets.SECRET_KEY_BASE }}
|
|
PHX_HOST=${{ env.APP_NAME }}.fly.dev
|