Dies ist der erste Beitrag. Ich möchte eine Spring-Anwendung mit CircleCI CI / CD. Verwenden Sie Heroku als Bereitstellungsziel.
Erstellen Sie zunächst eine Spring-Anwendung mit Spring Initializr. Dies ist eine praktische Site, die eine Vorlage für die Spring-Anwendung erstellt.
Nehmen Sie die Einstellungen wie in der Abbildung unten gezeigt vor und klicken Sie auf "GENERATE". Vergessen Sie nicht, "Spring Web" zu "Abhängigkeiten" hinzuzufügen.
Eine Datei wie "demo.zip" wird heruntergeladen. Entpacken Sie sie also an einen beliebigen Ort.
Erstellen Sie als Nächstes eine einfache Controller-Implementierung und testen Sie sie.
Erstellen Sie zunächst "demo / src / main / java / com / example / demo / controller / HelloController.java".
package com.example.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping(path = "/hello")
public String hello() {
return "hello";
}
}
Es ist ein sehr einfacher Controller, der nur "Hallo" zurückgibt, wenn Sie auf "/ Hallo" zugreifen.
Als nächstes erstellen Sie "demo / src / test / java / com / example / demo / controller / HelloControllerTest.java".
package com.example.demo.controller;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@SpringBootTest
@AutoConfigureMockMvc
class HelloControllerTest {
@Autowired
private MockMvc mockMvc;
@Autowired
WebApplicationContext webApplicationContext;
@BeforeEach
void setUp() {
this.mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
}
@Test
void hello gibt hallo zurück, wenn Sie auf die Seite zugreifen() throws Exception {
final var mvcResult = this.mockMvc.perform(get("/hello"))
.andDo(print()).andExpect(status().isOk()).andReturn();
String content = mvcResult.getResponse().getContentAsString();
assertEquals(content, "hello");
}
}
Ich teste den oben genannten einfachen Controller mit einer Bibliothek namens "MockMvc". Wenn Sie eine gute Umgebung haben, führen Sie den Test hier durch und er sollte "GRÜN" sein.
Jedes Mal, wenn Sie den zuvor erstellten Test an GitHub senden, wird er von CircleCI automatisch ausgeführt. Erstellen Sie .circleci / config.yml
.
version: 2.1
workflows:
java-ci:
jobs:
- test
jobs:
test:
docker:
- image: circleci/openjdk:11-jdk
working_directory: ~/repo
environment:
JVM_OPTS: -Xmx3200m
TERM: dumb
steps:
- checkout
- restore_cache:
keys:
- v1-dependencies-{{ checksum "build.gradle" }}
- v1-dependencies-
- run: gradle dependencies
- save_cache:
paths:
- ~/.gradle
key: v1-dependencies-{{ checksum "build.gradle" }}
- run: ./gradlew test
Ich versuche, "./gradlew test" mit dem Bild "circleci / openjdk: 11-jdk" auszuführen.
Erstellen Sie ein Repository auf GitHub und übertragen Sie die bisherigen Änderungen.
Wählen Sie dann auf der Circle CI-Anmeldeseite (https://circleci.com/vcs-authorize/) die Option "Mit Git Hub anmelden", um sich anzumelden. Wenn nach Eingabe Ihrer GitHub-Kontoinformationen der Bildschirm "Organisation auswählen" angezeigt wird, wählen Sie Ihr GitHub-Konto aus.
Wenn die Seite "Projekte" angezeigt wird, wählen Sie "Projekt einrichten" des diesmal erstellten Repositorys. Wenn Sie einen Bildschirm wie den folgenden sehen, haben Sie diesmal bereits ".circleci / config.yml" erstellt. Wählen Sie also "Manuell hinzufügen".
Dadurch gelangen Sie zur Seite "Pipelines". Wenn der Test ausgeführt wird, ist CI abgeschlossen.
Weitere Informationen zum Einstieg in die Erstellung von CircleCI finden Sie auch auf der offiziellen Seite.
Schließlich werden wir die Anwendung weiterhin bereitstellen. Machen Sie .circleci / config.yml
wie folgt. Ermöglicht die Bereitstellung auf Heroku mithilfe einer Kugel namens circleci / heroku.
version: 2.1
orbs:
heroku: circleci/[email protected]
workflows:
java-ci-cd:
jobs:
- test
- start_deploy:
type: approval
requires:
- test
- heroku/deploy-via-git:
requires:
- start_deploy
jobs:
test:
docker:
- image: circleci/openjdk:11-jdk
working_directory: ~/repo
environment:
JVM_OPTS: -Xmx3200m
TERM: dumb
steps:
- checkout
- restore_cache:
keys:
- v1-dependencies-{{ checksum "build.gradle" }}
- v1-dependencies-
- run: gradle dependencies
- save_cache:
paths:
- ~/.gradle
key: v1-dependencies-{{ checksum "build.gradle" }}
- run: ./gradlew test
-
Als nächstes erstellen Sie die Heroku-Seite. Erstellen Sie Herokus Apps im Stammverzeichnis der Spring-Anwendung, die Sie dieses Mal erstellen.
$ heroku create
Sie können nach dem Erstellen eine beliebige Zeichenfolge übergeben, um sie zu Ihrer bevorzugten Domain zu machen.
Notieren Sie sich den xxx
Teil des https: // xxx.herokuapp.com /
, der von diesem erstellt wurde.
Notieren Sie sich außerdem den Wert "API-Schlüssel" in der Mitte der Heroku-Kontoseite (https://dashboard.heroku.com/account).
Stellen Sie diese beiden Werte in den Umgebungsvariablen von CircleCI ein. Gehen Sie auf der Seite "Pipelines" zu "Projekteinstellungen" → "Umgebungsvariablen". Fügen Sie einen Teil der Domain als "HEROKU_APP_NAME" und den Wert des API-Schlüssels als "HEROKU_API_KEY" hinzu (siehe Abbildung unten).
Fügen Sie abschließend die Konfigurationsdatei für Heroku hinzu.
Fügen Sie dem Stammverzeichnis "Procfile" hinzu.
web: java -jar build/libs/demo-0.0.1.jar --server.port=$PORT
Fügen Sie außerdem system.properties
zum Stammverzeichnis hinzu.
java.runtime.version=11
Dadurch werden die bisherigen Unterschiede auf GitHub übertragen.
Anschließend wird der Job beendet, nachdem der Test auf der Seite "Pipelines" erfolgreich war. Wählen Sie daher "On_hold" aus und klicken Sie auf "Job genehmigen", um die Bereitstellung auszuführen.
Die CD ist fertig, wenn sie endlich "heroku / deploy-via-git" erreicht.
Hier hat den Code dieses Mal erstellt. Wenn Sie möchten, lesen Sie ihn bitte.
Recommended Posts