Skip to content

Commit 327951b

Browse files
committed
chore(cicd): move to reusable workflows on github actions
1 parent b22c839 commit 327951b

File tree

2 files changed

+38
-171
lines changed

2 files changed

+38
-171
lines changed

.github/setup-unit.sh

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# mkdir certs
2+
# openssl req -new -x509 -days 365 -nodes -out certs/ca.crt -keyout certs/ca.key -subj "/CN=root-ca"
3+
4+
# mkdir certs/server
5+
# openssl genrsa -des3 -out certs/server/server.key -passout pass:p4ssphrase 2048
6+
# openssl rsa -in certs/server/server.key -passin pass:p4ssphrase -out certs/server/server.key
7+
# openssl req -new -nodes -key certs/server/server.key -out certs/server/server.csr -subj "/CN=postgresql"
8+
# openssl x509 -req -in certs/server/server.csr -days 365 -CA certs/ca.crt -CAkey certs/ca.key -CAcreateserial -out certs/server/server.crt
9+
# sudo chmod -R 600 certs/server/
10+
# sudo chown -R 1001 certs/server/
11+
12+
# mkdir certs/client
13+
# openssl genrsa -des3 -out certs/client/client.key -passout pass:p4ssphrase 2048
14+
# openssl rsa -in certs/client/client.key -passin pass:p4ssphrase -out certs/client/client-no-pass.key
15+
# openssl req -new -nodes -key certs/client/client.key -passin pass:p4ssphrase -out certs/client/client.csr -subj "/CN=postgres"
16+
# openssl x509 -req -in certs/client/client.csr -days 365 -CA certs/ca.crt -CAkey certs/ca.key -CAcreateserial -out certs/client/client.crt
17+
18+
# mkdir plugin-debezium-postgres/src/test/resources/ssl/
19+
# cp certs/client/* plugin-debezium-postgres/src/test/resources/ssl/
20+
# cp certs/ca.crt plugin-debezium-postgres/src/test/resources/ssl/
21+
22+
docker compose -f docker-compose-ci.yml up -d mysql
23+
docker compose -f docker-compose-ci.yml up -d
24+
sleep 10
25+
docker compose -f docker-compose-ci.yml exec mysql sh -c "mysql -u root -pmysql_passwd < /tmp/docker/mysql.sql"
26+
docker compose -f docker-compose-ci.yml exec postgres sh -c "export PGPASSWORD=pg_passwd && psql -d postgres -U postgres -f /tmp/docker/postgres.sql > /dev/null"
27+
docker run -v ${PWD}/data:/tmp/docker --network=plugin-debezium_default mcr.microsoft.com/mssql-tools sh -c "/opt/mssql-tools/bin/sqlcmd -S sqlserver -U sa -P Sqls3rv3r_Pa55word! -i /tmp/docker/sqlserver.sql"

.github/workflows/main.yml

Lines changed: 11 additions & 171 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: Main
22

33
on:
44
schedule:
5-
- cron: '0 4 * * 1,3,5'
5+
- cron: '0 4 * * 1,2,3,4,5'
66
push:
77
branches:
88
- master
@@ -17,176 +17,16 @@ on:
1717
inputs:
1818
skip-test:
1919
description: 'Skip test'
20-
required: false
21-
type: string
22-
default: "false"
20+
type: choice
21+
required: true
22+
default: 'false'
23+
options:
24+
- "true"
25+
- "false"
2326

2427
jobs:
2528
check:
26-
name: Check & Publish
27-
runs-on: ubuntu-latest
28-
env:
29-
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
30-
GOOGLE_SERVICE_ACCOUNT: ${{ secrets.GOOGLE_SERVICE_ACCOUNT }}
31-
steps:
32-
- uses: actions/checkout@v4
33-
34-
# Caches
35-
- name: Gradle cache
36-
uses: actions/cache@v4
37-
with:
38-
path: |
39-
~/.gradle/caches
40-
~/.gradle/wrapper
41-
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle*.properties') }}
42-
restore-keys: |
43-
${{ runner.os }}-gradle-
44-
45-
# JDK
46-
- name: Set up JDK
47-
uses: actions/setup-java@v4
48-
with:
49-
distribution: 'temurin'
50-
java-version: 21
51-
52-
- name: Validate Gradle wrapper
53-
uses: gradle/actions/wrapper-validation@v4
54-
55-
# Services
56-
- name: Build the docker-compose stack
57-
if: ${{ github.event.inputs.skip-test == 'false' || github.event.inputs.skip-test == '' }}
58-
run: |
59-
# mkdir certs
60-
# openssl req -new -x509 -days 365 -nodes -out certs/ca.crt -keyout certs/ca.key -subj "/CN=root-ca"
61-
62-
# mkdir certs/server
63-
# openssl genrsa -des3 -out certs/server/server.key -passout pass:p4ssphrase 2048
64-
# openssl rsa -in certs/server/server.key -passin pass:p4ssphrase -out certs/server/server.key
65-
# openssl req -new -nodes -key certs/server/server.key -out certs/server/server.csr -subj "/CN=postgresql"
66-
# openssl x509 -req -in certs/server/server.csr -days 365 -CA certs/ca.crt -CAkey certs/ca.key -CAcreateserial -out certs/server/server.crt
67-
# sudo chmod -R 600 certs/server/
68-
# sudo chown -R 1001 certs/server/
69-
70-
# mkdir certs/client
71-
# openssl genrsa -des3 -out certs/client/client.key -passout pass:p4ssphrase 2048
72-
# openssl rsa -in certs/client/client.key -passin pass:p4ssphrase -out certs/client/client-no-pass.key
73-
# openssl req -new -nodes -key certs/client/client.key -passin pass:p4ssphrase -out certs/client/client.csr -subj "/CN=postgres"
74-
# openssl x509 -req -in certs/client/client.csr -days 365 -CA certs/ca.crt -CAkey certs/ca.key -CAcreateserial -out certs/client/client.crt
75-
76-
# mkdir plugin-debezium-postgres/src/test/resources/ssl/
77-
# cp certs/client/* plugin-debezium-postgres/src/test/resources/ssl/
78-
# cp certs/ca.crt plugin-debezium-postgres/src/test/resources/ssl/
79-
80-
docker compose -f docker-compose-ci.yml up -d mysql
81-
docker compose -f docker-compose-ci.yml up -d
82-
sleep 10
83-
docker compose -f docker-compose-ci.yml exec mysql sh -c "mysql -u root -pmysql_passwd < /tmp/docker/mysql.sql"
84-
docker compose -f docker-compose-ci.yml exec postgres sh -c "export PGPASSWORD=pg_passwd && psql -d postgres -U postgres -f /tmp/docker/postgres.sql > /dev/null"
85-
docker run -v ${PWD}/data:/tmp/docker --network=plugin-debezium_default mcr.microsoft.com/mssql-tools sh -c "/opt/mssql-tools/bin/sqlcmd -S sqlserver -U sa -P Sqls3rv3r_Pa55word! -i /tmp/docker/sqlserver.sql"
86-
87-
# Gradle check
88-
- name: Build with Gradle
89-
if: ${{ github.event.inputs.skip-test == 'false' || github.event.inputs.skip-test == '' }}
90-
run: ./gradlew check --refresh-dependencies
91-
92-
# Allure check
93-
- name: Auth to Google Cloud
94-
id: auth
95-
if: ${{ always() && env.GOOGLE_SERVICE_ACCOUNT != 0 }}
96-
uses: 'google-github-actions/auth@v2'
97-
with:
98-
credentials_json: '${{ secrets.GOOGLE_SERVICE_ACCOUNT }}'
99-
100-
- uses: rlespinasse/github-slug-action@v5
101-
102-
- name: Publish allure report
103-
uses: andrcuns/allure-publish-action@v2.9.0
104-
if: ${{ always() && env.GOOGLE_SERVICE_ACCOUNT != 0 && (github.event.inputs.skip-test == 'false' || github.event.inputs.skip-test == '') }}
105-
env:
106-
GITHUB_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
107-
JAVA_HOME: /usr/lib/jvm/default-jvm/
108-
with:
109-
storageType: gcs
110-
resultsGlob: "**/build/allure-results"
111-
bucket: internal-kestra-host
112-
baseUrl: "https://internal.dev.kestra.io"
113-
prefix: ${{ format('{0}/{1}', github.repository, 'allure/java') }}
114-
copyLatest: true
115-
ignoreMissingResults: true
116-
117-
# Jacoco
118-
- name: 'Set up Cloud SDK'
119-
if: ${{ env.GOOGLE_SERVICE_ACCOUNT != 0 }}
120-
uses: 'google-github-actions/setup-gcloud@v2'
121-
122-
- name: 'Copy jacoco files'
123-
if: ${{ env.GOOGLE_SERVICE_ACCOUNT != 0 }}
124-
run: |
125-
mv build/reports/jacoco/testCodeCoverageReport build/reports/jacoco/test/
126-
mv build/reports/jacoco/test/testCodeCoverageReport.xml build/reports/jacoco/test/jacocoTestReport.xml
127-
gsutil -m rsync -d -r build/reports/jacoco/test/ gs://internal-kestra-host/${{ format('{0}/{1}', github.repository, 'jacoco') }}
128-
129-
# Publish
130-
- name: Publish package to Sonatype
131-
if: github.ref == 'refs/heads/master'
132-
env:
133-
ORG_GRADLE_PROJECT_sonatypeUsername: ${{ secrets.SONATYPE_USER }}
134-
ORG_GRADLE_PROJECT_sonatypePassword: ${{ secrets.SONATYPE_PASSWORD }}
135-
SONATYPE_GPG_KEYID: ${{ secrets.SONATYPE_GPG_KEYID }}
136-
SONATYPE_GPG_PASSWORD: ${{ secrets.SONATYPE_GPG_PASSWORD }}
137-
SONATYPE_GPG_FILE: ${{ secrets.SONATYPE_GPG_FILE }}
138-
run: |
139-
echo "signing.keyId=${SONATYPE_GPG_KEYID}" > ~/.gradle/gradle.properties
140-
echo "signing.password=${SONATYPE_GPG_PASSWORD}" >> ~/.gradle/gradle.properties
141-
echo "signing.secretKeyRingFile=${HOME}/.gradle/secring.gpg" >> ~/.gradle/gradle.properties
142-
echo ${SONATYPE_GPG_FILE} | base64 -d > ~/.gradle/secring.gpg
143-
./gradlew publishToSonatype
144-
145-
# Release
146-
- name: Release package to Maven Central
147-
if: startsWith(github.ref, 'refs/tags/v')
148-
env:
149-
ORG_GRADLE_PROJECT_sonatypeUsername: ${{ secrets.SONATYPE_USER }}
150-
ORG_GRADLE_PROJECT_sonatypePassword: ${{ secrets.SONATYPE_PASSWORD }}
151-
SONATYPE_GPG_KEYID: ${{ secrets.SONATYPE_GPG_KEYID }}
152-
SONATYPE_GPG_PASSWORD: ${{ secrets.SONATYPE_GPG_PASSWORD }}
153-
SONATYPE_GPG_FILE: ${{ secrets.SONATYPE_GPG_FILE }}
154-
run: |
155-
echo "signing.keyId=${SONATYPE_GPG_KEYID}" > ~/.gradle/gradle.properties
156-
echo "signing.password=${SONATYPE_GPG_PASSWORD}" >> ~/.gradle/gradle.properties
157-
echo "signing.secretKeyRingFile=${HOME}/.gradle/secring.gpg" >> ~/.gradle/gradle.properties
158-
echo ${SONATYPE_GPG_FILE} | base64 -d > ~/.gradle/secring.gpg
159-
./gradlew publishToSonatype closeAndReleaseSonatypeStagingRepository
160-
161-
# GitHub Release
162-
- name: Create GitHub release
163-
uses: "marvinpinto/action-automatic-releases@latest"
164-
if: startsWith(github.ref, 'refs/tags/v')
165-
with:
166-
repo_token: "${{ secrets.GITHUB_TOKEN }}"
167-
prerelease: false
168-
files: |
169-
build/libs/*.jar
170-
171-
# Slack
172-
- name: Slack notification
173-
uses: 8398a7/action-slack@v3
174-
if: ${{ always() && env.SLACK_WEBHOOK_URL != 0 }}
175-
with:
176-
status: ${{ job.status }}
177-
job_name: Check & Publish
178-
fields: repo,message,commit,author,action,eventName,ref,workflow,job,took
179-
username: Github Actions
180-
icon_emoji: ':github-actions:'
181-
channel: 'C02DQ1A7JLR'
182-
env:
183-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
184-
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
185-
186-
- name: Notify failed CI
187-
id: send-ci-failed
188-
if: always() && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main') && job.status != 'success'
189-
uses: kestra-io/actions/.github/actions/send-ci-failed@main
190-
env:
191-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
192-
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
29+
uses: kestra-io/actions/.github/workflows/plugins.yml@main
30+
with:
31+
skip-test: ${{ github.event.inputs.skip-test == 'true' }}
32+
secrets: inherit

0 commit comments

Comments
 (0)