1
- name : Build & Release aws-rds-postgres
1
+ name : Build & Release aws-rds-postgres (Combined)
2
2
3
3
on :
4
+ workflow_dispatch :
4
5
push :
5
6
branches :
6
7
- " main"
7
8
paths :
8
9
- " **"
10
+ - " .github/workflows/ryvn-aws-rds-postgres-release.yaml"
9
11
pull_request :
10
12
branches :
11
13
- " main"
16
18
SERVICE_NAME : aws-rds-postgres
17
19
18
20
jobs :
19
- generate-tag :
20
- name : Generate Release Tag
21
- if : github.ref == format('refs/heads/{0}', github.event.repository.default_branch)
21
+ build-and-release :
22
+ name : Build and Release
22
23
runs-on : ubuntu-latest
23
24
permissions :
24
- contents : read
25
+ contents : write
25
26
id-token : write
26
27
27
- outputs :
28
- version : ${{ steps.generate-tag.outputs.version }}
29
- new_tag : ${{ steps.generate-tag.outputs.new_tag }}
30
-
31
28
steps :
32
29
- name : Checkout code
33
30
uses : actions/checkout@v4
@@ -49,56 +46,64 @@ jobs:
49
46
# Extract version and tag from JSON output
50
47
version=$(echo "$tag_info" | jq -r '.version')
51
48
new_tag=$(echo "$tag_info" | jq -r '.tag')
52
-
49
+ channel=$(echo "$tag_info" | jq -r '.channel')
50
+ isPreview=$(echo "$tag_info" | jq -r '.isPreview')
51
+
53
52
echo "version=$version" >> $GITHUB_OUTPUT
54
53
echo "new_tag=$new_tag" >> $GITHUB_OUTPUT
54
+ echo "channel=$channel" >> $GITHUB_OUTPUT
55
+ echo "isPreview=$isPreview" >> $GITHUB_OUTPUT
55
56
56
57
57
- release :
58
- name : Create Release
59
-
60
- needs : [generate-tag]
61
-
62
- if : |
63
- github.ref == format('refs/heads/{0}', github.event.repository.default_branch) &&
64
- !contains(github.event.head_commit.message, '[skip-release]') &&
65
- !contains(github.event.pull_request.title, '[skip-release]')
66
- runs-on : ubuntu-latest
67
- permissions :
68
- contents : write
69
-
70
- steps :
71
- - name : Checkout code
72
- uses : actions/checkout@v4
73
- with :
74
- fetch-depth : 0
75
-
76
- - name : Install Ryvn CLI
77
- uses : ryvn-technologies/install-ryvn-cli@v1.0.0
78
58
79
59
- name : Create Ryvn Release
60
+ if : |
61
+ !contains(github.event.head_commit.message, '[skip-release]') &&
62
+ !contains(github.event.pull_request.title, '[skip-release]') &&
63
+ (steps.generate-tag.outputs.isPreview == 'true' || github.ref == format('refs/heads/{0}', github.event.repository.default_branch))
80
64
env :
81
65
RYVN_CLIENT_ID : ${{ secrets.RYVN_CLIENT_ID }}
82
66
RYVN_CLIENT_SECRET : ${{ secrets.RYVN_CLIENT_SECRET }}
83
67
run : |
84
- version="${{ needs .generate-tag.outputs.new_tag }}"
68
+ version="${{ steps .generate-tag.outputs.new_tag }}"
85
69
version=${version#aws-rds-postgres@}
86
70
version=${version#@}
87
- ryvn create release ${{ env.SERVICE_NAME }} $version
71
+ channel="${{ steps.generate-tag.outputs.channel }}"
72
+ is_preview="${{ steps.generate-tag.outputs.isPreview }}"
73
+
74
+ # Validate that preview releases have a channel
75
+ if [ "$is_preview" = "true" ] && [ -z "$channel" ]; then
76
+ echo "Error: Preview releases must specify a channel"
77
+ exit 1
78
+ fi
79
+
80
+ if [ -n "$channel" ]; then
81
+ ryvn create release ${{ env.SERVICE_NAME }} $version --channel "$channel"
82
+ else
83
+ ryvn create release ${{ env.SERVICE_NAME }} $version
84
+ fi
88
85
89
86
- name : Create GitHub Tag
87
+ if : |
88
+ github.ref == format('refs/heads/{0}', github.event.repository.default_branch) &&
89
+ !contains(github.event.head_commit.message, '[skip-release]') &&
90
+ !contains(github.event.pull_request.title, '[skip-release]')
90
91
run : |
91
- new_tag="${{ needs .generate-tag.outputs.new_tag }}"
92
+ new_tag="${{ steps .generate-tag.outputs.new_tag }}"
92
93
git config --global user.email "github-actions[bot]@users.noreply.github.com"
93
94
git config --global user.name "github-actions[bot]"
94
95
git tag $new_tag
95
96
git push origin $new_tag
96
97
97
98
- name : Create GitHub Release
99
+ if : |
100
+ github.ref == format('refs/heads/{0}', github.event.repository.default_branch) &&
101
+ !contains(github.event.head_commit.message, '[skip-release]') &&
102
+ !contains(github.event.pull_request.title, '[skip-release]')
98
103
uses : softprops/action-gh-release@v1
99
104
with :
100
- tag_name : ${{ needs .generate-tag.outputs.new_tag }}
101
- name : ${{ needs .generate-tag.outputs.new_tag }}
105
+ tag_name : ${{ steps .generate-tag.outputs.new_tag }}
106
+ name : ${{ steps .generate-tag.outputs.new_tag }}
102
107
generate_release_notes : true
103
108
draft : false
104
109
prerelease : false
0 commit comments