[JAVA] CI für Maven-Projekt bei Github Actions

Ausgehend vom folgenden Artikel werde ich dieses Mal Github-Aktionen verwenden. https://qiita.com/kasa_le/items/1ce0d9e34f29e34835cb

Github Actions

Es kann auf der Registerkarte [Aktionen] jedes Github-Repositorys festgelegt / angezeigt werden.

githubactions.png

Charakteristisch

Ein CI-Tool für Github. Natürlich gibt es offizielle Aktionen, aber die Haltung, sie mit Open Source zu machen, ist "wahrscheinlich", nicht wahr? Action finden Sie auf dem Marktplatz. https://github.com/marketplace?type=actions

Gebühr

Es gibt keine Nutzungsbeschränkungen für öffentliche Repositorys. Private Repositories werden nach dem Umlageverfahren abgerechnet, es gibt jedoch eine kostenlose monatliche Spanne. Ich denke, dies wird für die Schätzungsberechnungsmethode hilfreich sein. https://qiita.com/euxn23/items/8cec3a3b8de9e3213424

Selbst wenn Sie es kostenlos verwenden, ist es sehr praktisch, Windows / Ubuntu / macOS auswählen zu können.

Performance

Es scheint, als würde es bald kommen, aber mit Microsoft wird es sicher einige Erkenntnisse aus Azure Pipelines geben, und ich denke, dass es definitiv in Zukunft verwendet wird. Im Gegenteil, es kann in Azure Pipelines integriert werden und verschwinden ?: Grin:

Aufbau

Verwenden Sie die Datei "yml". Erstellen Sie ein Verzeichnis mit dem Namen ".github / wrokflows" direkt unter dem Stammverzeichnis des Projekts und platzieren Sie es unter diesem Verzeichnis.

Wenn Sie zuerst auf die Registerkarte [Aktionen] klicken, können Sie aus verschiedenen Vorlagen auswählen. Das erste Festschreiben erfolgt im obigen Ordner.

Was die Vorlage betrifft, kann ich zwei Maven-Builds finden, aber dieses Mal habe ich nur den Build verwendet, also habe ich den im roten Rahmen verwendet.

github_actions_template.png

Hier ist das yml, das endlich seinen Zweck erreicht hat.

./github/workflows/maven.yml


Skip to content
Search or jump to…

Pull requests
Issues
Marketplace
Explore
 
@le-kamba 
le-kamba
/
JerseySample
1
00
 Code Issues 0 Pull requests 0 Actions Projects 0 Wiki Security Insights Settings
Update maven.yml
feature/for_github_actions @le-kamba  8ba108d
 
Java CI with Maven
on: push
 
Java CI with Maven
This run
Workflow file
.github/workflows/maven.yml
# This workflow will build a Java project with Maven
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven

name: Java CI with Maven

on:
  push:
    branches: [ feature/for_github_actions ]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Set up JDK 11
      uses: actions/setup-java@v1
      with:
        java-version: '11.0.6'
    - name: Build and Test with Maven
      run: mvn clean install
    - name: Archive JAR
      if: always()
      uses: actions/upload-artifact@v1
      with: 
        name: repository
        path: repository/target/repository.jar
    - name: Archive WAR
      if: always()
      uses: actions/upload-artifact@v1
      with: 
        name: serverapi
        path: serverapi/target/serverapi.war
    - name: Gather test results
      if: always()
      run: |
        mvn site -DgenerateReports=false -Daggregate=true surefire-report:report-only
        mkdir -p test-results/junit/
        find . -type f -regex ".*/target/surefire-reports/.*xml" -exec cp {} test-results/junit/ \;
    - name: Archive test resuls xml
      if: always()
      uses: actions/upload-artifact@v1
      with: 
        name: test-results
        path: test-results/junit/
    - name: Archive test resuls html
      if: always()
      uses: actions/upload-artifact@v1
      with: 
        name: test-results-html
        path: target/site

Die Schritte unterscheiden sich nicht so sehr von anderen CI-Tools, daher werde ich sie weglassen, sondern nur die Punkte.

** Nachtrag 2020/03/25 ** ~~ Bei dieser Schreibmethode wird der Build-Erfolg gemeldet, auch wenn der Test fehlschlägt. Es scheint also, dass Sie über andere Methoden nachdenken müssen. Ich war in Schwierigkeiten ... ~~

** Nachtrag 2020/03/27 ** Es ist jetzt möglich, einen von safefire ausgegebenen HTML-Bericht auszugeben, während ein Testfehler festgestellt wird. Daher ändere ich ihn mit diesem Muster in yml.

Impressionen

Ich habe es auch beim Android-Build (https://qiita.com/kasa_le/items/5feb953cd50489c30c90) angesprochen, und da ich damit vertraut war, war es einfacher einzurichten als die beiden vorherigen (AppVeyor, CircleCI). Ich war ein wenig süchtig nach dem todsicheren Bericht.

Es wäre schön, die Testergebnisse auf der Seite Aktionen zu sehen. Jetzt kann ich es erst sehen, wenn ich es einzeln heruntergeladen und entpackt habe. Das ist also ein Ärger.

Ich frage mich, ob es möglich sein wird, die HTML-Spucke aus todsicheren Gründen auf Github Pages hochzuladen, aber ich habe sie noch nicht im Detail untersucht.

Oh ja, der Pfad von Artifact scheint nicht in der Lage zu sein, reguläre Ausdrücke oder Platzhalter wie CircleCI zu verwenden, was unpraktisch ist.

Recommended Posts

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
Erstellen eines Maven-Webprojekts
Benutzer von GitHub-Aktionen bereiten sich jetzt auf das Docker Hub-Pull-Limit vor
[Circle CI] Verfahren für die automatische Bereitstellung beim Push auf GitHub