Skip to content

Commit c60d029

Browse files
antolo-archAntolo
andauthored
[ITT-536] Release automation (#1055)
* add Java automation * change file location * add update Java version * Update release.js * chore(release): bump to 20.1.1 * Update release.js * Update release.js * Update release.js * Update release.js * fix regex * more changes * Update release.js * Update release.js * Update release.js * Update release.js * Update release.js * try new approach * changes * chore(release): bump to 20.1.1 * Update Client.java * Update pom.xml --------- Co-authored-by: Antolo <[email protected]>
1 parent aab24c5 commit c60d029

File tree

3 files changed

+120
-0
lines changed

3 files changed

+120
-0
lines changed

.github/scripts/helper.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
exports.pomJavaVersion = () => {
2+
const fs = require('fs');
3+
const re = /<version>(\d{1,2}.\d.\d)<\/version>\n.*<name>Adyen Java API Library<\/name>/;
4+
data = fs.readFileSync("pom.xml", 'utf-8');
5+
version = data.match(re)[1];
6+
return version;
7+
}
8+
9+
// Update version in pom.xml and settings
10+
exports.updateJavaVersion = async (version) => {
11+
const fs = require('fs');
12+
data = fs.readFileSync('src/main/java/com/adyen/Client.java', 'utf-8');
13+
newVersion = data.replace(/(LIB_VERSION = )"(\d{1,2}\.\d\.\d)"/, "$1" + '"' + version +'"');
14+
fs.writeFileSync('src/main/java/com/adyen/Client.java', newVersion, 'utf-8');
15+
16+
data = fs.readFileSync('pom.xml', 'utf-8');
17+
newVersion = data.replace(/(<version>)(\d{1,2}.\d.\d)(<\/version>\n.*<name>Adyen Java API Library<\/name>)/, "$1" + version + "$3");
18+
fs.writeFileSync('pom.xml', newVersion, 'utf-8');
19+
}

.github/workflows/gh-release.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
name: Github Release
2+
3+
on:
4+
workflow_dispatch:
5+
push:
6+
branches:
7+
- main
8+
9+
jobs:
10+
gh_release:
11+
permissions:
12+
contents: write
13+
runs-on: ubuntu-latest
14+
steps:
15+
- uses: actions/checkout@v3
16+
with:
17+
fetch-depth: 0
18+
token: ${{ secrets.ADYEN_AUTOMATION_BOT_ACCESS_TOKEN }}
19+
- name: Grab version
20+
uses: actions/github-script@v6
21+
id: release
22+
with:
23+
script: |
24+
const helper = require('./.github/scripts/helper.js')
25+
core.setOutput('version', helper.pomJavaVersion())
26+
- name: Create new release
27+
env:
28+
GH_TOKEN: ${{ secrets.ADYEN_AUTOMATION_BOT_ACCESS_TOKEN }}
29+
run: |
30+
gh release create v${{steps.release.outputs.version}} \
31+
--title 'Adyen Java API Library v${{steps.release.outputs.version}}' \
32+
--generate-notes --target main
33+
- name: Update develop branch
34+
run: |
35+
git checkout develop
36+
git merge main
37+
git push origin develop

.github/workflows/release.yml

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
name: Release request
2+
3+
on:
4+
workflow_dispatch:
5+
push:
6+
branches:
7+
- develop
8+
9+
jobs:
10+
release:
11+
permissions:
12+
contents: write
13+
pull-requests: write
14+
runs-on: ubuntu-latest
15+
steps:
16+
- uses: actions/checkout@v3
17+
with:
18+
ref: main
19+
- name: Reset promotion branch
20+
run: |
21+
git fetch origin develop:develop
22+
git reset --hard develop
23+
- name: Get the release script
24+
run: |
25+
wget https://raw.githubusercontent.com/Adyen/adyen-node-api-library/develop/.github/scripts/release.js -P ./.github/scripts
26+
- name: Prepare release request
27+
uses: actions/github-script@v6
28+
id: release
29+
with:
30+
script: |
31+
const helper = require('./.github/scripts/helper.js')
32+
const release = require('./.github/scripts/release.js')
33+
const options = { github, context, core, getCurrentVersion: helper.pomJavaVersion };
34+
await release.bump(options);
35+
- name: Bump version
36+
uses: actions/github-script@v6
37+
with:
38+
script: |
39+
const helper = require('./.github/scripts/helper.js')
40+
await helper.updateJavaVersion("${{steps.release.outputs.nextVersion}}");
41+
- name: Delete the release script
42+
run: |
43+
rm -f ./.github/scripts/release.js
44+
- name: Create Pull Request
45+
id: cpr
46+
uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666 # v5.0.1
47+
with:
48+
token: ${{ secrets.ADYEN_AUTOMATION_BOT_ACCESS_TOKEN }}
49+
committer: ${{ secrets.ADYEN_AUTOMATION_BOT_EMAIL }}
50+
author: ${{ secrets.ADYEN_AUTOMATION_BOT_EMAIL }}
51+
branch: automation/release
52+
title: Release v${{steps.release.outputs.nextVersion}}
53+
body: |
54+
Merged pull requests to be released:
55+
${{steps.release.outputs.changelog}}
56+
commit-message: "chore(release): bump to ${{steps.release.outputs.nextVersion}}"
57+
delete-branch: true
58+
- name: Enable Pull Request Automerge
59+
if: steps.cpr.outputs.pull-request-operation == 'created'
60+
uses: peter-evans/enable-pull-request-automerge@a660677d5469627102a1c1e11409dd063606628d # v3.0.0
61+
with:
62+
token: ${{ secrets.ADYEN_AUTOMATION_BOT_ACCESS_TOKEN }}
63+
pull-request-number: ${{ steps.cpr.outputs.pull-request-number }}
64+
merge-method: merge

0 commit comments

Comments
 (0)