1
+ name : release
2
+ on :
3
+ push :
4
+ branches :
5
+ - master
6
+ workflow_dispatch : {}
7
+ jobs :
8
+ release :
9
+ runs-on : ubuntu-latest
10
+ permissions :
11
+ contents : write
12
+ outputs :
13
+ latest_commit : ${{ steps.git_remote.outputs.latest_commit }}
14
+ env :
15
+ CI : " true"
16
+ steps :
17
+ - name : Checkout
18
+ uses : actions/checkout@v3
19
+ with :
20
+ fetch-depth : 0
21
+ - name : Set git identity
22
+ run : |-
23
+ git config user.name "github-actions"
24
+ git config user.email "[email protected] "
25
+ - name : Install dependencies
26
+ run : yarn install --check-files --frozen-lockfile
27
+ - name : release
28
+ run : npx projen release
29
+ - name : Check for new commits
30
+ id : git_remote
31
+ run : echo "latest_commit=$(git ls-remote origin -h ${{ github.ref }} | cut -f1)" >> $GITHUB_OUTPUT
32
+ - name : Backup artifact permissions
33
+ if : ${{ steps.git_remote.outputs.latest_commit == github.sha }}
34
+ run : cd dist && getfacl -R . > permissions-backup.acl
35
+ continue-on-error : true
36
+ - name : Upload artifact
37
+ if : ${{ steps.git_remote.outputs.latest_commit == github.sha }}
38
+ uses : actions/upload-artifact@v3
39
+ with :
40
+ name : build-artifact
41
+ path : dist
42
+ release_github :
43
+ name : Publish to GitHub Releases
44
+ needs : release
45
+ runs-on : ubuntu-latest
46
+ permissions :
47
+ contents : write
48
+ if : needs.release.outputs.latest_commit == github.sha
49
+ steps :
50
+ - uses : actions/setup-node@v3
51
+ with :
52
+ node-version : 14.x
53
+ - name : Download build artifacts
54
+ uses : actions/download-artifact@v3
55
+ with :
56
+ name : build-artifact
57
+ path : dist
58
+ - name : Restore build artifact permissions
59
+ run : cd dist && setfacl --restore=permissions-backup.acl
60
+ continue-on-error : true
61
+ - name : Prepare Repository
62
+ run : mv dist .repo
63
+ - name : Collect GitHub Metadata
64
+ run : mv .repo/dist dist
65
+ - name : Release
66
+ env :
67
+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
68
+ GITHUB_REPOSITORY : ${{ github.repository }}
69
+ GITHUB_REF : ${{ github.ref }}
70
+ run : errout=$(mktemp); gh release create $(cat dist/releasetag.txt) -R $GITHUB_REPOSITORY -t $(cat dist/releasetag.txt) --target $GITHUB_REF 2> $errout && true; exitcode=$?; if [ $exitcode -ne 0 ] && ! grep -q "Release.tag_name already exists" $errout; then cat $errout; exit $exitcode; fi
71
+
72
+ name : Publish to Maven Central
73
+ needs : release
74
+ runs-on : ubuntu-latest
75
+ permissions :
76
+ contents : read
77
+ packages : write
78
+ if : needs.release.outputs.latest_commit == github.sha
79
+ steps :
80
+ - uses : actions/setup-java@v3
81
+ with :
82
+ distribution : temurin
83
+ java-version : 11.x
84
+ - uses : actions/setup-node@v3
85
+ with :
86
+ node-version : 14.x
87
+ - name : Download build artifacts
88
+ uses : actions/download-artifact@v3
89
+ with :
90
+ name : build-artifact
91
+ path : dist
92
+ - name : Restore build artifact permissions
93
+ run : cd dist && setfacl --restore=permissions-backup.acl
94
+ continue-on-error : true
95
+ - name : Prepare Repository
96
+ run : mv dist .repo
97
+ - name : Install Dependencies
98
+ run : cd .repo && yarn install --check-files --frozen-lockfile
99
+ - name : Create java artifact
100
+ run : cd .repo && npx projen package:java
101
+ - name : Collect java Artifact
102
+ run : mv .repo/dist dist
103
+ - name : Release
104
+ env :
105
+ MAVEN_SERVER_ID : github
106
+ MAVEN_REPOSITORY_URL : https://maven.pkg.github.com/europace/ep-constructs
107
+ MAVEN_PASSWORD : ${{ secrets.GITHUB_TOKEN }}
108
+ MAVEN_USERNAME : ${{ github.actor }}
109
+ run : npx -p publib@latest publib-maven
0 commit comments