Skip to content

Commit a246c6a

Browse files
committed
Add GitHub workflow to build Docker images
1 parent 9b6673e commit a246c6a

File tree

3 files changed

+231
-86
lines changed

3 files changed

+231
-86
lines changed

.github/workflows/ci.yaml

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
name: CI Pipeline
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
pull_request:
8+
branches:
9+
- "**"
10+
11+
jobs:
12+
build:
13+
name: Build
14+
runs-on: ubuntu-latest
15+
steps:
16+
- name: Checkout Code
17+
uses: actions/checkout@v3
18+
- name: Set up Java
19+
uses: actions/setup-java@v4
20+
with:
21+
distribution: "graalvm"
22+
java-version: "21"
23+
- name: Cache Gradle Packages
24+
uses: actions/cache@v4
25+
with:
26+
path: ~/.gradle/caches
27+
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
28+
- name: Build Project
29+
run: ./gradlew assemble
30+
env:
31+
GRADLE_OPTS: "-Dorg.gradle.daemon=false"
32+
33+
pmd:
34+
name: PMD Analysis
35+
runs-on: ubuntu-latest
36+
needs: build
37+
steps:
38+
- name: Checkout Code
39+
uses: actions/checkout@v3
40+
- name: Set up Java
41+
uses: actions/setup-java@v4
42+
with:
43+
distribution: "graalvm"
44+
java-version: "21"
45+
- name: Cache Gradle Packages
46+
uses: actions/cache@v4
47+
with:
48+
path: ~/.gradle/caches
49+
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
50+
- name: Run PMD Analysis
51+
run: ./gradlew pmdMain
52+
53+
checkstyle:
54+
name: Checkstyle Analysis
55+
runs-on: ubuntu-latest
56+
needs: build
57+
steps:
58+
- name: Checkout Code
59+
uses: actions/checkout@v3
60+
- name: Set up Java
61+
uses: actions/setup-java@v4
62+
with:
63+
distribution: "graalvm"
64+
java-version: "21"
65+
- name: Cache Gradle Packages
66+
uses: actions/cache@v4
67+
with:
68+
path: ~/.gradle/caches
69+
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
70+
- name: Run Checkstyle
71+
run: ./gradlew checkstyleMain
72+
73+
test:
74+
name: Unit Tests
75+
runs-on: ubuntu-latest
76+
needs: build
77+
steps:
78+
- name: Checkout Code
79+
uses: actions/checkout@v3
80+
- name: Set up Java
81+
uses: actions/setup-java@v4
82+
with:
83+
distribution: "graalvm"
84+
java-version: "21"
85+
- name: Cache Gradle Packages
86+
uses: actions/cache@v4
87+
with:
88+
path: ~/.gradle/caches
89+
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
90+
- name: Run Unit Tests
91+
run: ./gradlew test
92+
93+
docker-image-native:
94+
name: Docker image native
95+
if: github.event_name == 'push' && github.ref_name == 'main'
96+
needs: [test]
97+
runs-on: ubuntu-latest
98+
steps:
99+
- name: Checkout Code
100+
uses: actions/checkout@v3
101+
- name: Build and Push Image
102+
uses: explorviz/deployment/.github/actions/build-and-deploy-quarkus-native@main
103+
with:
104+
platforms: "linux/amd64,linux/arm64/v8"
105+
docker-username: ${{ secrets.DOCKER_USERNAME }}
106+
docker-password: ${{ secrets.DOCKER_PASSWORD }}
107+
image-name: ${{ vars.DOCKER_NATIVE_IMAGE_NAME }}
108+
image-tag: "latest"
109+
110+
docker-image-jvm:
111+
name: Docker image JVM
112+
if: github.event_name == 'push' && github.ref_name == 'main'
113+
needs: [test]
114+
runs-on: ubuntu-latest
115+
steps:
116+
- name: Checkout Code
117+
uses: actions/checkout@v3
118+
- name: Build and Push Image
119+
uses: explorviz/deployment/.github/actions/build-and-deploy-quarkus-jvm@main
120+
with:
121+
platforms: "linux/amd64,linux/arm64/v8"
122+
docker-username: ${{ secrets.DOCKER_USERNAME }}
123+
docker-password: ${{ secrets.DOCKER_PASSWORD }}
124+
image-name: ${{ vars.DOCKER_JVM_IMAGE_NAME }}
125+
image-tag: "latest"
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
name: Release Tagged Docker Image
2+
3+
on:
4+
push:
5+
tags:
6+
- "*"
7+
workflow_dispatch:
8+
9+
jobs:
10+
release-docker-image-jvm:
11+
name: Release Tagged Docker Image
12+
runs-on: ubuntu-latest
13+
steps:
14+
- name: Checkout Code
15+
uses: actions/checkout@v3
16+
- name: Build and Push Image
17+
uses: explorviz/deployment/.github/actions/build-and-deploy-quarkus-jvm@main
18+
with:
19+
platforms: "linux/amd64,linux/arm64/v8"
20+
docker-username: ${{ secrets.DOCKER_USERNAME }}
21+
docker-password: ${{ secrets.DOCKER_PASSWORD }}
22+
image-name: ${{ vars.DOCKER_JVM_IMAGE_NAME }}
23+
image-tag: "${{ github.ref_name }}"

.gitlab-ci.yml

Lines changed: 83 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -1,86 +1,83 @@
1-
default:
2-
tags:
3-
- exec-docker
4-
image: ghcr.io/graalvm/graalvm-community:21
5-
cache: # Cache modules in between jobs
6-
key: $CI_COMMIT_REF_SLUG
7-
paths:
8-
- .gradle
9-
before_script:
10-
- export GRADLE_USER_HOME=`pwd`/.gradle
11-
12-
variables:
13-
GRADLE_OPTS: "-Dorg.gradle.daemon=false"
14-
15-
workflow:
16-
rules:
17-
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
18-
- if: "$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS"
19-
when: never
20-
- if: "$CI_COMMIT_BRANCH"
21-
22-
stages:
23-
- build
24-
- code-analysis
25-
- test
26-
- publish
27-
28-
build:
29-
stage: build
30-
script: ./gradlew assemble
31-
artifacts:
32-
paths:
33-
- build
34-
35-
pmd:
36-
stage: code-analysis
37-
script: ./gradlew pmdMain
38-
artifacts:
39-
paths:
40-
- build
41-
42-
checkstyle:
43-
stage: code-analysis
44-
script: ./gradlew checkstyleMain
45-
artifacts:
46-
paths:
47-
- build
48-
49-
unit-test:
50-
stage: test
51-
script:
52-
- ./gradlew test
53-
artifacts:
54-
paths:
55-
- build
56-
57-
.push-dockerhub-base-job:
58-
stage: publish
59-
rules:
60-
- if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
61-
script:
62-
- ./gradlew clean assemble
63-
-Dquarkus.container-image.build=true
64-
-Dquarkus.container-image.push=true
65-
-Dquarkus.container-image.additional-tags=$CI_COMMIT_SHORT_SHA
66-
-Dquarkus.container-image.username=$DOCKERHUB_USERNAME
67-
-Dquarkus.container-image.password=$DOCKERHUB_PASSWORD
68-
after_script:
69-
- echo "Image was uploaded to Dockerhub; explorviz/${DOCKERHUB_IMAGE_NAME}:latest and explorviz/${DOCKERHUB_IMAGE_NAME}:$CI_COMMIT_SHORT_SHA"
70-
71-
push-dockerhub-main:
72-
extends: .push-dockerhub-base-job
73-
74-
push-dockerhub-mr:
75-
stage: publish
76-
rules:
77-
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
78-
script:
79-
- ./gradlew clean assemble
80-
-Dquarkus.container-image.build=true
81-
-Dquarkus.container-image.push=true
82-
-Dquarkus.container-image.tag=mr-$CI_MERGE_REQUEST_IID
83-
-Dquarkus.container-image.username=$DOCKERHUB_USERNAME
84-
-Dquarkus.container-image.password=$DOCKERHUB_PASSWORD
85-
after_script:
86-
- echo "Image was uploaded to Dockerhub; explorviz/${DOCKERHUB_IMAGE_NAME}:mr-$CI_MERGE_REQUEST_IID"
1+
default:
2+
tags:
3+
- exec-docker
4+
image: ghcr.io/graalvm/graalvm-community:21
5+
cache: # Cache modules in between jobs
6+
key: $CI_COMMIT_REF_SLUG
7+
paths:
8+
- .gradle
9+
before_script:
10+
- export GRADLE_USER_HOME=`pwd`/.gradle
11+
12+
variables:
13+
GRADLE_OPTS: "-Dorg.gradle.daemon=false"
14+
15+
workflow:
16+
rules:
17+
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
18+
- if: "$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS"
19+
when: never
20+
- if: "$CI_COMMIT_BRANCH"
21+
22+
stages:
23+
- build
24+
- code-analysis
25+
- test
26+
- publish
27+
28+
build:
29+
stage: build
30+
script: ./gradlew assemble
31+
artifacts:
32+
paths:
33+
- build
34+
35+
pmd:
36+
stage: code-analysis
37+
script: ./gradlew pmdMain
38+
artifacts:
39+
paths:
40+
- build
41+
42+
checkstyle:
43+
stage: code-analysis
44+
script: ./gradlew checkstyleMain
45+
artifacts:
46+
paths:
47+
- build
48+
49+
unit-test:
50+
stage: test
51+
script:
52+
- ./gradlew test
53+
artifacts:
54+
paths:
55+
- build
56+
57+
.push-dockerhub-base-job:
58+
stage: publish
59+
rules:
60+
- if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
61+
script:
62+
- ./gradlew clean assemble
63+
-Dquarkus.container-image.build=true
64+
-Dquarkus.container-image.push=true
65+
-Dquarkus.container-image.additional-tags=$CI_COMMIT_SHORT_SHA
66+
-Dquarkus.container-image.username=$DOCKERHUB_USERNAME
67+
-Dquarkus.container-image.password=$DOCKERHUB_PASSWORD
68+
after_script:
69+
- echo "Image was uploaded to Dockerhub; explorviz/${DOCKERHUB_IMAGE_NAME}:latest and explorviz/${DOCKERHUB_IMAGE_NAME}:$CI_COMMIT_SHORT_SHA"
70+
71+
push-dockerhub-mr:
72+
stage: publish
73+
rules:
74+
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
75+
script:
76+
- ./gradlew clean assemble
77+
-Dquarkus.container-image.build=true
78+
-Dquarkus.container-image.push=true
79+
-Dquarkus.container-image.tag=mr-$CI_MERGE_REQUEST_IID
80+
-Dquarkus.container-image.username=$DOCKERHUB_USERNAME
81+
-Dquarkus.container-image.password=$DOCKERHUB_PASSWORD
82+
after_script:
83+
- echo "Image was uploaded to Dockerhub; explorviz/${DOCKERHUB_IMAGE_NAME}:mr-$CI_MERGE_REQUEST_IID"

0 commit comments

Comments
 (0)