Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Automate Microsoft 365 App Manifest Release #180

Open
wants to merge 76 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
1a327d0
Automate Microsoft 365 App Manifest Release
oolumuyiwa Oct 21, 2024
6d5b9dd
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 21, 2024
aef4c0f
Rename create-manifest-update-pr.yml to create-manifest-update-pr.yml
oolumuyiwa Oct 21, 2024
0d78988
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 21, 2024
575f135
Update create-manifest-update-pr.yml
oolumuyiwa Oct 21, 2024
ea94b9a
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 21, 2024
b5183bf
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 21, 2024
554aa3a
Update create-manifest-update-pr.yml
oolumuyiwa Oct 21, 2024
5a7ce0e
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 21, 2024
e303e55
Merge pull request #1 from oolumuyiwa/patch-1
oolumuyiwa Oct 21, 2024
788dd64
Update create-manifest-update-pr.yml
oolumuyiwa Oct 21, 2024
1997a1f
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 21, 2024
52a2926
Merge branch 'main' into patch-1
oolumuyiwa Oct 21, 2024
a984da4
Merge pull request #2 from oolumuyiwa/patch-1
oolumuyiwa Oct 21, 2024
da84e5a
Update create-manifest-update-pr.yml
oolumuyiwa Oct 21, 2024
48d7077
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 21, 2024
f869343
Update create-manifest-update-pr.yml
oolumuyiwa Oct 21, 2024
d562bde
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 21, 2024
8dd48cb
Update create-manifest-update-pr.yml
oolumuyiwa Oct 21, 2024
ad98821
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 21, 2024
26049b5
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 21, 2024
58d1b4f
Update create-manifest-update-pr.yml
oolumuyiwa Oct 21, 2024
485b148
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 21, 2024
36d07bc
Update create-manifest-update-pr.yml
oolumuyiwa Oct 21, 2024
8e74c4b
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 21, 2024
6c67ac1
Update create-manifest-update-pr.yml
oolumuyiwa Oct 21, 2024
d4a78d4
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 21, 2024
40c3310
Merge pull request #5 from oolumuyiwa/patch-1
oolumuyiwa Oct 21, 2024
a85afb1
Update create-manifest-update-pr.yml
oolumuyiwa Oct 21, 2024
92e16a4
Update create-manifest-update-pr.yml
oolumuyiwa Oct 21, 2024
9ddae84
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 21, 2024
ed39ffa
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 21, 2024
33657c6
Merge pull request #6 from oolumuyiwa/patch-1
oolumuyiwa Oct 21, 2024
e7855d9
Update create-manifest-update-pr.yml
oolumuyiwa Oct 21, 2024
14616c8
Update create-manifest-update-pr.yml
oolumuyiwa Oct 21, 2024
2dc2693
Update create-manifest-update-pr.yml
oolumuyiwa Oct 21, 2024
e8ccdcc
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 21, 2024
0f9cf9c
Update create-manifest-update-pr.yml
oolumuyiwa Oct 21, 2024
e236f36
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 21, 2024
6df5a37
Update create-manifest-update-pr.yml
oolumuyiwa Oct 21, 2024
0ca3ca3
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 21, 2024
3092007
Update create-manifest-update-pr.yml
oolumuyiwa Oct 21, 2024
d5263a4
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 21, 2024
6845000
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 21, 2024
30496f6
Update create-manifest-update-pr.yml
oolumuyiwa Oct 22, 2024
2b9da3f
Update create-manifest-update-pr.yml
oolumuyiwa Oct 22, 2024
b680c66
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 22, 2024
58e4303
Update create-manifest-update-pr.yml
oolumuyiwa Oct 22, 2024
54d6d89
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 22, 2024
2266807
Update create-manifest-update-pr.yml
oolumuyiwa Oct 22, 2024
0af5de2
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 22, 2024
bd01d20
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 22, 2024
7b7d9d1
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 22, 2024
e365d11
Update create-manifest-update-pr.yml
oolumuyiwa Oct 22, 2024
c58b93e
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 22, 2024
db9866b
Update create-manifest-update-pr.yml
oolumuyiwa Oct 22, 2024
8d7ddfc
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 22, 2024
3f35b1a
Update create-manifest-update-pr.yml
oolumuyiwa Oct 22, 2024
f4985e9
Update create-manifest-update-pr.yml
oolumuyiwa Oct 23, 2024
a03c5e6
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 23, 2024
bf2edb4
Merge branch 'main' into patch-1
oolumuyiwa Oct 23, 2024
3e1cce4
Update create-manifest-update-pr.yml
oolumuyiwa Oct 23, 2024
a1c21ff
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 23, 2024
e514554
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 23, 2024
644f1e2
Update create-manifest-update-pr.yml
oolumuyiwa Oct 23, 2024
62a07b5
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 23, 2024
675fbe3
Update create-manifest-update-pr.yml
oolumuyiwa Oct 23, 2024
109c88f
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 23, 2024
d5e8b2e
Update create-manifest-update-pr.yml
oolumuyiwa Oct 23, 2024
350450a
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 23, 2024
bb5fde9
Update create-manifest-update-pr.yml
oolumuyiwa Oct 23, 2024
16b6c2a
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 23, 2024
fe17487
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 23, 2024
ffd90a4
Update create-manifest-update-pr.yml
oolumuyiwa Oct 23, 2024
77b40b1
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 23, 2024
1b09fa0
Update MicrosoftTeams.Localization.schema.json
oolumuyiwa Oct 23, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
125 changes: 125 additions & 0 deletions .github/workflows/create-manifest-update-pr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
name: Automate Microsoft 365 App Manifest Release

permissions:
pull-requests: write
issues: write

on:
push:
paths:
'**/*.json'
branches-ignore:
- main
- live

jobs:
create-pr:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Check for existing PR and close if any
run: |
# Get the source branch name (current branch)
SOURCE_BRANCH=${GITHUB_REF#refs/heads/}
echo "Current branch: $SOURCE_BRANCH"

# Call GitHub API to list open PRs from this source branch to main
PR_LIST=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
"https://api.github.com/repos/${GITHUB_REPOSITORY}/pulls?state=open&head=${{ github.repository_owner }}:$SOURCE_BRANCH&base=main")

# Parse the PR number from the response
PR_NUMBER=$(echo "$PR_LIST" | jq -r '.[0].number')

if [ "$PR_NUMBER" != "null" ]; then
echo "Found PR #$PR_NUMBER from $SOURCE_BRANCH to main. Closing it now..."

# Close the PR using the GitHub API
curl -X PATCH \
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
-H "Accept: application/vnd.github+json" \
-d '{"state": "closed"}' \
"https://api.github.com/repos/${GITHUB_REPOSITORY}/pulls/$PR_NUMBER"

echo "Closed PR #$PR_NUMBER."
else
echo "No open PR from $SOURCE_BRANCH to main."
fi

- name: Create PR to main with curl
id: local_to_main_pr
run: |
PR_TITLE="Add / Update new schema files"
PR_BODY="This PR adds or updates app and localization schema files to the repo's main branch"
SOURCE_BRANCH="${{ github.ref }}" # The source branch for the PR
DESTINATION_BRANCH="main" # The target branch for the PR

# Construct the API URL
REPO_URL="https://api.github.com/repos/${{ github.repository }}"

# Create the pull request using curl
RESPONSE=$(curl -X POST -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
-H "Accept: application/vnd.github.v3+json" \
-d "{\"title\":\"$PR_TITLE\", \"body\":\"$PR_BODY\", \"head\":\"$SOURCE_BRANCH\", \"base\":\"$DESTINATION_BRANCH\"}" \
"$REPO_URL/pulls")

echo "Response : $RESPONSE"
# Extract PR number from the response
PR_NUMBER=$(echo "$RESPONSE" | jq -r '.number')
# Extract the PR URL
PR_URL=$(echo "$RESPONSE" | jq -r '.html_url')

if [ "$PR_NUMBER" == "null" || "$PR_URL" == "null"]; then
echo "Failed to create pull request. Check the API response for details."
exit 1
fi


echo "Pull Request URL: $PR_URL"
echo "::set-output name=pr_url::$PR_URL"

echo "Created Pull Request Number: $PR_NUMBER"
echo "pr_number=$PR_NUMBER" >> $GITHUB_OUTPUT

echo "::set-output name=pr_title::$PR_TITLE"

echo "Github repo: ${{ github.repository }}"

# - name: Send Email Notification
# uses: dawidd6/action-send-mail@v3
# with:
# to: '[email protected] , [email protected], [email protected], [email protected]'
# from: 'OfficeDev Repo Schema Release Bot'
# subject: 'New Public Microsoft 365 App Manifest Schema Release PR Created'
# body: |
# A new pull request has been created:
# - PR Title: ${{ steps.local_to_main_pr.outputs.pr_title }}
# - PR Link: ${{ steps.local_to_main_pr.outputs.pr_url }}
# server_address: 'smtp.office365.com'
# server_port: 587


- name: Notify users by adding a comment on the PR
if: steps.local_to_main_pr.outputs.pr_url
run: |
PR_URL=${{ steps.local_to_main_pr.outputs.pr_url }}
COMMENT_BODY="Hey @chu-tianshu @oolumuyiwa, a new PR #$PR_URL has been created! Please take a look."
curl -X POST \
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
-H "Accept: application/vnd.github.v3+json" \
-d "{\"body\": \"$COMMENT_BODY\"}" \
"https://api.github.com/repos/${{ github.repository }}/issues/$PR_NUMBER/comments"


# Poll for PR status until it's closed
- name: Monitor PR status
run: |
PR_NUMBER=${{ steps.local_to_main_pr.outputs.pr_number }}
while [ "$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
https://api.github.com/repos/${{ github.repository }}/pulls/$PR_NUMBER | jq -r .state)" != "closed" ]; do
echo "PR #$PR_NUMBER is not closed yet..."
sleep 20
done
echo "PR local to main with number #$PR_NUMBER has been closed!"
3 changes: 2 additions & 1 deletion MicrosoftTeams.Localization.schema.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",

"additionalProperties": false,
"properties": {
"$schema": {
Expand All @@ -9,7 +10,7 @@
},
"name.short": {
"type": "string",
"maxLength": 30
"maxLength": 300
},
"name.full": {
"type": "string",
Expand Down