forked from microsoft/azure-tools-for-java
-
Notifications
You must be signed in to change notification settings - Fork 11
191 lines (163 loc) · 6.42 KB
/
release.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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
# GitHub Actions Workflow created for handling the release process based on the draft release prepared with the Build workflow.
# Running the publishPlugin task requires all following secrets to be provided: PUBLISH_TOKEN, PRIVATE_KEY, PRIVATE_KEY_PASSWORD, CERTIFICATE_CHAIN.
# See https://plugins.jetbrains.com/docs/intellij/plugin-signing.html for more information.
name: Release
on:
release:
types: [prereleased, released]
env:
# Branches from the https://github.com/microsoft/azure-maven-plugins and https://github.com/microsoft/azure-tools-for-java repositories
ENDGAME_VERSION: endgame-202407
jobs:
# Prepare environment and build the plugin
build-dependencies:
if: ${{ startsWith(github.event.release.tag_name, 'v4') }}
name: Build Dependencies
runs-on: ubuntu-latest
steps:
# Check out current repository
- name: Fetch Sources
uses: actions/checkout@v4
with:
ref: ${{ github.event.release.tag_name }}
path: azure-tools-for-intellij
# Setup Java environment
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: zulu
java-version: 17
# Build Utils library
- name: Build Utils
working-directory: ${{ github.workspace }}/azure-tools-for-intellij
shell: bash
run: ./mvnw install -DskipTests -f Utils/pom.xml
# Upload azure artifacts
- name: Upload azure artifacts
uses: actions/upload-artifact@v4
with:
name: azure-artifacts
path: /home/runner/.m2/repository/com/microsoft/azure/
retention-days: 1
# Upload hdinsight artifacts
- name: Upload hdinsight artifacts
uses: actions/upload-artifact@v4
with:
name: hdinsight-artifacts
path: /home/runner/.m2/repository/com/microsoft/hdinsight/
retention-days: 1
# Upload azuretools artifacts
- name: Upload azuretools artifacts
uses: actions/upload-artifact@v4
with:
name: azuretools-artifacts
path: /home/runner/.m2/repository/com/microsoft/azuretools/
retention-days: 1
# Prepare and publish the plugin to JetBrains Marketplace repository
release:
if: ${{ startsWith(github.event.release.tag_name, 'v4') }}
needs: [ build-dependencies ]
name: Publish Plugin
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
# Download azure artifacts
- name: Download library artifacts
uses: actions/download-artifact@v4
with:
name: azure-artifacts
path: /home/runner/.m2/repository/com/microsoft/azure/
# Download hdinsight artifacts
- name: Download library artifacts
uses: actions/download-artifact@v4
with:
name: hdinsight-artifacts
path: /home/runner/.m2/repository/com/microsoft/hdinsight/
# Download azuretools artifacts
- name: Download library artifacts
uses: actions/download-artifact@v4
with:
name: azuretools-artifacts
path: /home/runner/.m2/repository/com/microsoft/azuretools/
# Check out current repository
- name: Fetch Sources
uses: actions/checkout@v4
with:
ref: ${{ github.event.release.tag_name }}
# Set up Java environment for the next steps
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: zulu
java-version: 17
# Setup Gradle
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
with:
build-root-directory: ${{ github.workspace }}/PluginsAndFeatures/azure-toolkit-for-rider
gradle-home-cache-cleanup: true
# Setup .NET 8 environment for the next steps
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.x'
# Set environment variables
- name: Export Properties
id: properties
shell: bash
run: |
CHANGELOG="$(cat << 'EOM' | sed -e 's/^[[:space:]]*$//g' -e '/./,$!d'
${{ github.event.release.body }}
EOM
)"
echo "changelog<<EOF" >> $GITHUB_OUTPUT
echo "$CHANGELOG" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
# Update Unreleased section with the current release note
- name: Patch Changelog
if: ${{ steps.properties.outputs.changelog != '' }}
working-directory: ${{ github.workspace }}/PluginsAndFeatures/azure-toolkit-for-rider
env:
CHANGELOG: ${{ steps.properties.outputs.changelog }}
run: |
./gradlew patchChangelog --release-note="$CHANGELOG"
# Publish the plugin to JetBrains Marketplace
- name: Publish Plugin
working-directory: ${{ github.workspace }}/PluginsAndFeatures/azure-toolkit-for-rider
env:
PUBLISH_TOKEN: ${{ secrets.PUBLISH_TOKEN }}
CERTIFICATE_CHAIN: ${{ secrets.CERTIFICATE_CHAIN }}
PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }}
PRIVATE_KEY_PASSWORD: ${{ secrets.PRIVATE_KEY_PASSWORD }}
run: ./gradlew publishPlugin
# Upload artifact as a release asset
- name: Upload Release Asset
working-directory: ${{ github.workspace }}/PluginsAndFeatures/azure-toolkit-for-rider
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh release upload ${{ github.event.release.tag_name }} ./build/distributions/*
# Create a pull request
- name: Create Pull Request
if: ${{ steps.properties.outputs.changelog != '' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
VERSION="${{ github.event.release.tag_name }}"
BRANCH="changelog-update-$VERSION"
LABEL="release changelog"
git config user.email "action@github.com"
git config user.name "GitHub Action"
git checkout -b $BRANCH
git commit -am "Changelog update - $VERSION"
git push --set-upstream origin $BRANCH
gh label create "$LABEL" \
--description "Pull requests with release changelog update" \
--force \
|| true
gh pr create \
--title "Changelog update - \`$VERSION\`" \
--body "Current pull request contains patched \`CHANGELOG.md\` file for the \`$VERSION\` version." \
--label "$LABEL" \
--head $BRANCH