1
1
name : Java CI with Maven
2
2
3
3
on :
4
- push :
5
- branches : [ "master", "develop" ]
6
- pull_request :
7
- branches : [ "master", "develop" ]
8
-
4
+ push : # triggers on tag push event
5
+ tags :
6
+ - ' **'
7
+ pull_request : # triggers on PR merge event into develop branch
8
+ types :
9
+ - closed
10
+
9
11
jobs :
10
12
setup : # defines the variables used across all job's steps and output variables to be used across jobs.
11
13
runs-on : ubuntu-latest
12
14
env : # environment variables used across the setup job
13
- # GPG config demo - TBD: proposal using secrets
14
- REPO_PATH : " $GITHUB_WORKSPACE" # Not required
15
- MVN_DEPLOY_FLAGS : " -s $GITHUB_WORKSPACE/settings.xml -Dmaven.repo.local=$GITHUB_WORKSPACE/.m2 -Denv.CI_DEPLOY_PASSWORD=$GITHUB_TOKEN -Denv.CI_DEPLOY_USERNAME=$GITHUB_USER -Denv.GPG_KEYNAME=${{secrets.GPG_KEYNAME}} -Denv.GPG_PASSPHRASE=${{secrets.GPG_PASSPHRASE}}"
16
15
MVN_BUILD_FLAGS : " -Dmaven.repo.local=$GITHUB_WORKSPACE/.m2"
17
- # GPG_IMPORT_COMMAND : "cat <(echo -e '${{secrets.GPG_PRIVATE_KEY}}') | gpg --batch --import" - can be used if GPG is handled through secrets.
16
+ MVN_DEPLOY_FLAGS : " -s $GITHUB_WORKSPACE/settings.xml "
18
17
GEN_DEPLOY_POM_SCRIPT : " $GITHUB_WORKSPACE/rosetta-source/src/main/resources/build-resources/create-deploy-pom.sh"
19
18
GEN_DEPLOY_POM_PY : " $GITHUB_WORKSPACE/rosetta-source/src/main/resources/build-resources/create-deploy-pom.py"
20
19
outputs :
21
- REPO_PATH : ${{env.REPO_PATH}}
22
- MVN_DEPLOY_FLAGS : ${{env.MVN_DEPLOY_FLAGS}}
23
20
MVN_BUILD_FLAGS : ${{env.MVN_BUILD_FLAGS}}
24
- GPG_IMPORT_COMMAND : ${{steps.set_props.outputs.GPG_IMPORT_COMMAND }}
21
+ MVN_DEPLOY_FLAGS : ${{env.MVN_DEPLOY_FLAGS }}
25
22
RELEASE_NAME : ${{steps.release_props.outputs.RELEASE_NAME}}
26
23
RELEASE_MAVEN_BUILD_PROFILES : ${{steps.release_props.outputs.MAVEN_BUILD_PROFILES}}
27
24
RELEASE_MVN_DEPLOY_FILE_FLAGS : ${{steps.release_props.outputs.MVN_DEPLOY_FILE_FLAGS}}
@@ -31,63 +28,71 @@ jobs:
31
28
32
29
steps :
33
30
- name : main_clone
34
- uses : actions/checkout@v2
35
-
36
- - name : SetProperties
37
- id : set_props
38
- shell : bash
39
- run : echo "GPG_IMPORT_COMMAND=${{env.GPG_IMPORT_COMMAND}}" >> "$GITHUB_OUTPUT"
40
- env :
41
- GPG_IMPORT_COMMAND : " cat <(echo -e '${{secrets.GPG_PRIVATE_KEY}}') | gpg --batch --import"
31
+ uses : actions/checkout@v4
42
32
43
33
- name : ReleaseProperties
44
34
id : release_props
45
- if : " contains (github.ref, 'master') "
35
+ if : startsWith (github.ref, 'refs/tags')
46
36
shell : bash
47
37
run : |
48
- echo "=== Global variable resolution ==="
49
- echo "REPO_PATH: ${{env.REPO_PATH}}"
50
- echo "=== Local variable resolution ==="
51
38
echo "RELEASE_NAME=${{env.RELEASE_NAME}}" >> "$GITHUB_OUTPUT"
52
- echo "MAVEN_BUILD_PROFILES =${{env.MAVEN_BUILD_PROFILES}}" >> "$GITHUB_OUTPUT"
53
- echo "MVN_DEPLOY_FILE_FLAGS =${{env.MVN_DEPLOY_FILE_FLAGS}}" >> "$GITHUB_OUTPUT"
39
+ echo "RELEASE_MAVEN_BUILD_PROFILES =${{env.MAVEN_BUILD_PROFILES}}" >> "$GITHUB_OUTPUT"
40
+ echo "RELEASE_MVN_DEPLOY_FILE_FLAGS =${{env.MVN_DEPLOY_FILE_FLAGS}}" >> "$GITHUB_OUTPUT"
54
41
env :
55
- RELEASE_NAME : " ${{github.ref_name }}" # not resoled hot to define release name (e.g. $github.tag)
42
+ RELEASE_NAME : " ${{github.event.release.tag_name }}"
56
43
MAVEN_BUILD_PROFILES : " daml,scala,typescript,golang,csharp8,csharp9,kotlin,python,full,gpg,excel"
57
- MVN_DEPLOY_FILE_FLAGS : " ${{env.MVN_BUILD_FLAGS}} ${{env.MVN_DEPLOY_FLAGS}} -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2 -DrepositoryId=ossrh-distro -Dgpg.passphrase=${{env.GPG_PASSPHRASE}} "
44
+ MVN_DEPLOY_FILE_FLAGS : " ${{env.MVN_BUILD_FLAGS}} ${{env.MVN_DEPLOY_FLAGS}} -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2 -DrepositoryId=ossrh-distro"
58
45
59
46
- name : SnapshotProperties
60
47
id : snapshot_props
61
- if : " contains( github.ref, ' develop') "
48
+ if : github.ref == 'refs/heads/ develop' && github.event.pull_request.merged == true
62
49
shell : bash
63
50
run : |
64
- echo "=== Global variable resolution ==="
65
- echo "REPO_PATH: ${{env.REPO_PATH}}"
66
- echo "=== Local variable resolution ==="
67
- echo "RELEASE_NAME=${{env.RELEASE_NAME}}" >> "$GITHUB_OUTPUT"
68
- echo "MAVEN_BUILD_PROFILES=${{env.MAVEN_BUILD_PROFILES}}" >> "$GITHUB_OUTPUT"
69
- echo "MVN_DEPLOY_FILE_FLAGS=${{env.MVN_DEPLOY_FILE_FLAGS}}" >> "$GITHUB_OUTPUT"
51
+ echo "SNAPSHOT_NAME=${{env.RELEASE_NAME}}" >> "$GITHUB_OUTPUT"
52
+ echo "SNAPSHOT_MAVEN_BUILD_PROFILES=${{env.MAVEN_BUILD_PROFILES}}" >> "$GITHUB_OUTPUT"
53
+ echo "SNAPSHOT_MVN_DEPLOY_FILE_FLAGS=${{env.MVN_DEPLOY_FILE_FLAGS}}" >> "$GITHUB_OUTPUT"
70
54
env :
71
55
RELEASE_NAME : " ${{github.ref_name}}-SNAPSHOT" # not resolved how to define snapshot name
72
56
MAVEN_BUILD_PROFILES : " daml,scala,typescript,golang,csharp8,csharp9,kotlin,python,gpg,excel"
73
- MVN_DEPLOY_FILE_FLAGS : " ${{env.MVN_BUILD_FLAGS}} ${{env.MVN_DEPLOY_FLAGS}} -Durl=https://oss.sonatype.org/content/repositories/snapshots -DrepositoryId=ossrh -Dgpg.passphrase=${{env.GPG_PASSPHRASE}} "
57
+ MVN_DEPLOY_FILE_FLAGS : " ${{env.MVN_BUILD_FLAGS}} ${{env.MVN_DEPLOY_FLAGS}} -Durl=https://oss.sonatype.org/content/repositories/snapshots -DrepositoryId=ossrh"
74
58
75
59
build :
76
60
needs : setup
77
61
runs-on : ubuntu-latest # Not resolved - Maven image required
78
62
79
63
steps :
64
+ - uses : actions/checkout@v4
80
65
- name : Build Release CI
81
- if : " contains(github.ref, 'master')"
82
- run : |
83
- echo "MVN_DEPLOY_FILE_FLAGS: ${{needs.setup.outputs.RELEASE_MVN_DEPLOY_FILE_FLAGS}}"
84
- echo "RELEASE_NAME: ${{needs.setup.outputs.RELEASE_NAME}}"
66
+ if : startsWith(github.event.ref, 'refs/tags')
67
+ uses : ./.github/actions/build-migration
68
+ with :
69
+ build-command : install
70
+ release-name : ${{needs.setup.outputs.RELEASE_NAME}}
71
+ build-flags : ${{needs.setup.outputs.MVN_BUILD_FLAGS}}
72
+ build-profiles : ${{needs.setup.outputs.RELEASE_MVN_DEPLOY_FILE_FLAGS}}
73
+ maven-settings : $GITHUB_WORKSPACE/settings.xml
74
+ env :
75
+ GPG_KEYNAME : ${{secrets.GPG_KEYNAME}}
76
+ GPG_PRIVATE_KEY : ${{secrets.GPG_PRIVATE_KEY}}
77
+ GPG_PASSPHRASE : ${{secrets.GPG_PASSPHRASE}}
78
+ CI_DEPLOY_USERNAME : ${{secrets.CI_DEPLOY_USERNAME}}
79
+ CI_DEPLOY_PASSWORD : ${{secrets.CI_DEPLOY_PASSWORD}}
85
80
86
81
- name : Build Snapshot CI
87
- if : " contains(github.ref, 'develop')"
88
- run : |
89
- echo "MVN_DEPLOY_FILE_FLAGS: ${{needs.setup.outputs.SNAPSHOT_MVN_DEPLOY_FILE_FLAGS}}"
90
- echo "RELEASE_NAME: ${{needs.setup.outputs.SNAPSHOT_NAME}}"
82
+ if : github.ref == 'refs/heads/develop' && github.event.pull_request.merged == true
83
+ uses : ./.github/actions/build-migration
84
+ with :
85
+ build-command : verify
86
+ release-name : ${{needs.setup.outputs.SNAPSHOT_NAME}}
87
+ build-flags : ${{needs.setup.outputs.MVN_BUILD_FLAGS}}
88
+ build-profiles : ${{needs.setup.outputs.SNAPSHOT_MVN_DEPLOY_FILE_FLAGS}}
89
+ maven-settings : $GITHUB_WORKSPACE/settings.xml
90
+ env :
91
+ GPG_KEYNAME : ${{secrets.GPG_KEYNAME}}
92
+ GPG_PRIVATE_KEY : ${{secrets.GPG_PRIVATE_KEY}}
93
+ GPG_PASSPHRASE : ${{secrets.GPG_PASSPHRASE}}
94
+ CI_DEPLOY_USERNAME : ${{secrets.CI_DEPLOY_USERNAME}}
95
+ CI_DEPLOY_PASSWORD : ${{secrets.CI_DEPLOY_PASSWORD}}
91
96
92
97
distribute :
93
98
needs : build
97
102
# Steps for distribution if needed
98
103
- name : Distribute CI
99
104
run :
100
- echo "Testing distribute ci"
105
+ echo "Distribute ci"
101
106
102
107
finalise :
103
108
needs : distribute
@@ -107,4 +112,4 @@ jobs:
107
112
# Steps for finalizing the process if needed
108
113
- name : Finalize CI
109
114
run :
110
- echo "Testing finalize ci"
115
+ echo "Finalize ci"
0 commit comments