[JAVA] CI für Maven-Projekt bei CircleCI

Ausgehend vom folgenden Artikel werde ich diesmal versuchen, CircleCI zu verwenden. https://qiita.com/kasa_le/items/1b97b0d36c81785522a8

CircleCI Hier können Sie sich registrieren. Es gibt nur eine Möglichkeit, eine Verbindung zu Github oder Bitbucket herzustellen. Bitte geben Sie andere Repositories auf (lacht). https://circleci.com/

Charakteristisch

Es gibt viele Vorlagen, und eine bibliotheksähnliche Funktion, die Jobs mit dem Namen Orb zusammenfasst, ist verteilt. Es scheint also, dass die Build-Umgebung der wichtigsten Orte vorhanden ist. Sie können auch .NET, Android usw. erstellen.

Die Verbindung zu Github erfolgt als ** Authorized OAuth Apps **. Es wird unter [Einstellungen] - [Anwendungen] - [Autorisierte OAuth-Apps] Ihres Github-Kontos registriert. (Intern scheint es sich um eine Verbindung mit dem SSH-Schlüssel zu handeln.)

Es unterstützt auch die Cache-Funktion.

Das Betriebssystem-Image unterstützt Linux, Windows und MacOS, aber ich konnte verschiedene Docker-Images abrufen, was diesmal hilfreich war.

Gebühr

Ich denke, der kostenlose Plan kann dem persönlichen Hobby-Gebrauch standhalten, aber beachten Sie, dass das Betriebssystem-Image nur mit Linux oder Windows kompatibel ist. Ansonsten werden Sie monatlich belastet.

https://circleci.com/ja/pricing/ Es scheint, dass es einen großen Unterschied in der Höhe des Geldbetrags zwischen den Plänen gibt, aber wenn Sie sich das unten ansehen, handelt es sich um ein Abrechnungssystem (monatlicher Betrag), das sich nach der Anzahl der Teammitglieder und dem Nutzungsbetrag richtet.

Ich denke, es ist leicht abzuschätzen, ob das Projekt einen stabilen CI-Betrieb hat. Auf der anderen Seite kostet ein Projekt, das nur für einen bestimmten Zeitraum gewartet und entwickelt wird und viel herumläuft, aber bei anderen Operationen nicht viel herumläuft, eine monatliche Mindestgebühr, ohne etwas zu tun. Daher möchte ich diesen Bereich identifizieren und nutzen.

Und im Fall von OSS

Bieten Sie Kunden mit kostenlosen Plänen 400.000 monatliche Credits an

Es scheint jedoch, dass nur Linux verwendet werden kann (aus den FAQ unter https://circleci.com/ja/pricing/). Seien Sie also vorsichtig.

Eine lokale Version ist auch für Unternehmen verfügbar (kontaktieren Sie uns). https://circleci.com/ja/enterprise/

Performance

Es ist ein Bild eines traditionsreichen Geschäfts. Daher ist es derzeit Version 2.1, aber als ich danach gesucht habe, habe ich viele Informationen aus alten Zeiten gefunden, und es war ein wenig schwierig, an die Informationen in der aktuellen Version zu gelangen.

Es scheint auch, dass die Benutzeroberfläche der Website geändert wird und die neue Benutzeroberfläche und die alte Benutzeroberfläche durcheinander sind. Daher bin ich ziemlich verwirrt darüber, wie ich zu diesem Bildschirm zurückkehren kann. Es heißt, dass Sie den alten Bildschirm nach dem 15. April nicht mehr sehen können, sodass er sich danach möglicherweise beruhigt.

Die Markdown-Informationen beim Anhängen eines Statusausweises usw. bieten eine Seite, auf der Sie Ihr eigenes Projekt, Ihren Zweigstellennamen usw. festlegen und in die alte Benutzeroberfläche kopieren können. In der neuen Benutzeroberfläche ist dies jedoch der Fall Dies ist etwas unpraktisch, da die Seite nicht mehr vorhanden ist und sich nur das Beispiel auf der Seite mit den allgemeinen Erklärungen befindet.

Außerdem kann ich den Workflow nicht manuell ausführen. (Obwohl Sie den ausgeführten [erneut ausführen] können)

Aufbau

Verwenden Sie nur die Datei "yml". Erstellen Sie ein Verzeichnis mit dem Namen ".circleci" direkt unter dem Stammverzeichnis des Projekts und platzieren Sie "config.yml" darunter.

Am Ende sind hier die Einstellungen, die für das Erstellen und Testen gut funktioniert haben.

.circleci/config.yml


version: 2.1

jobs:
  build:
    docker:
      - image: 'cimg/openjdk:11.0.6'
    steps:
      - checkout
      - run: 
          name: Build and test
          command: mvn clean install 
      - store_artifacts:
          path: repository/target/repository.jar
      - store_artifacts:
          path: serverapi/target/serverapi.war
      - run:
          name: Save test results
          command: |
            mkdir -p ~/test-results/junit/
            find . -type f -regex ".*/target/surefire-reports/.*xml" -exec cp {} ~/test-results/junit/ \;
          when: always
      - store_test_results:
          path: ~/test-results
      - store_artifacts:
          path: ~/test-results/junit

workflows:
  version: 2
  maven_test:
    jobs:
      - build:
            filters:
              branches:
                  only: feature/for_circleci

Wenn Sie in der ersten Vorlage "Java (Maven)" auswählen, wird eine mit Orb erstellt. In diesem Bild wird jedoch angegeben, dass sich im Submodul-Repository kein "jar" befindet, und dies hängt davon ab. Der Build des Submoduls ist fehlgeschlagen.

Ich habe versucht, die JDK-Version für Orb mit ctag von Executor anzugeben, aber ich konnte sie nicht bestehen, weil ich yml nicht verstanden habe.

Durch Bezugnahme auf den Orb-Quellcode und Verwendung des Docker-Images wie oben beschrieben wurde es daher möglich, mit der neuesten Version von OpenJDK 11 (LTS-Version) zu erstellen, und es wurde erfolgreich.

Maven Orb Seite https://circleci.com/orbs/registry/orb/circleci/maven

Die Schritte sind wie folgt.

Job build

Arbeitsablauf

Für den "Build" -Job habe ich eine Filtereinstellung, die den Zweig auf "Festival / for_circleci" beschränkt.

Impressionen

Der Teil (*) in der Schritterklärung unterstützt die Pfadangabe durch Platzhalter und reguläre Ausdrücke nicht!

Das ist sehr mühsam ...

In Mavens pom können Sie beispielsweise den Dateinamen des Produkts mit dem Tag " " angeben. Diese Angabe ist jedoch optional. Wenn nicht angegeben, standardmäßig

repository-1.1-SNAPSHOP.jar

Kann wie benannt werden. Es kommt mit einer Version. Dies ist leichter zu verstehen, aber wenn Sie dies tun, müssen Sie den Namen der Artefaktdatei "yml" später neu schreiben, wenn Sie die Version aktualisieren, was sehr unpraktisch ist.

In diesem Projekt habe ich dieses Mal versucht, das Problem zu lösen, indem ich es als "repository.jar" mit dem Tag " " behoben habe. Dies zeigt Ihnen jedoch die Version nach dem Herunterladen des Produkts an. Es kann schwierig und schwierig sein.

Recommended Posts

CI für Maven-Projekt bei CircleCI
CI für Maven-Projekt bei Github Actions
CI für Maven-Projekt auf AppVeyor
CI für Maven-Projekt in Azure-Pipelines
Maven-Projekt erstellen
CI / CD-Übung für Anfänger - Teil 3 - Vorbereitung für das Entwicklungsprojekt
Erstellen eines Maven-Webprojekts
So fügen Sie mit CircleCI ein weiteres Projekt als Maven-Bibliothek hinzu und verwenden es zum Erstellen
Stellen Sie Maven das Tomcat-Projekt vor
[Für Super-Anfänger] Maven Super-Einführung