Continuing from the following article, this time I will use Github Actions. https://qiita.com/kasa_le/items/1ce0d9e34f29e34835cb
Github Actions
You can set / browse from the [Actions] tab of each repository on Github.
A CI tool dedicated to Github. Of course, there are official actions, but the stance of making them as open source is "likely", isn't it? Action can be found on the Marketplace. https://github.com/marketplace?type=actions
There are no usage restrictions for public repositories. Private repositories are billed on a pay-as-you-go basis, but there is a free monthly range. I think this will be helpful for the estimation calculation method. https://qiita.com/euxn23/items/8cec3a3b8de9e3213424
Even if you use it for free, it is very convenient to be able to choose Windows / Ubuntu / macOS.
It seems like it's about to come, but after all, Microsoft has been added, so there will be some knowledge on Azure Pipelines, and I think it will definitely be used in the future. However, on the contrary, it may be integrated into Azure Pipelines and disappear ?: grin:
Use the yml
file.
Create a directory called .github / wrokflows
directly under the root of the project and place it under that directory.
If you click the [Actions] tab first, you can choose from various templates, and the first commit will be done to the above folder.
As for the template, I can find two Maven builds, but this time it is only a build, so I used the one in the red frame.
Here is the yml that finally achieved its purpose.
./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
The steps are not so different from other CI tools, so I will omit them, but only the points.
--Set up JDK 11
step
--I'm using the official action setup-java
. However, it seems that the Zulu version of OpenJDK will be adopted here (Zulu is basically paid, but it is free if you use it from Azure, is it related?). Some people have made the AdoptOpenJDK version, so it's a good idea to search for it on the Marketplace and use it.
--Gather test results
step
mvn site -DgenerateReports=false -Daggregate=true surefire-report:report-only
--Since you can't see the JUnit test report on the page (although you can tell if the test failed depending on the success or failure of Workflow), even if you download the xml, it is difficult for human eyes to understand, so use surefire-report to issue it. I also try to save the html version.
---Daggregate = true
is an option to aggregate the results of submodules.
--site -DgenerateReports = false
outputs only CSS files and image files.
――After mkdir
, it is a step to create a folder and copy all of it to Artifact so that you can upload Junit result report in xml format to Artifact. (As described below
When uploading to Artifact, regular expressions and wildcards cannot be used, so they are put together in one directory)** Addendum 2020/03/25 ** ~~ With this writing method, even if the test fails, the build success will be reported, so it seems that you have to think about other methods. I was in trouble ... ~~
** Addendum 2020/03/27 ** It is now possible to issue an html report issued by surefire while detecting a test error, so I am modifying it to yml with that pattern.
I also touched it on the Android build (https://qiita.com/kasa_le/items/5feb953cd50489c30c90), and since I was familiar with it, it was easier to set up than the previous two (AppVeyor, CircleCI). I was a little addicted to the surefire report.
It would be nice to see the test results on the Actions page. Now I can't see it until I download and unzip it one by one, so that's a hassle.
I'm wondering if it will be possible by uploading the html spit out from surefire to Github Pages, but I haven't investigated it in detail yet.
Oh yeah, Artifact's path doesn't seem to be able to use regular expressions or wildcards like CircleCI, which is inconvenient.
Recommended Posts