Installieren Sie die neueste Version von Jenkins unter Ubuntu 16

Dieses Tutorial beschreibt die Installation der neuesten Version des Automatisierungsservers ** Jenkins ** auf ** Alibaba Cloud ECS Ubuntu 16 **.

Alibaba Cloud Tech Share Autor Liptan Biswas, Tech Share /techshare?spm=a2c65.11461447.0.0.789b4a54a4WRLd) ist ein Alibaba Cloud-Incentive-Programm, das den Austausch von technischem Wissen und Best Practices innerhalb der Cloud-Community fördert.

Jenkins ist ein selbst gehosteter Open Source-Automatisierungsserver. Es ist bei DevOps-Ingenieuren sehr beliebt für die Implementierung einer kontinuierlichen Integration und Bereitstellung im Softwareentwicklungslebenszyklus. Jenkins wurde in Java geschrieben und bietet sofort einsatzbereite Unterstützung für die Erstellung von Apache Ant-, Maven- und sbt-Projekten. Sie können auch Batch-Skripte für Linux-Shells und Windows ausführen. Mehrere Versionsverwaltungssysteme wie Git, Mercurial, Subversion und CVS werden von Jenkins vollständig unterstützt. Es stehen mindestens 1000 Arten von Plug-Ins zur Verfügung, um die Funktionalität Ihrer Anwendung zu verbessern.

Builds in Jenkins können auf verschiedene Arten ausgelöst werden, z. B. durch Planen eines Builds zu einem bestimmten Zeitpunkt oder Aufrufen der Build-URL, nachdem eine Änderung im Quellcode des Versionskontrollsystems festgestellt wurde. Wenn der Build ausgelöst wird, ruft Jenkins den Quellcode aus dem Repository ab und startet den Build. Die automatisierten Tests werden ausgeführt und die Ausgabe gemäß den bereitgestellten Einstellungen gespeichert. Jenkins kann auch Pakete liefern, die nach einem erfolgreichen Build generiert wurden.

Dieses dreiteilige Tutorial zeigt Ihnen, wie Sie Jenkins installieren und wie Sie Jenkins für die kontinuierliche Integration und Bereitstellung verwenden.

Teil 1 dieses Tutorials ist mit der Ubuntu 16.04 64-Bit-Alibaba-Cloud Elastic Computer Service (ECS) -Instanz auf dem neuesten Stand. Installieren Sie die Version von Jenkins Automation Server. Richten Sie außerdem einen sicheren Nginx-Reverse-Proxy ein, um auf Ihre Jenkins-Instanz zuzugreifen. In Teil 2 erstellen Sie eine Beispiel-Java-Webanwendung als Maven-Projekt. Wir werden auch mit dem Erstellen eines Build-Jobs in Jenkins fortfahren. Schließlich automatisiert Teil 3 des Tutorials den Erstellungsprozess. Sie erfahren auch, wie Sie Jenkins für die kontinuierliche Lieferung verwenden.

Voraussetzungen

1, [Alibaba Cloud ECS](https://www.alibabacloud.com/product/ecs?spm=a2c65.11461447.0.0.789b4a54a4WRLd&biz_params=%7B%22intl%22:%22%7B%5C%22referralCode%5C% :% 5C% 22fmj2og% 5C% 22% 7D% 22% 7D) Ubuntu 16.04 64-Bit ist auf der Instanz installiert. 2. Eine Firewall- oder Sicherheitsgruppenregel, die so konfiguriert ist, dass die Ports "80" und "443" zugelassen werden. 3, Für ECS-Instanzen Erforderlich [Domainname](https: // www) .alibabacloud.com / domain? spm = a2c65.11461447.0.0.789b4a54a4WRLd & biz_params =% 7B% 22intl% 22:% 22% 7B% 22referralCode% 22:% 22fmj2og% 22% 7D% 22% 7D).

Anweisungen zum Erstellen und Herstellen einer Instanz finden Sie in der Kurzanleitung (https://www.alibabacloud.com/help/doc-detail/25422.htm?spm=a2c65.11461447.0.0.789b4a54a4WRLd). "Bitte folgen Sie dem. In diesem Tutorial haben Sie bereits eine Alibaba-Instanz erstellt und "jenkins.example.com" so festgelegt, dass sie auf Ihre Ubuntu-Instanz verweist. Es wird angenommen, dass Sie es sind. Führen Sie nach dem Herstellen einer Verbindung zur Instanz über SSH den folgenden Befehl aus, um den Repository-Cache und das Basissystem zu aktualisieren.

apt update && apt -y upgrade & apt -y autoremove

Es ist am besten, einen Sudo-Benutzer zu erstellen und alle Befehle auszuführen, anstatt alle Befehle als Root-Benutzer auszuführen. Jetzt erstellen wir einen Sudo-Benutzer. Sie können einen beliebigen Benutzernamen verwenden.

adduser aliyun

Fügen Sie den Benutzer nach dem Erstellen der Sudo-Gruppe hinzu.

usermod -aG sudo aliyun

Wechseln Sie nun zum neu erstellten Benutzer.

su - aliyun

Einstellung des Hostnamens

Legen Sie den vollqualifizierten Domänennamen oder den vollqualifizierten Domänennamen als Hostnamen des Servers fest. Das Festlegen des Hostnamens ist nicht obligatorisch, aber Jenkins zeigt eine Warnmeldung an, wenn der Hostname nicht richtig eingestellt ist.

sudo hostnamectl set-hostname jenkins.example.com

Fügen Sie in ähnlicher Weise den Domänennamen zur Datei / etc / hosts hinzu.

echo "127.0.0.0.1 jenkins.example.com" | sudo tee -a /etc/hosts

Java-Installation

Jenkins ist in Java geschrieben und Sie müssen möglicherweise in Zukunft Java-Anwendungen erstellen. Fahren wir also mit der Installation des Java Development Kit und des JDK fort. Jenkins unterstützt sowohl Oracle Java 8 als auch OpenJDK 8. Dieses Tutorial installiert Oracle Java Version 8. Oracle Java ist sowohl mit Java Runtime (JRE) als auch mit JDK gepackt. Fügen Sie das Oracle Java PPA-Repository hinzu.

sudo apt install -y software-properties-common
sudo add-apt-repository --yes ppa:webupd8team/java
sudo apt update

Installieren Sie Oracle Java 8.

sudo apt -y install oracle-java8-installer

Sie können überprüfen, ob Java erfolgreich installiert wurde, indem Sie den Befehl java -version ausführen.

aliyun@jenkins:~$ java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

Installieren Sie die folgenden Pakete und legen Sie den Standardpfad für java_home fest.

sudo apt -y install oracle-java8-set-default

Sie können jetzt überprüfen, ob die Variable JAVA_HOME festgelegt ist, indem Sie echo $ JAVA_HOME ausführen. Möglicherweise müssen Sie sich auch abmelden und wieder anmelden, um die gewünschte Ausgabe zu erhalten.

aliyun@jenkins:~$ echo $JAVA_HOME
/usr/lib/jvm/java-8-oracle

Installieren Sie Jenkins

Jenkins kann einfach über ein Repository installiert werden, das das Projekt selbst aktiv verwaltet. Durch die Installation über das Repository können Sie in Zukunft problemlos ein Upgrade durchführen, indem Sie den Befehl apt upgrade direkt verwenden. Importieren Sie den Schlüssel zum Signieren des Pakets in das Jenkins-Repository. Dadurch wird sichergestellt, dass das richtige Paket installiert ist.

wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -.

Erstellen Sie eine neue Repository-Listendatei für Jenkins.

echo "deb https://pkg.jenkins.io/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list

Installieren Sie Jenkins.

sudo apt update
sudo apt -y install jenkins git

Ich installiere Jenkins aus einem vom Projekt verwalteten Repository, daher muss ich die neueste verfügbare Version der Anwendung installieren. Git ist erforderlich, um das Git-Plugin auf Jenkins auszuführen. Führen Sie es aus, um Jenkins zu starten und es beim Start automatisch starten zu lassen.

sudo systemctl start jenkins
sudo systemctl enable jenkins

Sie können den Status des Dienstes mit dem Befehl systemctl status jenkins überprüfen.

aliyun@jenkins:~$ sudo systemctl status jenkins
● jenkins.service - LSB: Start Jenkins at boot time
   Loaded: loaded (/etc/init.d/jenkins; bad; vendor preset: enabled)
   Active: active (exited) since Fri 2018-05-04 12:37:03 UTC; 35s ago
     Docs: man:systemd-sysv-generator(8)

May 04 12:37:02 jenkins.liptan.tk systemd[1]: Starting LSB: Start Jenkins at boot time...
May 04 12:37:02 jenkins.liptan.tk jenkins[4787]:  * Starting Jenkins Automation Server jenkins

Führen Sie den folgenden Befehl aus, um die mit dem Jenkins-Server selbst verknüpften Protokolle anzuzeigen:

tail -f /var/log/jenkins/jenkins.log

Der erste Start von Jenkins wird einige Minuten dauern. Wenn in der Ausgabe die folgende Zeile angezeigt wird, ist Ihre Anwendung bereit.

aliyun@jenkins:~$ tail -f /var/log/jenkins/jenkins.log
May 02, 2018 2:14:29 PM hudson.WebAppMain$3 run
INFO: Jenkins is fully up and running

Jenkins läuft jetzt auf Ihrem Server. Fahren Sie mit der Nginx-Installation fort, damit Sie mit Ihrem Domain-Namen problemlos auf Ihre Jenkins-Instanz zugreifen können.

Hinweis: Wenn der Domänenname nicht so konfiguriert ist, dass er auf die Alibaba Cloud ECS-Instanz verweist, öffnen Sie den Port "808080" über die Sicherheitsgruppe der ECS-Instanz und öffnen Sie [http://172.16.0.1:8080](http: / /172.16.0.1:8080/?spm=a2c65.11461447.0.0.789b4a54a4WRLd), 172.16.0.1 kann auf die Jenkins-Instanz zugreifen, bei der es sich um die öffentliche IP-Adresse der ECS-Instanz handelt. Überspringen Sie den Nginx-Installationsabschnitt und folgen Sie dem Tutorial von Final Setup.

Installieren Sie Nginx

Jenkins verfügt über einen integrierten Webserver zum Bereitstellen von Anwendungen auf Port "808080". Es wird jedoch nicht empfohlen, einen solchen Webserver im Internet in einer Produktionsumgebung zu veröffentlichen. In diesem Lernprogramm wird Nginx als Reverse-Proxy verwendet, der Anforderungen von Clients an den Jenkins-Server weiterleitet. Das Einrichten eines Reverse-Proxys mit einem Domänennamen verbessert auch die Zugänglichkeit der Instanz, sodass Sie sich die IP-Adresse der Instanz nicht merken müssen.

Installieren Sie den Nginx-Webserver.

sudo apt -y install nginx

Starten Sie Nginx so, dass der Server beim Start automatisch gestartet wird.

sudo systemctl start nginx
sudo systemctl enable nginx

Es ist auch wichtig, Ihren Webserver mit SSL / TLS-Verschlüsselung zu schützen, da Anmeldungen und andere wichtige Daten vom Client an den Webserver gesendet werden und umgekehrt. Wenn die ausgetauschten Daten unverschlüsselt sind, können die Daten im Netzwerk gestohlen werden. In diesem Lernprogramm wird das kostenlose SSL-Zertifikat von Let's Encrypt CA verwendet. Wenn Sie ein produktionsfreundlicheres und zuverlässigeres SSL verwenden möchten, SSL-Zertifikat von Alibaba Cloud erwerben können.

Let's Encrypt bietet "Certbot", ein Tool, mit dem Zertifikate einfach angefordert und generiert werden können. Fügen Sie das Certbot-Repository zu Ihrem System hinzu und installieren Sie Certbot.

sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt update
sudo apt -y install certbot

Damit Certbot den Besitz einer Domain überprüfen kann, ist es wichtig, dass die Domain auf eine ECS-Instanz verweist. Andernfalls wird das Domänenzertifikat nicht generiert und ein Fehler angezeigt. Verwenden Sie Certbot, um ein Zertifikat anzufordern.

sudo certbot certonly --webroot -w /var/www/html -d jenkins.example.com

Wenn das Zertifikat generiert wird, wird eine Ausgabe ähnlich der folgenden angezeigt:

Obtaining a new certificate
Performing the following challenges:
http-01 challenge for jenkins.example.com
Using the webroot path /var/www/html for all unmatched domains.
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/jenkins.example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/jenkins.example.com/privkey.pem
   ...

Erstellen Sie einen Cron-Job für die automatische Verlängerung, bevor das Zertifikat abläuft.

{ sudo crontab -l; echo '36 2 * * * * /usr/bin/certbot renew --post-hook "systemctl reload nginx"; } } | sudo crontab -l.

Sie können überprüfen, ob ein Cron-Job erstellt wurde, indem Sie den Befehl sudo crontab -l ausführen.

aliyun@jenkins:~$ sudo crontab -l
36 2 * * * /usr/bin/certbot renew --post-hook "systemctl reload nginx"

Erstellen Sie einen neuen Nginx-Serverblock für den Jenkins-Reverse-Proxy.

sudo nano /etc/nginx/sites-available/jenkins

Geben Sie im Editor die folgenden Einstellungen ein. Stellen Sie sicher, dass alle Vorkommen der Beispieldomäne durch die tatsächliche Domäne ersetzt werden.

upstream jenkins {
  keepalive 32;
  server 127.0.0.1:8080;
}
server {
    listen 80;
    server_name jenkins.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443;
    server_name jenkins.example.com;

    root            /var/cache/jenkins/war/;
    ssl_certificate           /etc/letsencrypt/live/jenkins.example.com/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/jenkins.example.com/privkey.pem;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    gzip  on;
    gzip_http_version 1.1;
    gzip_vary on;
    gzip_comp_level 6;
    gzip_proxied any;
    gzip_types text/plain text/css application/json application/javascript application/x-javascript text/javascript text/xml application/xml application/rss+xml application/atom+xml application/rdf+xml;
    gzip_buffers 16 8k;
    gzip_disable "MSIE [1-6].(?!.*SV1)";
    
    access_log            /var/log/nginx/jenkins.access.log;
    error_log            /var/log/nginx/jenkins.error.log;
    ignore_invalid_headers off;

location ~ "^/static/[0-9a-fA-F]{8}\/(.*)$" {
    rewrite "^/static/[0-9a-fA-F]{8}\/(.*)" /$1 last;
    }

location /userContent {
    root /var/lib/jenkins/;
    if (!-f $request_filename){
    rewrite (.*) /$1 last;
    break;
    }
    sendfile on;
    }
    
location @jenkins {
    sendfile off;
    proxy_pass         http://jenkins;
    proxy_redirect     default;
    proxy_http_version 1.1;

    proxy_set_header   Host              $host;
    proxy_set_header   X-Real-IP         $remote_addr;
    proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
    proxy_set_header   X-Forwarded-Proto $scheme;
    proxy_max_temp_file_size 0;
    client_max_body_size       10m;
    client_body_buffer_size    128k;

    proxy_connect_timeout      90;
    proxy_send_timeout         90;
    proxy_read_timeout         90;
    proxy_request_buffering    off;
    proxy_set_header Connection "";
    }

location / {
    if ($http_user_agent ~* '(iPhone|iPod)') {
    rewrite ^/$ /view/iphone/ redirect;
    }
try_files $uri @jenkins;
    }
}

Aktivieren Sie die Konfigurationsdatei.

sudo ln -s /etc/nginx/sites-available/jenkins /etc/nginx/sites-enabled/jenkins

Sie können die Konfigurationsdatei auf Fehler überprüfen, indem Sie sudo nginx -t ausführen.

aliyun@jenkins:~$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Starten Sie den Nginx-Webserver neu, damit die Konfigurationsänderungen wirksam werden.

sudo systemctl restart nginx

Der Zugriff auf Port "8080" ist nicht mehr erforderlich, da wir den Nginx-Reverse-Proxy für den Zugriff auf Jenkins verwenden. Wenn Sie den Zugriff auf Port "808080" in der Sicherheitsgruppe der Firewall oder ECS-Instanz aktiviert haben, können Sie ihn sicher entfernen. Ändern Sie die Einstellungen in der Jenkins-Standardkonfigurationsdatei, um den in Jenkins integrierten Server so zu konfigurieren, dass er nur auf Verbindungen vom lokalen Host wartet. Öffnen Sie die Einstellungsdatei.

sudo nano /etc/default/jenkins

Suchen Sie die folgende Zeile am Ende der Datei:

JENKINS_ARGS="--webroot=/var/cache/$NAME/war --httpPort=$HTTP_PORT”

Ändern Sie die Einstellungen wie folgt.

HTTP_HOST=127.0.0.1

JENKINS_ARGS="--webroot=/var/cache/$NAME/war --httpPort=$HTTP_PORT --httpListenAddress=$HTTP_HOST"

Speichern Sie die Datei und beenden Sie den Editor. Führen Sie die Jenkins-Instanz aus und starten Sie sie neu.

sudo systemctl restart jenkins

Der integrierte Server von Jenkins akzeptiert jetzt nur Verbindungen von lokalen Hosts. Nur der Nginx-Proxy kann sicher darauf zugreifen.

Sie können von Ihrem bevorzugten Browser aus auf Ihre Jenkins-Instanz zugreifen, indem Sie die URL https://jenkins.example.com besuchen.

Endgültige Einstellung

Während der Installation generiert Jenkins ein anfängliches Passwort. Dieses anfängliche Passwort ist erforderlich, um das Jenkins-Setup in Ihrem Browser abzuschließen. Wenn Sie über Ihren Browser auf Ihre Jenkins-Instanz zugreifen, werden Sie nach einem Administratorkennwort gefragt. Drucken Sie das anfängliche Administratorkennwort auf dem Terminal aus.

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

Sie sollten eine ähnliche Ausgabe sehen.

aliyun@jenkins:~$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword
84ae7775fec245e69305c6db08389d69

Kopieren Sie das Passwort von Ihrem Gerät und fügen Sie es in Ihren Browser ein.

image.png

Wenn das ursprüngliche Kennwort erfolgreich überprüft wurde, fordert Setup die Installation eines Plug-Ins an. Da Plugins einfach über die Jenkins-Oberfläche verwaltet werden können, wählen Sie hier die Option Vorgeschlagene Plugins installieren. Dadurch werden die beliebtesten und nützlichsten Plug-Ins installiert, um die Funktionalität von Jenkins zu erweitern.

image.png

Zu diesem Zeitpunkt installiert SETUP das empfohlene Plug-In. Es wird in wenigen Minuten abgeschlossen sein. Der Installationsstatus jedes Plug-Ins wird angezeigt.

image.png

Wenn das Plug-In erfolgreich installiert wurde, werden Sie vom Setup aufgefordert, ein Administratorkonto zu erstellen. Geben Sie die grundlegenden Kontodaten ein, nach denen Jenkins fragen wird.

image.png

Schließlich sehen Sie eine Nachricht, dass Jenkins bereit ist. Gehen Sie zu Anmelden und melden Sie sich mit dem zuvor erstellten Administratorkonto an. Das Jenkins-Dashboard wird angezeigt.

image.png

Fazit

Das ist das Ende. Alibaba Cloud ECS Wir haben erfolgreich einen Jenkins-Automatisierungsserver unter Ubuntu 16.04 installiert. Wir haben auch einen Nginx-Reverse-Proxy eingerichtet, um die Sicherheit mit Let's Encrypt SSL zu gewährleisten. Nachdem Ihre Jenkins-Instanz fertig ist, können Sie mit dem Erstellen Ihres ersten Build-Jobs fortfahren.

[Zweite Hälfte des Tutorials](https://community.alibabacloud.com/blog/ci%2Fcd-with-jenkins---part-2%3A-use-jenkins-for-continuous-integration_593720?spm=a2c65.11461447.0. In 0.789b4a54a4WRLd) erstellen wir eine webbasierte Java-Beispielanwendung als Maven-Projekt. Konfigurieren Sie Jenkins außerdem für die Arbeit mit JDK, Git und Maven. Richten Sie abschließend ein Jenkin-basiertes Build-Projekt für die Beispielanwendung ein und führen Sie den ersten Build aus.

Recommended Posts

Installieren Sie die neueste Version von Jenkins unter Ubuntu 16
Installieren Sie OpenJDK (Java) auf dem neuesten Ubuntu
Erstellen Sie das neueste Samba 4 unter Ubuntu 20.04
Headless Installation von Ubuntu 20.10 auf Raspberry Pi
Installieren Sie pyqt5 auf Ubuntu
Installieren Sie Ruby unter Ubuntu 20.04
Installieren Sie den neuesten Hardwaretreiber von EL Repo unter CentOS
Installieren Sie MySQL 5.6 unter CentOS6 [So geben Sie die Version an]
Installiere ag (den silbernen Sucher) [unter CentOS / Ubuntu / Mac]
Installieren Sie OpenJDK7 (JAVA) unter Ubuntu 14.04
Installieren Sie den zabbix agent (5.0) unter Ubuntu 18.04
Installieren von MAV Proxy unter Ubuntu 18.04
Installieren Sie Java unter WSL Ubuntu 18.04
Installieren Sie Jenkins auf Dockers CentOS
Installieren Sie Ubuntu Desktop 20.10 auf RaspberryPi4
Installieren Sie WordPress 5.5 unter Ubuntu 20.04 LTS
Installieren Sie Ubuntu Server 20.04 auf Btrfs
Hinweis: Installieren Sie PostgreSQL 9.5 unter Ubuntu 18.04
Installieren Sie, indem Sie die Version von Django in der Docker-Umgebung angeben
Installieren Sie Docker und Docker-Compose in kürzester Zeit auf Ubuntu
Die Installation von Jenkins 2.60.1-1 0 oder höher schlägt unter Ubuntu 14.04 fehl (mit Groll)
Installieren Sie AWS IoT Greengrass unter Ubuntu
Installieren Sie JDK und JRE unter Ubuntu 16.10
[Java Edition] Geschichte der Serialisierung
Überprüfen Sie die Version von Cent OS
Hinweis zum Pfad von request.getRequestDispatcher
So installieren Sie WildFly unter Ubuntu 18.04
Installieren Sie SonarQube auf der ECS-Instanz unter Ubuntu 16.04
Installieren Sie Ruby unter Ubuntu 20.04 mit rbenv
So installieren und konfigurieren Sie das Überwachungstool "Graphite" unter Ubuntu
Installieren Sie Ubuntu20.04 auf RaspberryPi 4 und erstellen Sie Kubernetes, um den Container auszuführen
Zeigen Sie Text über dem Bild an
Samshin über den Wert des versteckten Feldes
Ich möchte PHP 7.2 unter Ubuntu 20.04 installieren.
Installieren Sie den Webmail-Client Rainloop unter CentOS 8
Das Problem des Einfrierens aufgrund eines plötzlichen "EXT4-fs-Fehlers" unter Ubuntu 20.04 wurde behoben
Rückblick auf die Grundlagen von Java
Überprüfen Sie die Version der Standard-Web-Software.
Die Geschichte der Installation von raspi-config unter Ubuntu 18.04 und der Änderung der Grundeinstellungen von GPIO
[Oracle Cloud] Installieren Sie das kostenlose Oracle JDK 11 (LTS) auf einer virtuellen Instanz von OCI
So überprüfen Sie die neueste Version von io.spring.platform für das Schreiben in pom.xml von Spring (STS)
Meine Gedanken zur Zukunft [Gradle App Version ①]