Skip to content

Commit fb41219

Browse files
committed
Add a simple deploy action
1 parent 55674e3 commit fb41219

File tree

3 files changed

+114
-1
lines changed

3 files changed

+114
-1
lines changed

.github/workflows/deploy.yml

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
name: Deploy
2+
3+
on:
4+
push:
5+
branches:
6+
- "production"
7+
paths-ignore:
8+
- '.gitignore'
9+
- 'CODEOWNERS'
10+
- 'LICENSE'
11+
- '*.md'
12+
- '*.adoc'
13+
- '*.txt'
14+
- '.all-contributorsrc'
15+
16+
concurrency:
17+
group: deployment
18+
cancel-in-progress: false
19+
20+
jobs:
21+
deploy:
22+
23+
# if: github.repository == 'hibernate/hibernate-jira-sync'
24+
25+
runs-on: ubuntu-latest
26+
27+
steps:
28+
- uses: actions/checkout@v4
29+
30+
- name: Set up JDK 21
31+
uses: actions/setup-java@v2
32+
with:
33+
distribution: temurin
34+
java-version: 21
35+
36+
- name: Log in to OpenShift
37+
uses: redhat-actions/oc-login@v1
38+
with:
39+
openshift_server_url: ${{ secrets.OPENSHIFT_SERVER_INFRA_PROD }}
40+
openshift_token: ${{ secrets.OPENSHIFT_TOKEN_INFRA_PROD }}
41+
namespace: ${{ secrets.OPENSHIFT_NAMESPACE_INFRA_PROD }}
42+
43+
- name: Create ImageStream
44+
run: |
45+
oc create imagestream hibernate-jira-sync || true
46+
# https://docs.openshift.com/container-platform/4.14/openshift_images/using-imagestreams-with-kube-resources.html
47+
oc set image-lookup hibernate-jira-sync
48+
49+
- name: Retrieve OpenShift Container Registry URL
50+
id: oc-registry
51+
run: |
52+
echo -n "OC_REGISTRY_URL=" >> "$GITHUB_OUTPUT"
53+
oc registry info >> "$GITHUB_OUTPUT"
54+
- name: Log in to OpenShift Container Registry
55+
uses: docker/login-action@v3
56+
with:
57+
registry: ${{ steps.oc-registry.outputs.OC_REGISTRY_URL }}
58+
username: ignored
59+
password: ${{ secrets.OPENSHIFT_TOKEN_INFRA_PROD }}
60+
# Helm in particular needs semantic versions
61+
# See https://github.com/helm/helm/issues/9342#issuecomment-775269042
62+
# See the parts about pre-release versions in https://semver.org/#semantic-versioning-specification-semver
63+
# Ideally we should use a "+" before the SHA, but that won't work with Quarkus
64+
# See https://github.com/quarkusio/quarkus/blob/da1a782e04b01b2e165d65474163050d497340c1/extensions/container-image/spi/src/main/java/io/quarkus/container/spi/ImageReference.java#L60
65+
- name: Generate app version
66+
id: app-version
67+
run: |
68+
echo "VALUE=1.0.0-$(date -u '+%Y%m%d%H%M%S')-${{ github.sha }}" >> $GITHUB_OUTPUT
69+
70+
- name: Build and push app container image
71+
run: |
72+
./mvnw clean package \
73+
-Drevision="${{ steps.app-version.outputs.value }}" \
74+
-Dquarkus.container-image.build=true \
75+
-Dquarkus.container-image.push=true \
76+
-Dquarkus.container-image.registry="$(oc registry info)" \
77+
-Dquarkus.container-image.group="$(oc project --short)"

pom.xml

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
<modelVersion>4.0.0</modelVersion>
55
<groupId>org.hibernate.infra.sync.jira</groupId>
66
<artifactId>hibernate-jira-sync</artifactId>
7-
<version>1.0-SNAPSHOT</version>
7+
<version>${revision}</version>
88

99
<properties>
10+
<revision>999-SNAPSHOT</revision>
1011
<compiler-plugin.version>3.13.0</compiler-plugin.version>
1112
<maven.compiler.release>21</maven.compiler.release>
1213
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -82,6 +83,16 @@
8283
<artifactId>quarkus-rest-client-jackson</artifactId>
8384
</dependency>
8485

86+
<!-- Deploy -->
87+
<dependency>
88+
<groupId>io.quarkus</groupId>
89+
<artifactId>quarkus-openshift</artifactId>
90+
</dependency>
91+
<dependency>
92+
<groupId>io.quarkus</groupId>
93+
<artifactId>quarkus-container-image-jib</artifactId>
94+
</dependency>
95+
8596
<!-- Test dependencies -->
8697
<dependency>
8798
<groupId>io.quarkus</groupId>

src/main/resources/application.properties

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -338,3 +338,28 @@ jira.project-group."hibernate".users.default-value=-1
338338
%prod.jira.project-group."hibernate".projects.OGM.project-id=12346522
339339
%prod.jira.project-group."hibernate".projects.OGM.project-key=OGM
340340
%prod.jira.project-group."hibernate".projects.OGM.original-project-key=OGM
341+
##############
342+
# Deploy to OpenShift
343+
#
344+
quarkus.container-image.builder=jib
345+
quarkus.openshift.part-of=hibernate-jira-sync
346+
# Renew the SSL certificate automatically
347+
# This requires an additional controller to run on the OpenShift cluster (in our case it does).
348+
# See https://github.com/tnozicka/openshift-acme/#enabling-acme-certificates-for-your-object
349+
quarkus.openshift.annotations."kubernetes.io/tls-acme"=true
350+
quarkus.openshift.env.configmaps=hibernate-jira-sync-config
351+
quarkus.openshift.env.secrets=hibernate-jira-sync-secrets
352+
# Resource requirements
353+
quarkus.openshift.resources.limits.cpu=2000m
354+
quarkus.openshift.resources.requests.cpu=400m
355+
quarkus.openshift.resources.limits.memory=2Gi
356+
quarkus.openshift.resources.requests.memory=1Gi
357+
quarkus.openshift.startup-probe.initial-delay=15S
358+
quarkus.openshift.startup-probe.period=15S
359+
quarkus.openshift.startup-probe.failure-threshold=48
360+
# Declare the management port on the service
361+
quarkus.openshift.ports."management".container-port=9000
362+
quarkus.openshift.ports."management".host-port=90
363+
# Don't use the version in (service) selectors,
364+
# otherwise a rollback to an earlier version (due to failing startup) makes the service unavailable
365+
quarkus.openshift.add-version-to-label-selectors=false

0 commit comments

Comments
 (0)