1- name : Build & Release aws-rds-postgres
1+ name : Build & Release aws-rds-postgres (Combined)
22
33on :
4+ workflow_dispatch :
45 push :
56 branches :
67 - " main"
78 paths :
89 - " **"
10+ - " .github/workflows/ryvn-aws-rds-postgres-release.yaml"
911 pull_request :
1012 branches :
1113 - " main"
1618 SERVICE_NAME : aws-rds-postgres
1719
1820jobs :
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
2223 runs-on : ubuntu-latest
2324 permissions :
24- contents : read
25+ contents : write
2526 id-token : write
2627
27- outputs :
28- version : ${{ steps.generate-tag.outputs.version }}
29- new_tag : ${{ steps.generate-tag.outputs.new_tag }}
30-
3128 steps :
3229 - name : Checkout code
3330 uses : actions/checkout@v4
@@ -49,56 +46,64 @@ jobs:
4946 # Extract version and tag from JSON output
5047 version=$(echo "$tag_info" | jq -r '.version')
5148 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+
5352 echo "version=$version" >> $GITHUB_OUTPUT
5453 echo "new_tag=$new_tag" >> $GITHUB_OUTPUT
54+ echo "channel=$channel" >> $GITHUB_OUTPUT
55+ echo "isPreview=$isPreview" >> $GITHUB_OUTPUT
5556
5657
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
7858
7959 - 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))
8064 env :
8165 RYVN_CLIENT_ID : ${{ secrets.RYVN_CLIENT_ID }}
8266 RYVN_CLIENT_SECRET : ${{ secrets.RYVN_CLIENT_SECRET }}
8367 run : |
84- version="${{ needs .generate-tag.outputs.new_tag }}"
68+ version="${{ steps .generate-tag.outputs.new_tag }}"
8569 version=${version#aws-rds-postgres@}
8670 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
8885
8986 - 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]')
9091 run : |
91- new_tag="${{ needs .generate-tag.outputs.new_tag }}"
92+ new_tag="${{ steps .generate-tag.outputs.new_tag }}"
9293 git config --global user.email "github-actions[bot]@users.noreply.github.com"
9394 git config --global user.name "github-actions[bot]"
9495 git tag $new_tag
9596 git push origin $new_tag
9697
9798 - 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]')
98103 uses : softprops/action-gh-release@v1
99104 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 }}
102107 generate_release_notes : true
103108 draft : false
104109 prerelease : false
0 commit comments