Commit ac9adb63 authored by Hallvard Trætteberg's avatar Hallvard Trætteberg
Browse files

Try setup with a mix of docs and slides

parent e94bc69f
Pipeline #138269 passed with stages
in 2 minutes and 10 seconds
......@@ -16,8 +16,7 @@ build:
pages:
script:
- gradle -Pci=gitlab build
- cp -r lectures/build/docs/revealjs public/slides
- ls public/*/*
- cp -r lectures/build/docs public
artifacts:
paths:
- public
== Multi-eksempel
Dette eksemplet viser hvordan rigger et multi-prosjekt med gradle,
med del-prosjekter for
- domenelogikk (core)
- brukergrensesnitt med JavaFX og FXML (fx)
- React-basert web-klient (react)
- web-server med JAX-RS og Jersey (jersey)
=== Bygging med Gradle
https://docs.gradle.org/current/userguide/userguide.html[Gradle] er et såkalt byggesystem, som automatiserer oppgaver knyttet til utvikling og kvalitetssikring av programvare, f.eks.
kompilering, kjørings av enhetstester og integrasjonstester, konvertering av dokumentasjon til HTML, pakking som kjørbart program, osv.
Det finnes teknisk sett ikke grenser for hva et byggesystem kan gjøre, generelt handler det om å automatisere bort alt praktisk fikkel,
som ellers hindrer en å jobbe effektivt.
Det finnes flere byggesystem, de viktigste i Java-verdenen er https://maven.apache.org[Maven] og Gradle, mens Javascript-verdenen har sine, bl.a. https://docs.npmjs.com[npm].
I dette prosjektet har vi valgt å bruke Gradle, fordi det er enklere å skrive og lese oppsettet og trigge kjøring, mer fleksiblet og
det vi ønsker å automatisere i akkurat dette prosjektet er innafor det Gradle håndterer godt. For andre Java-prosjekter https://phauer.com/2018/moving-back-from-gradle-to-maven/[kan Maven være et bedre alternativ].
Siden ett av prosjektet bruker Javascript og npm, så
bruker vi et eget Gradle-tillegg som bygger bro til npm.
Gradle er bygget rundt tre sentrale elementer:
- oppgaver (tasks) - det som automatiseres, f.eks. kompilering, kjøring av tester, osv.
- prosjekter - enhetene som oppgaver utføres innenfor
- tillegg (plugins) - angir hvilke oppgaver som hører til et visst type prosjekt.
Oppsettet for bygging består bl.a. i å angi hvilke (del)-prosjekter som inngår i hovedprosjektet,
hvilke avhengigheter det er til eksterne moduler og mellom prosjektene, hvilke tillegg som bør aktiveres for disse prosjektene
(basert på hva slags type prosjekt det er) og hvordan hver type oppgave skal konfigureres.
NOTE: Det litt spesielle med Gradle er at filene for å sette opp et Gradle-bygg egentlig er https://docs.gradle.org/current/userguide/groovy_build_script_primer.html[kode skrevet i det Java-lignende språket Groovy].
Koden brukes primært til konfigurasjon, altså bygge opp beskrivelsen av oppgavene, prosjektene og tilleggene og. API-et er utformet slik at koden skal se deklarativ ut.
En kan flette inn vanlig kode også, hvis en skjønner litt om hvordan API-et virker. Dette gir enorm fleksibilitet, men kan også gjøre filene vanskelige å forstå.
De to viktigste filene for å sette opp et Gradle-bygg er *settings.gradle* og *build.gradle*.
== Introduksjon til emnet
link:slides/01-course-intro.html[Lysarkene] gir en oversikt over organiseringen av emnet
== Bakgrunn om SCRUM (fra i fjor)
link:slides/02-software-development[Lysarkene] gir en introduksjon til programvareutvikling
plugins {
id 'org.asciidoctor.jvm.convert' version '3.2.0'
id 'org.asciidoctor.jvm.revealjs' version '3.2.0'
id 'org.asciidoctor.jvm.convert' version '3.3.2'
id 'org.asciidoctor.jvm.revealjs' version '3.3.2'
}
repositories {
......@@ -14,7 +14,7 @@ repositories {
}
dependencies {
asciidoctorGems 'rubygems:asciidoctor-revealjs:4.0.1' // asciidoctorGems 'rubygems:asciidoctor-revealjs:2.0.0'
asciidoctorGems 'rubygems:asciidoctor-revealjs:4.1.0' // asciidoctorGems 'rubygems:asciidoctor-revealjs:2.0.0'
}
asciidoctor {
......@@ -22,7 +22,7 @@ asciidoctor {
sources {
include '*.adoc'
}
outputDir file('build/docs/asciidoc')
outputDir file('build/docs')
resources {
from('asciidoc') {
include '**/*.png'
......@@ -30,9 +30,14 @@ asciidoctor {
into '.'
}
logDocuments = true
outputOptions {
backends 'html5'
}
}
asciidoctorj {
version = '2.4.3'
modules {
// diagram.use()
diagram.version '1.5.16'
......@@ -58,7 +63,7 @@ asciidoctorRevealJs {
sources {
include '*.adoc'
}
outputDir file('build/docs/revealjs')
outputDir file('build/docs/slides')
resources {
from('revealjs') {
include 'images/**'
......@@ -85,8 +90,7 @@ asciidoctorRevealJs {
plugins 'rajgoel/chart/Chart.min.js'
//plugins 'IainAndrew/footer-reveal/footer-reveal.min.js'
}
revealjs {
......@@ -112,4 +116,5 @@ revealjsPlugins {
}*/
}
build.dependsOn 'asciidoctor'
build.dependsOn 'asciidoctorRevealJs'
<html>
<head>
<title>Home</title>
<title>Placeholder</title>
</head>
<body>
<h1>Oversikt over lysark</h1>
<ul>
<li><a href="slides/revealjs/01-course-intro.html">Introduksjon til emnet</a></li>
</ul>
<h1>Should be overwritten when published to gitlab pages</h1>
</body>
</html>
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment