-
Notifications
You must be signed in to change notification settings - Fork 593
129 lines (116 loc) · 5.23 KB
/
release-go.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
name: Create new Release
on:
workflow_dispatch:
repository_dispatch:
types: perform-release
schedule:
- cron: '0 9 * * 1'
jobs:
build:
permissions: write-all
name: Publish
runs-on: ubuntu-latest
steps:
- uses: styfle/[email protected]
- uses: actions/checkout@v4
- name: Prepare assets and increment version
run: |
curl --insecure --silent --location --write-out '%{http_code}' --output ./piper_master https://github.com/SAP/jenkins-library/releases/latest/download/piper_master
curl --insecure --silent --location --write-out '%{http_code}' --output ./piper_master-darwin.x86_64 https://github.com/SAP/jenkins-library/releases/latest/download/piper_master-darwin.x86_64
curl --insecure --silent --location --write-out '%{http_code}' --output ./piper_master-darwin.arm64 https://github.com/SAP/jenkins-library/releases/latest/download/piper_master-darwin.arm64
cp ./piper_master ./piper
cp ./piper_master-darwin.x86_64 ./piper-darwin.x86_64
cp ./piper_master-darwin.arm64 ./piper-darwin.arm64
npm install semver --quiet
echo "PIPER_version=v$(node_modules/.bin/semver -i minor $(curl --silent "https://api.github.com/repos/$GITHUB_REPOSITORY/releases/latest" | jq -r .tag_name))" >> $GITHUB_ENV
- uses: SAP/project-piper-action@master
name: Publish prerelease
with:
piper-version: master
command: githubPublishRelease
flags: >
--preRelease true
--token ${{ secrets.GITHUB_TOKEN }}
--assetPathList ./piper --assetPathList ./piper_master
--assetPathList ./piper-darwin.x86_64 --assetPathList ./piper_master-darwin.x86_64
--assetPathList ./piper-darwin.arm64 --assetPathList ./piper_master-darwin.arm64
- name: Download Piper binary from recently published prerelease
uses: robinraju/release-downloader@v1
with:
tag: ${{ env.PIPER_version }}
fileName: 'piper'
- name: Test binary (check output for 'commit:' substring)
run: |
chmod +x piper
if ./piper version | grep -Fq "commit:"; then
echo "piper binary test is successful"
else
echo "piper binary test failed"
./piper version
exit 1
fi
- name: Get recently published prerelease id
id: release_id
run: >
curl -L -s -o resp.json
-H "Accept: application/vnd.github.raw+json"
-H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}"
${{ github.api_url }}/repos/${{ github.repository }}/releases
echo "release_id=$(jq 'first(.[] | select(.tag_name == "${{ env.PIPER_version }}")).id' resp.json)" >> "$GITHUB_OUTPUT"
- name: Convert prereleae to Release
run: >
curl --fail-with-body -L -X PATCH
-H "Accept: application/vnd.github+json"
-H "Authorization: Bearer ${{ github.token }}"
${{ github.api_url }}/repos/${{ github.repository }}/releases/${{ steps.release_id.outputs.release_id }}
-d '{"prerelease": false, "make_latest": true}'
# Workaround for https://github.com/SAP/jenkins-library/issues/1723, build only works with jdk8 currently
- uses: actions/setup-java@v4
with:
java-version: 8
distribution: zulu
- name: Build and publish jar for consumption in unit tests
run: mvn package
- uses: SAP/project-piper-action@master
name: 'publish Piper jar'
with:
piper-version: master
command: githubPublishRelease
flags: --token ${{ secrets.GITHUB_TOKEN }} --version latest --assetPath ./target/jenkins-library.jar
post:
name: Post Action
runs-on: ubuntu-latest
needs: [build]
if: always()
steps:
# Check status of the worklfow
- uses: martialonline/workflow-status@v4
id: check
# This step expects base64 encoded JSON object as below:
# {
# "smtp_url": "smtp+starttls://user:password@server:port",
# "smtp_mail_from": "[email protected]",
# "smtp_mail_rcpt": "[email protected]",
# }
- name: Decode SMTP secrets and set them in GITHUB_ENV
id: smtp_secrets
if: steps.check.outputs.status == 'failure' || steps.check.outputs.status == 'cancelled'
run: >
echo "${{ secrets.SMTP_CONFIG }}" |
base64 --decode |
jq -r 'to_entries[] | "\(.key)=\(.value)"' |
while read line; do
echo "$line" >> $GITHUB_ENV; echo "::add-mask::${line#*=}";
done
- name: Notify Piper team on failure or cancelled
if: steps.smtp_secrets.conclusion == 'success'
uses: dawidd6/action-send-mail@v3
with:
connection_url: ${{ env.smtp_url }}
subject: Workflow failure in ${{ github.repository }}
priority: high
to: ${{ env.smtp_mail_rcpt }}
from: Piper on GitHub <${{ env.smtp_mail_from }}>
body: |
Workflow '${{ github.workflow }}' has a job with status '${{ steps.check.outputs.status }}'.
Workflow link: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}