@@ -2,191 +2,35 @@ name: Main
22
33on :
44 schedule :
5- - cron : ' 0 4 * * 1,3 ,5'
5+ - cron : ' 0 4 * * 1,2,3,4 ,5'
66 push :
77 branches :
88 - master
9+ - main
10+ - releases/*
911 tags :
1012 - v*
1113
1214 pull_request :
1315 branches :
1416 - master
17+ - main
18+ - releases/*
1519
1620 workflow_dispatch :
1721 inputs :
1822 skip-test :
1923 description : ' Skip test'
20- required : false
21- type : string
22- default : " false"
24+ type : choice
25+ required : true
26+ default : ' false'
27+ options :
28+ - " true"
29+ - " false"
2330
2431jobs :
2532 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 }}
33+ uses : kestra-io/actions/.github/workflows/plugins.yml@main
34+ with :
35+ skip-test : ${{ github.event.inputs.skip-test == 'true' }}
36+ secrets : inherit
0 commit comments