From 74c5157439ead3028fde74e9ea7181cc0a0647cc Mon Sep 17 00:00:00 2001 From: Lorenzo Venerandi Date: Tue, 14 Oct 2025 11:02:19 +0200 Subject: [PATCH] deployment config --- .dockerignore | 11 + .github/workflows/docker-publish.yml | 73 ++ DEPLOY.md | 36 + Dockerfile | 14 + sito_cv_alessandro_acuna.html | 1805 -------------------------- 5 files changed, 134 insertions(+), 1805 deletions(-) create mode 100644 .dockerignore create mode 100644 .github/workflows/docker-publish.yml create mode 100644 DEPLOY.md create mode 100644 Dockerfile delete mode 100644 sito_cv_alessandro_acuna.html diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..9c0530b --- /dev/null +++ b/.dockerignore @@ -0,0 +1,11 @@ +# Ignora file non necessari per l'immagine +.git +.gitignore +.github +node_modules +npm-debug.log +.DS_Store +*.md +*.pdf +README.md +DEPLOY.md \ No newline at end of file diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml new file mode 100644 index 0000000..89e737e --- /dev/null +++ b/.github/workflows/docker-publish.yml @@ -0,0 +1,73 @@ +name: Build and Publish Docker image + +on: + push: + branches: [ main ] + workflow_dispatch: {} + +permissions: + contents: read + packages: write + id-token: write + +jobs: + build-publish: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v4 + with: + context: . + push: true + tags: | + ghcr.io/${{ github.repository_owner }}/home:latest + ghcr.io/${{ github.repository_owner }}/home:${{ github.sha }} + file: Dockerfile + + - name: Output image + run: | + echo "Image pushed: ghcr.io/${{ github.repository_owner }}/home:latest" + echo "Image pushed: ghcr.io/${{ github.repository_owner }}/home:${{ github.sha }}" + + redeploy: + name: Redeploy target + needs: build-publish + runs-on: ubuntu-latest + steps: + - name: Check redeploy inputs + if: ${{ secrets.REDEPLOY_URL != '' && secrets.REDEPLOY_TOKEN != '' }} + run: | + echo "Redeploy inputs present" + + - name: Call redeploy endpoint + if: ${{ secrets.REDEPLOY_URL != '' && secrets.REDEPLOY_TOKEN != '' }} + run: | + echo "Calling redeploy endpoint..." + # curl --fail ritorna exit code != 0 se lo status HTTP non è 2xx + curl --fail -s -X POST \ + -H "Authorization: Bearer ${{ secrets.REDEPLOY_TOKEN }}" \ + -H "Content-Type: application/json" \ + -d "{\"image\":\"ghcr.io/${{ github.repository_owner }}/home:${{ github.sha }}\"}" \ + "${{ secrets.REDEPLOY_URL }}" + + - name: Skip redeploy warning + if: ${{ secrets.REDEPLOY_URL == '' || secrets.REDEPLOY_TOKEN == '' }} + run: | + echo "REDEPLOY_URL or REDEPLOY_TOKEN not set; skipping redeploy step." diff --git a/DEPLOY.md b/DEPLOY.md new file mode 100644 index 0000000..e1b73e3 --- /dev/null +++ b/DEPLOY.md @@ -0,0 +1,36 @@ +# Deploy del sito su Kubernetes usando l'immagine GHCR + +1) Build e push automatico +- La GitHub Action `.github/workflows/docker-publish.yml` builda e pusha l'immagine su `ghcr.io//home:latest` quando fai push su `main`. + +2) Aggiornare i manifest +- Modifica `k8s/deployment.yaml` e sostituisci `OWNER` con il tuo GitHub username (o l'organization) se l'immagine è privata. + +3) Secrets per cluster privato +- Se l'immagine è privata, crea un secret per il pull: + kubectl create secret docker-registry ghcr-secret --docker-server=ghcr.io --docker-username= --docker-password= --docker-email= +- Poi aggiungi nello `spec.template.spec` del deployment: + imagePullSecrets: + - name: ghcr-secret + +4) Deploy sul cluster +- Assicurati di essere connesso al cluster (kubectl config use-context ...) +- Applica i manifest: + kubectl apply -f k8s/deployment.yaml + kubectl apply -f k8s/service.yaml + +5) Nota su permissions GHCR +- Se usi `GITHUB_TOKEN` per pushare pacchetti, assicurati di abilitare il `permissions: packages: write` nelle settings del workflow e che il repository abbia Packages abilitati. + +Se il push fallisce +- Usa un Personal Access Token (PAT) con scope `write:packages` come secret `GHCR_PAT` e modifica lo step di login nella action per usare `password: ${{ secrets.GHCR_PAT }}` al posto di `GITHUB_TOKEN`. + +I permessi del workflow +- Lo YAML di esempio include: + permissions: + contents: read + packages: write + id-token: write + +Questo è sufficiente per pushare immagini private su GHCR se il repository appartiene all'utente. Per organizzazioni, potresti dover configurare permessi aggiuntivi. + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..3bd4af4 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +# Dockerfile per servire il sito statico con nginx +# Usa una immagine nginx leggera e aggiornata +## Uso un tag specifico (major.minor) per maggiore riproducibilità e per limitare warning di vulnerabilità +FROM nginx:1.25-alpine + +# Rimuove il contenuto di default e copia i file del sito +RUN rm -rf /usr/share/nginx/html/* +COPY . /usr/share/nginx/html + +# Espone porta 80 +EXPOSE 80 + +# Comando di default +CMD ["nginx", "-g", "daemon off;"] diff --git a/sito_cv_alessandro_acuna.html b/sito_cv_alessandro_acuna.html deleted file mode 100644 index 4625ddd..0000000 --- a/sito_cv_alessandro_acuna.html +++ /dev/null @@ -1,1805 +0,0 @@ - - - - - - Alessandro Acuna — Structural Engineer - - - - - - - - - - - - - - - - -
-
- -
-
- -
- -
-
-

Alessandro Acuna

-

Structural Engineer

-

- Mechanical Engineer passionate about aerospace and advanced manufacturing, specialized in developing structural components from concept to advanced FEM validation. Focus on composite materials, CAD, FEA, and explicit simulations. -

-
- Composite Materials - FEA (Abaqus, Ansys, Nastran, Hypermesh) - CAD (CATIA V5, NX, Creo) - PASS and SAP - Python (Numpy, Pandas, Matplotlib) -
- -
-
-
-

Availability

-

Currently at Airbus (contract until Dec 2025). Open to a new Structural Engineer role from January 2026.

-

Madrid, Spain · DE IT ES UK

-
-
-

Key competencies

-
- Damage Tolerance - Buckling & Pre-sizing - Impact & Energy Absorption - Drawings & GD&T - Data Analysis -
-
-
-
- - -
-

Experience

- -
- -
-
Jan 2025 – Present -
-
-
-

- AIRBUS - Structural Design & Analysis Engineer - Madrid, ES -

-
    -
  • Development and assessment of repair solutions for composite and metallic components.
  • -
  • Part design for A350 HTP and Section 19 (rear fuselage) in CATIA V5.
  • -
  • Design Office interface in production, ensuring structural integrity and compliance.
  • -
  • Development of numerical models and explicit simulations for composite damage mechanisms.
  • -
-
-
- - -
-
Mar 2024 – Dec 2024 -
-
-
-

- DLR - Master Thesis · R&D Engineer - Stuttgart, DE -

-
    -
  • Thesis for the EU project r-LightBioCom on sustainable high-performance composites for automotive/aerospace.
  • -
  • Computed environmental footprint for 1 kg of materials in openLCA.
  • -
  • Quasi-static & dynamic compression tests on cores (honeycomb/foam) and KPIs combining LCA and mechanical performance.
  • -
  • Implementation and calibration of LS-DYNA MAT cards from test data.
  • -
  • FEM static/dynamic analyses to validate experiments.
  • -
-
-
- - -
-
Oct 2021 – Sep 2023 -
-
-
-

- UniBo Motorsport - Stress & Design Engineer - Bologna, IT -

-
    -
  • Design and Stress Analysis of automotive parts (monocoque moulds, dashboard support, driver harness).
  • -
  • FEM on CFRP chassis under multiple loads; investigation of delamination causes.
  • -
-
-
- - -
-
Jul 2022 – Sep 2022 -
-
-
-

- D.V.P. Vacuum Technology - Bachelor Thesis · R&D Engineer - Bologna, IT -

-
    -
  • Experimental campaigns on flow rates and pressure losses in turbines and control valves.
  • -
  • Built performance maps in GT-Suite and validated the model.
  • -
-
-
- - -
-
Feb 2022 – Apr 2022 -
-
-
-

- CPC Group - Composite Laminator - Modena, IT -

-
    -
  • Lamination of CFRP moulds and a chassis for Formula SAE team.
  • -
-
-
-
-
- - -
-

Academic Projects

-
-
-

Composite stiffened panels

-

Buckling & damage tolerance checks, layup optimization (skin & stringers), deflection verification. UPM · Feb–May 2025

-
- -
-

Composite laminate — Hashin (Abaqus)

-

UD laminate under tension vs compression; ply-by-ply failure using Hashin initiation; FEM-driven analysis. UPM · Jan–Mar 2025

-
- -
-

Rear Fuselage — Section 19 (Skin & Stringers)

-

Skin laminate & stringer concept, drop-offs, reinforcements, frame joints (clips, Ø4.8 mm). UPM · Jan–Mar 2024

-
- -
-

Motorbike rear subframe — AlSi10Mg (SLM)

-

Topology optimization, VDI 2230 bolted joints, static/fatigue validation (Ansys), weight minimization. Unibo · Sep–Dec 2024

-
- -
-

Composite drone structure

-

Lamination definition, thickness optimization, harmonic & impact FEM analyses. Unibo · Feb–Jun 2023

-
-
-
- - - - - - - - - - - - - - - - - - -
-

Education

-
-
-
Oct 2024 – Jun 2025 -
-
-
-

- Master in Composite Materials - AIRBUS Programme, Universidad Politécnica de Madrid -

-

Courses: Design & Analysis of Advanced Composite Structures · Abaqus Lab · Space Structures.

-
-
-
-
Oct 2022 – Dec 2025 / Mar 2026 -
-
-
-

- MSc in Mechanical Engineering (Minor: Mechanical Design & Modelling) - University of Bologna -

-

Courses: Chassis & Body · Surface CAD · Structural CAD · Product Development Processes & Methods.

-
-
-
-
Sep 2023 – Feb 2024 -
-
-
-

- Erasmus+ Aerospace Engineering - University of Stuttgart -

-

Computational Dynamics (Robotics) · Computational Mechanics of Structures · Advanced FEA Technology.

-
-
-
-
Sep 2019 – Oct 2022 -
-
-
-

- BSc in Mechanical Engineering - University of Bologna -

-
-
-
-
- - -
-

Skills

-
-

Software

-
-
CAD: Siemens NX, CATIA V5, PTC Creo
-
FEA: Ansys, Abaqus, Hypermesh/Nastran, GT-Suite
-
Programming: Python (pandas, matplotlib, pycatia)
-
Data Analysis: Excel, Python
-
-
-
-

Soft Skills

-
- Teamwork - Adaptability - Creative Problem Solving -
-
-
-

Languages

-
-
Italian — Native
-
Spanish — Fluent (C2)
-
English — Fluent (C1)
-
German — Basic (A1)
-
-
-
- - -
-

Contact

-
-

Interested in collaborating or need the CV in a different format? Get in touch.

-
- Current location: Madrid, Spain - -
- Contact hours (Madrid time): -
    -
  • Monday - Friday: 09:00 - 19:00
  • -
  • Saturday: 09:00 - 19:00
  • -
  • Sunday: 09:00 - 12:00
  • -
-
-
- -
-
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - -