Skip to content
Snippets Groups Projects
Verified Commit 1c919594 authored by Marco Aceti's avatar Marco Aceti
Browse files

Merge branch 'mdbook'

parents 09294bc5 ac74aadd
No related branches found
No related tags found
No related merge requests found
Showing with 173 additions and 597 deletions
.git/* .git/*
.git* .git*
Dockerfile .mdbook-plantuml-cache
docker-run.sh
.dockerignore .dockerignore
.idea/* .idea/*
.jekyll-cache/* book/
**/.jekyll-cache/* Dockerfile
_site/* docker-run.sh
assets/resized/*
uml/*
README.md README.md
on:
push:
branches: [ master ]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
permissions:
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
fetch-depth: 10
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to ghcr registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Prepare version info
run: |
echo "LATEST_COMMIT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
- name: Build and push Docker images
uses: docker/build-push-action@v4
with:
context: .
file: ./Dockerfile
tags: |
ghcr.io/marcobuster/sweng:${{ env.LATEST_COMMIT_SHA }}
ghcr.io/marcobuster/sweng:latest
push: true
name: Deploy mdBook site to Pages
on:
# Runs on pushes targeting the default branch
push:
branches: [ master ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
# Build job
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install apt requirements
run: |
sudo apt-get update -y
sudo apt-get install -y wget default-jre default-jdk graphviz libssl-dev pkg-config
- name: Restore from cache
uses: actions/cache/restore@v3
id: cache-restore
with:
path: |
plantuml.jar
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
key: ${{ runner.os }}
- name: Install mdBook
if: steps.cache-restore.outputs.cache-hit != 'true'
run: |
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf -y | sh
rustup update
cargo install mdbook
cargo install mdbook-plantuml
- name: Download PlantUML
if: steps.cache-restore.outputs.cache-hit != 'true'
run: |
wget https://github.com/plantuml/plantuml/releases/download/v1.2022.13/plantuml-1.2022.13.jar -O plantuml.jar
- name: Install PlantUML
run: |
echo "#!/bin/bash" > plantuml ; echo "java -jar $PWD/plantuml.jar \"\$@\"" >> plantuml
sudo mv plantuml /usr/bin/plantuml
sudo chmod +x /usr/bin/plantuml
- name: Save PlantUML to cache
id: cache-save
uses: actions/cache/save@v3
with:
path: |
plantuml.jar
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
key: ${{ steps.cache-restore.outputs.cache-primary-key }}
- name: Setup Pages
id: pages
uses: actions/configure-pages@v3
- name: Build with mdBook
run: mdbook build
- name: Fix assets path
run: grep -rl 'src="/assets/' book/ | xargs sed -i 's/src="\/assets\//src="\/sweng\/assets\//g'
- name: Upload artifact
uses: actions/upload-pages-artifact@v1
with:
path: ./book
# Deployment job
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v2
...@@ -6,4 +6,8 @@ public/ ...@@ -6,4 +6,8 @@ public/
resized/ resized/
.vscode/ .vscode/
uml/ uml/
?/ book
# PlantUML plugin
mdbook-plantuml-img/
.mdbook-plantuml-cache/
image: ruby:3.1
variables:
JEKYLL_ENV: production
LC_ALL: C.UTF-8
before_script:
- bundle install
build:
stage: build
script:
- apt-get update -y
- apt-get install -y wget default-jre default-jdk graphviz
- wget https://github.com/plantuml/plantuml/releases/download/v1.2022.13/plantuml-1.2022.13.jar -O plantuml.jar
- echo "#!/bin/bash" > plantuml
- echo "java -jar $PWD/plantuml.jar \"\$1\" \"\$2\"" >> plantuml
- mv plantuml /usr/bin/plantuml
- chmod +x /usr/bin/plantuml
- sed -i "s/\/sweng/\/sweng\/$CI_COMMIT_REF_SLUG/g" _config.yml
- bundle exec jekyll build -d build
artifacts:
name: jekyll-build.zip
paths:
- build
FROM ruby:3.1 # plantuml image
FROM ubuntu AS plantuml
# Install graphviz and PlantUML
RUN apt-get update -y RUN apt-get update -y
RUN apt-get install -y wget default-jre default-jdk graphviz RUN apt-get install -y wget default-jre default-jdk graphviz
RUN wget https://github.com/plantuml/plantuml/releases/download/v1.2022.13/plantuml-1.2022.13.jar -O plantuml.jar RUN wget https://github.com/plantuml/plantuml/releases/download/v1.2022.13/plantuml-1.2022.13.jar -O plantuml.jar
...@@ -8,16 +8,21 @@ RUN echo "#!/bin/bash" > plantuml ; echo "java -jar $PWD/plantuml.jar \"\$1\" \" ...@@ -8,16 +8,21 @@ RUN echo "#!/bin/bash" > plantuml ; echo "java -jar $PWD/plantuml.jar \"\$1\" \"
RUN mv plantuml /usr/bin/plantuml RUN mv plantuml /usr/bin/plantuml
RUN chmod +x /usr/bin/plantuml RUN chmod +x /usr/bin/plantuml
# Install Ruby project dependencies (Jekyll and plugins) # main image
WORKDIR /usr/src/app FROM rust:slim-buster
RUN apt-get update && \
apt-get install --no-install-recommends -y \
libssl-dev pkg-config
RUN cargo install mdbook
RUN cargo install mdbook-plantuml
COPY Gemfile . COPY --from=plantuml /usr/bin/plantuml /usr/bin/plantuml
COPY Gemfile.lock .
RUN bundle install EXPOSE 3000
WORKDIR /usr/src/app
# Copy project files # Copy project files
COPY . . COPY . .
EXPOSE 4000 ENTRYPOINT ["mdbook"]
EXPOSE 35729
ENTRYPOINT ["bundle", "exec", "jekyll", "serve", "--host", "0.0.0.0"]
# frozen_string_literal: true
source "https://rubygems.org"
# gem "rails"
gem "jekyll", "~> 4.2"
gem "webrick", "~> 1.7"
gem "jekyll-toc"
gem "jekyll-responsive-image"
gem "jekyll-plantuml"
GEM
remote: https://rubygems.org/
specs:
addressable (2.8.1)
public_suffix (>= 2.0.2, < 6.0)
colorator (1.1.0)
concurrent-ruby (1.1.10)
em-websocket (0.5.3)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0)
eventmachine (1.2.7)
ffi (1.15.5)
forwardable-extended (2.6.0)
http_parser.rb (0.8.0)
i18n (1.12.0)
concurrent-ruby (~> 1.0)
jekyll (4.2.2)
addressable (~> 2.4)
colorator (~> 1.0)
em-websocket (~> 0.5)
i18n (~> 1.0)
jekyll-sass-converter (~> 2.0)
jekyll-watch (~> 2.0)
kramdown (~> 2.3)
kramdown-parser-gfm (~> 1.0)
liquid (~> 4.0)
mercenary (~> 0.4.0)
pathutil (~> 0.9)
rouge (~> 3.0)
safe_yaml (~> 1.0)
terminal-table (~> 2.0)
jekyll-plantuml (1.3.4)
jekyll (> 2.0)
jekyll-responsive-image (1.6.0)
jekyll (>= 2.0, < 5.0)
rmagick (>= 2.0, < 5.0)
jekyll-sass-converter (2.2.0)
sassc (> 2.0.1, < 3.0)
jekyll-toc (0.17.1)
jekyll (>= 3.9)
nokogiri (~> 1.11)
jekyll-watch (2.2.1)
listen (~> 3.0)
kramdown (2.4.0)
rexml
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
liquid (4.0.3)
listen (3.7.1)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
mercenary (0.4.0)
nokogiri (1.13.8-x86_64-linux)
racc (~> 1.4)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
public_suffix (5.0.0)
racc (1.6.0)
rb-fsevent (0.11.2)
rb-inotify (0.10.1)
ffi (~> 1.0)
rexml (3.2.5)
rmagick (4.3.0)
rouge (3.30.0)
safe_yaml (1.0.5)
sassc (2.4.0)
ffi (~> 1.9)
terminal-table (2.0.0)
unicode-display_width (~> 1.1, >= 1.1.1)
unicode-display_width (1.8.0)
webrick (1.7.0)
PLATFORMS
x86_64-linux
DEPENDENCIES
jekyll (~> 4.2)
jekyll-plantuml
jekyll-responsive-image
jekyll-toc
webrick (~> 1.7)
BUNDLED WITH
2.3.23
This diff is collapsed.
# Welcome to Jekyll!
#
# This config file is meant for settings that affect your whole blog, values
# which you are expected to set up once and rarely need to edit after that.
# For technical reasons, this file is *NOT* reloaded automatically when you use
# 'jekyll serve'. If you change this file, please restart the server process.
# Site settings
title: Ingegneria del software
email: your-email@domain.com
description: > # this means to ignore newlines until "baseurl:"
Appunti del corso di Ingegneria del software
baseurl: "/sweng" # the subpath of your site, e.g. /blog
url: "/" # the base hostname & protocol for your site
# Outputting
permalink: /:year/:title
# Build settings
markdown: kramdown
exclude:
- README.md
- Gemfile*
- .git*
- .dockerfile
- Dockerfile
- docker-run.sh
- plantuml.jar
plugins:
- jekyll-toc
- jekyll-responsive-image
- jekyll-plantuml
# responsive-image settings
responsive_image:
template: _includes/image.html
sizes:
- width: 320
- width: 480
- width: 800
base_path: assets
output_path_format: assets/resized/%{width}/%{basename}
<footer class="site-footer">
<div class="wrapper">
<h2 class="footer-heading">{{ site.title }}</h2>
<div class="footer-col-wrapper">
<div class="footer-col footer-col-1">
<ul class="contact-list">
<li>La riproduzione è riservata.</li>
</ul>
</div>
<div class="footer-col footer-col-3">
<p>{{ site.description }}</p>
</div>
</div>
</div>
</footer>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{% if page.title %}{{ page.title | escape }}{% else %}{{ site.title | escape }}{% endif %}</title>
<meta name="description" content="{% if page.excerpt %}{{ page.excerpt | strip_html | strip_newlines | truncate: 160 }}{% else %}{{ site.description }}{% endif %}">
<link rel="stylesheet" href="{{ "/css/main.css" | prepend: site.baseurl }}">
<link rel="canonical" href="{{ page.url | replace:'index.html','' | prepend: site.baseurl | prepend: site.url }}">
<link rel="alternate" type="application/rss+xml" title="{{ site.title }}" href="{{ "/feed.xml" | prepend: site.baseurl | prepend: site.url }}">
<script type="text/javascript" async
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-MML-AM_CHTML">
</script>
<script type="text/javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.1/jquery.min.js">
</script>
<script type="text/javascript" async
src="https://cdnjs.cloudflare.com/ajax/libs/imager.js/0.5.1/Imager.min.js">
</script>
<script type="text/javascript" async>
$(document).ready(() => {
$(".plantuml").parent().addClass("plantuml-parent");
})
</script>
</head>
<header class="site-header">
<div class="wrapper">
<a class="site-title" href="{{ site.baseurl }}/">{{ site.title }}</a>
<nav class="site-nav">
<a href="#" class="menu-icon">
<svg viewBox="0 0 18 15">
<path fill="#424242" d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.031C17.335,0,18,0.665,18,1.484L18,1.484z"/>
<path fill="#424242" d="M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0c0-0.82,0.665-1.484,1.484-1.484 h15.031C17.335,6.031,18,6.696,18,7.516L18,7.516z"/>
<path fill="#424242" d="M18,13.516C18,14.335,17.335,15,16.516,15H1.484C0.665,15,0,14.335,0,13.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.031C17.335,12.031,18,12.696,18,13.516L18,13.516z"/>
</svg>
</a>
<div class="trigger">
{% for my_page in site.pages %}
{% if my_page.title %}
<a class="page-link" href="{{ my_page.url | prepend: site.baseurl }}">{{ my_page.title }}</a>
{% endif %}
{% endfor %}
<a class="page-link" href="https://gitlab.com/silab-gang{{ site.baseurl }}">Codice sorgente</a>
</div>
</nav>
</div>
</header>
<a href="https://github.com/{{ include.username }}"><span class="icon icon--github">{% include icon-github.svg %}</span><span class="username">{{ include.username }}</span></a>
<svg viewBox="0 0 16 16"><path fill="#828282" d="M7.999,0.431c-4.285,0-7.76,3.474-7.76,7.761 c0,3.428,2.223,6.337,5.307,7.363c0.388,0.071,0.53-0.168,0.53-0.374c0-0.184-0.007-0.672-0.01-1.32 c-2.159,0.469-2.614-1.04-2.614-1.04c-0.353-0.896-0.862-1.135-0.862-1.135c-0.705-0.481,0.053-0.472,0.053-0.472 c0.779,0.055,1.189,0.8,1.189,0.8c0.692,1.186,1.816,0.843,2.258,0.645c0.071-0.502,0.271-0.843,0.493-1.037 C4.86,11.425,3.049,10.76,3.049,7.786c0-0.847,0.302-1.54,0.799-2.082C3.768,5.507,3.501,4.718,3.924,3.65 c0,0,0.652-0.209,2.134,0.796C6.677,4.273,7.34,4.187,8,4.184c0.659,0.003,1.323,0.089,1.943,0.261 c1.482-1.004,2.132-0.796,2.132-0.796c0.423,1.068,0.157,1.857,0.077,2.054c0.497,0.542,0.798,1.235,0.798,2.082 c0,2.981-1.814,3.637-3.543,3.829c0.279,0.24,0.527,0.713,0.527,1.437c0,1.037-0.01,1.874-0.01,2.129 c0,0.208,0.14,0.449,0.534,0.373c3.081-1.028,5.302-3.935,5.302-7.362C15.76,3.906,12.285,0.431,7.999,0.431z"/></svg>
<a href="https://gitlab.com/{{ include.username }}"><span class="icon icon--gitlab">{% include icon-gitlab.svg %}</span><span class="username">{{ include.username }}</span></a>
<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path d="M15.97 9.058l-.895-2.756L13.3.842c-.09-.282-.488-.282-.58 0L10.946 6.3H5.054L3.28.842C3.188.56 2.79.56 2.7.84L.924 6.3.03 9.058c-.082.25.008.526.22.682L8 15.37l7.75-5.63c.212-.156.302-.43.22-.682"/></svg>
<a href="https://twitter.com/{{ include.username }}"><span class="icon icon--twitter">{% include icon-twitter.svg %}</span><span class="username">{{ include.username }}</span></a>
<svg viewBox="0 0 16 16"><path fill="#828282" d="M15.969,3.058c-0.586,0.26-1.217,0.436-1.878,0.515c0.675-0.405,1.194-1.045,1.438-1.809c-0.632,0.375-1.332,0.647-2.076,0.793c-0.596-0.636-1.446-1.033-2.387-1.033c-1.806,0-3.27,1.464-3.27,3.27 c0,0.256,0.029,0.506,0.085,0.745C5.163,5.404,2.753,4.102,1.14,2.124C0.859,2.607,0.698,3.168,0.698,3.767 c0,1.134,0.577,2.135,1.455,2.722C1.616,6.472,1.112,6.325,0.671,6.08c0,0.014,0,0.027,0,0.041c0,1.584,1.127,2.906,2.623,3.206 C3.02,9.402,2.731,9.442,2.433,9.442c-0.211,0-0.416-0.021-0.615-0.059c0.416,1.299,1.624,2.245,3.055,2.271 c-1.119,0.877-2.529,1.4-4.061,1.4c-0.264,0-0.524-0.015-0.78-0.046c1.447,0.928,3.166,1.469,5.013,1.469 c6.015,0,9.304-4.983,9.304-9.304c0-0.142-0.003-0.283-0.009-0.423C14.976,4.29,15.531,3.714,15.969,3.058z"/></svg>
{% assign smallest = resized | sort: 'width' | first %}
<div class="responsive-image" align="center" style="margin-bottom: 15px">
<img class="responsive-image__placeholder" src="{{ site.baseurl }}/{{ smallest.path }}">
<div class="responsive-image__delayed" data-src="{{ site.baseurl }}/assets/resized/{width}/{{ original.basename }}"></div>
</div>
<script>
$(document).ready(() => {
new Imager('.responsive-image__delayed', {
availableWidths: [{{ resized | map: 'width' | join: ', ' }}],
onImagesReplaced: function() {
$('.responsive-image__placeholder').hide()
}
});
});
</script>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment