cleanup release process (#1756)

* cleanup release

* cleanup

* cleanup
This commit is contained in:
Lukas Gravley 2021-07-13 15:20:17 -05:00 committed by GitHub
parent b3e0c02dc5
commit c2d79260cf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 111 additions and 211 deletions

View file

@ -7,18 +7,10 @@
############ ############
# Defaults # # Defaults #
############\ ############\
GITHUB_API='https://api.github.com' # API url
VERSION='' # Version of release pulled from api
ACTION_FILE='action.yml' # Action file to update ACTION_FILE='action.yml' # Action file to update
PR_ID='' # PUll Request ID when created COMMIT_SHA='' # Commit sha when PR is created
UPDATED_BODY_STRING='' # Issue body string converted PR_ID='' # Pull Request NUmber when generated
COMMIT_SHA='' # COmmit sha when PR is created VERSION='' # Version of release pulled from api
##############
# Built Vars #
##############
ORG=$(echo "${ORG_REPO}" | cut -d'/' -f1) # Name of the Org
REPO=$(echo "${ORG_REPO}" | cut -d'/' -f2) # Name of the repository
################################################################################ ################################################################################
############################ FUNCTIONS BELOW ################################### ############################ FUNCTIONS BELOW ###################################
@ -31,13 +23,13 @@ Header() {
echo "-------------------------------------------------------" echo "-------------------------------------------------------"
} }
################################################################################ ################################################################################
#### Function GetReleaseFromIssueTitle ######################################### #### Function GetReleaseVersion #########################################
GetReleaseFromIssueTitle() { GetReleaseVersion() {
echo "-------------------------------------------------------" echo "-------------------------------------------------------"
echo "Getting the latest Release version from GitHub Issue..." echo "Getting the latest Release version from GitHub ..."
# Get the latest release on the Repository # Get the latest release on the Repository
GET_VERSION_CMD=$(echo "${ISSUE_TITLE}" | grep -E -o "v[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+" 2>&1) GET_VERSION_CMD=$(echo "${RELEASE_NAME}" | grep -E -o "v[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+" 2>&1)
# Load the error code # Load the error code
ERROR_CODE=$? ERROR_CODE=$?
@ -160,94 +152,7 @@ CommitAndPush() {
fi fi
} }
################################################################################
#### Function UpdateBaseIssue ##################################################
UpdateBaseIssue() {
echo "-------------------------------------------------------"
echo "Updating Original Issue:[$ISSUE_NUMBER] with Release information..."
# Update the issue to point to new created Pull Request
UPDATE_ISSUE_CMD=$(curl -s --fail -X POST \
--url "${GITHUB_API}/repos/${ORG}/${REPO}/issues/${ISSUE_NUMBER}/comments" \
-H "Authorization: Bearer ${GITHUB_TOKEN}" \
-H 'Content-Type: application/json' \
--data "{ \"body\": \"This Issue is being resolved on in the Pull Request #${PR_ID}\"}" 2>&1)
# Load the error code
ERROR_CODE=$?
# Check the shell for errors
if [ "${ERROR_CODE}" -ne 0 ]; then
# ERROR
echo "ERROR! Failed to update base issue!"
echo "ERROR:[$UPDATE_ISSUE_CMD]"
exit 1
else
echo "Successfully updated base Issue"
fi
}
################################################################################
#### Function UpdatePRBody #####################################################
UpdatePRBody() {
echo "-------------------------------------------------------"
echo "Updating PR body with Release information and Issue linkage..."
# Need to update the body of the PR with the information
UPDATE_PR_CMD=$(
curl -s --fail -X PATCH \
--url "${GITHUB_API}/repos/${ORG}/${REPO}/pulls/${PR_ID}" \
-H 'Accept: application/vnd.github.shadow-cat-preview+json,application/vnd.github.sailor-v-preview+json' \
-H "Authorization: Bearer ${GITHUB_TOKEN}" \
-H 'Content-Type: application/json' \
--data "{\"body\": \"Automation Creation of Super-Linter\n\nThis closes #${ISSUE_NUMBER}\n\n${UPDATED_BODY_STRING}\"}" 2>&1
)
# Load the error code
ERROR_CODE=$?
# Check the shell for errors
if [ "${ERROR_CODE}" -ne 0 ]; then
# ERROR
echo "ERROR! Failed to update PR body!"
echo "ERROR:[$UPDATE_PR_CMD]"
exit 1
else
echo "Successfully updated PR body"
fi
# Add the label for the release
UPDATE_LABEL_CMD=$(
curl -s --fail -X POST \
--url "${GITHUB_API}/repos/${ORG}/${REPO}/issues/${PR_ID}/labels" \
-H 'Accept: application/vnd.github.v3+json' \
-H "Authorization: Bearer ${GITHUB_TOKEN}" \
-H 'Content-Type: application/json' \
--data '{"labels":["Release"]}' 2>&1
)
# Load the error code
ERROR_CODE=$?
# Check the shell for errors
if [ "${ERROR_CODE}" -ne 0 ]; then
# ERROR
echo "ERROR! Failed to update PR label!"
echo "ERROR:[$UPDATE_LABEL_CMD]"
exit 1
else
echo "Successfully updated PR label"
fi
}
################################################################################
#### Function UpdateReleaseBodyString ##########################################
UpdateReleaseBodyString() {
# Need to convert the string newlines to literal newlines
UPDATED_BODY_STRING=$(echo "${ISSUE_BODY}" | sed -E ':a;N;$!ba;s/\r{0,1}\n/\\n/g')
echo "-------------------------------------------------------"
echo "The updated body string is:[${UPDATED_BODY_STRING}]"
echo "-------------------------------------------------------"
}
################################################################################ ################################################################################
#### Function SetActionsVariables ############################################## #### Function SetActionsVariables ##############################################
SetActionsVariables() { SetActionsVariables() {
@ -255,14 +160,11 @@ SetActionsVariables() {
echo "-------------------------------------------------------" echo "-------------------------------------------------------"
echo "Setting the variables back to GitHub Actions..." echo "Setting the variables back to GitHub Actions..."
echo "Setting PR_ID:[${PR_ID}]"
echo "PR_ID=${PR_ID}" >>"${GITHUB_ENV}"
echo "Setting RELEASE_VERSION:[${VERSION}]" echo "Setting RELEASE_VERSION:[${VERSION}]"
echo "RELEASE_VERSION=${VERSION}" >>"${GITHUB_ENV}" echo "RELEASE_VERSION=${VERSION}" >>"${GITHUB_ENV}"
echo "Setting PR_REF:[Automation-Release-${VERSION}]" echo "Setting PR_ID:[${PR_ID}]"
echo "PR_REF=Automation-Release-${VERSION}" >>"${GITHUB_ENV}" echo "PR_ID=${PR_ID}" >>"${GITHUB_ENV}"
echo "Setting COMMIT_SHA:[${COMMIT_SHA}]" echo "Setting COMMIT_SHA:[${COMMIT_SHA}]"
echo "COMMIT_SHA=${COMMIT_SHA}" >>"${GITHUB_ENV}" echo "COMMIT_SHA=${COMMIT_SHA}" >>"${GITHUB_ENV}"
@ -286,12 +188,7 @@ Header
########################## ##########################
# Get the latest version # # Get the latest version #
########################## ##########################
GetReleaseFromIssueTitle GetReleaseVersion
##########################
# Get the latest version #
##########################
UpdateReleaseBodyString
########################## ##########################
# Update the action file # # Update the action file #
@ -303,16 +200,6 @@ UpdateActionFile
######################## ########################
CommitAndPush CommitAndPush
####################
# Update the Issue #
####################
UpdateBaseIssue
####################
# Update the Issue #
####################
UpdatePRBody
##################################### #####################################
# Set the variables back to Actions # # Set the variables back to Actions #
##################################### #####################################

View file

@ -1,15 +0,0 @@
---
name: Create Release
about: Create a Release to the Super Linter
title: 'Super-Linter Release: vX.Y.Z'
labels: release
assignees: ''
---
## Changelog
<!-- This is the Release body to add all the information -->
## Bugs
<!-- This is the Release body to add all the information -->

View file

@ -14,9 +14,9 @@
# Start the job on all push to master # # Start the job on all push to master #
####################################### #######################################
on: on:
# Start when a pull request is opened # Start when a release is published
issues: release:
types: ['opened'] types: ['published']
############### ###############
# Set the Job # # Set the Job #
@ -31,8 +31,7 @@ jobs:
##################################################################### #####################################################################
# Only run if Admin start job and it was the Release Issue template # # Only run if Admin start job and it was the Release Issue template #
##################################################################### #####################################################################
if: contains(github.event.issue.title, 'Super-Linter Release:') && if: github.actor == 'admiralawkbar' || github.actor == 'jwiebalk' ||
github.actor == 'admiralawkbar' || github.actor == 'jwiebalk' ||
github.actor == 'IAmHughes' || github.actor == 'nemchik' || github.actor == 'IAmHughes' || github.actor == 'nemchik' ||
github.actor == 'Hanse00' || github.actor == 'github-actions' || github.actor == 'Hanse00' || github.actor == 'github-actions' ||
github.actor == 'GaboFDC' || github.actor == 'ferrarimarco' github.actor == 'GaboFDC' || github.actor == 'ferrarimarco'
@ -47,24 +46,6 @@ jobs:
- name: Checkout Code - name: Checkout Code
uses: actions/checkout@v2.3.4 uses: actions/checkout@v2.3.4
#######################################################
# Create a GitHub Issue with the info from this build #
#######################################################
- name: Update GitHub Issue
uses: actions/github-script@v4.0.2
id: update-issue
with:
# https://octokit.github.io/rest.js/v18#issues-create
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
github.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: "${{ github.event.issue.number }}",
title: "Deploying slim Super-Linter Release to Production",
body: 'Currently deploying the Release...'
})
######################### #########################
# Update deployment API # # Update deployment API #
######################### #########################
@ -112,7 +93,7 @@ jobs:
########################### ###########################
- name: Get current Release number - name: Get current Release number
run: | run: |
echo "RELEASE_VERSION=$(echo "${{ github.event.issue.title }}" \ echo "RELEASE_VERSION=$(echo "${{ github.event.release.name }}" \
| grep -E -o "v[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+")" \ | grep -E -o "v[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+")" \
>> ${GITHUB_ENV} >> ${GITHUB_ENV}
@ -173,3 +154,48 @@ jobs:
status: ${{ job.status }} status: ${{ job.status }}
deployment_id: ${{ steps.deployment.outputs.deployment_id }} deployment_id: ${{ steps.deployment.outputs.deployment_id }}
env_url: https://github.com/github/super-linter/releases/tag/${{ env.RELEASE_VERSION }} env_url: https://github.com/github/super-linter/releases/tag/${{ env.RELEASE_VERSION }}
#######################################################
# Create a GitHub Issue with the info from this build #
#######################################################
- name: Create GitHub Issue for failure
if: failure()
uses: actions/github-script@v4.0.2
id: create-issue
with:
# https://octokit.github.io/rest.js/v18#issues-create
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
const create = await github.issues.create({
owner: context.repo.owner,
repo: context.repo.repo,
title: "Failed to deploy release to production",
body: "Automation has failed us! Failed to push release ${{ env.RELEASE_VERSION }}"
})
console.log('create', create)
return create.data.number
############################
# Assign admins on failure #
############################
- name: Assign Admins on failure
uses: actions/github-script@v4.0.2
if: failure()
with:
# https://octokit.github.io/rest.js/v18#issues-create
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
github.issues.addAssignees({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: "${{ steps.create-issue.outputs.result }}",
assignees: [
'admiralawkbar',
'jwiebalk',
'IAmHughes',
'nemchik',
'Hanse00',
'GaboFDC',
'ferrarimarco'
]
})

View file

@ -14,9 +14,9 @@
# Start the job on all push to master # # Start the job on all push to master #
####################################### #######################################
on: on:
# Start when a pull request is opened # Start when a release is published
issues: release:
types: ['opened'] types: ['published']
############### ###############
# Set the Job # # Set the Job #
@ -31,8 +31,7 @@ jobs:
##################################################################### #####################################################################
# Only run if Admin start job and it was the Release Issue template # # Only run if Admin start job and it was the Release Issue template #
##################################################################### #####################################################################
if: contains(github.event.issue.title, 'Super-Linter Release:') && if: github.actor == 'admiralawkbar' || github.actor == 'jwiebalk' ||
github.actor == 'admiralawkbar' || github.actor == 'jwiebalk' ||
github.actor == 'IAmHughes' || github.actor == 'nemchik' || github.actor == 'IAmHughes' || github.actor == 'nemchik' ||
github.actor == 'Hanse00' || github.actor == 'github-actions' || github.actor == 'Hanse00' || github.actor == 'github-actions' ||
github.actor == 'GaboFDC' || github.actor == 'ferrarimarco' github.actor == 'GaboFDC' || github.actor == 'ferrarimarco'
@ -47,24 +46,6 @@ jobs:
- name: Checkout Code - name: Checkout Code
uses: actions/checkout@v2.3.4 uses: actions/checkout@v2.3.4
#######################################################
# Create a GitHub Issue with the info from this build #
#######################################################
- name: Update GitHub Issue
uses: actions/github-script@v4.0.2
id: update-issue
with:
# https://octokit.github.io/rest.js/v18#issues-create
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
github.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: "${{ github.event.issue.number }}",
title: "Deploying Super-Linter standard Release to Production",
body: 'Currently deploying the Release...'
})
######################### #########################
# Update deployment API # # Update deployment API #
######################### #########################
@ -117,11 +98,7 @@ jobs:
# PR_ID PR_REF RELEASE_VERSION COMMIT_SHA # PR_ID PR_REF RELEASE_VERSION COMMIT_SHA
env: env:
DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }} DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} RELEASE_NAME: ${{ github.event.release.name }}
ORG_REPO: ${{ github.repository }}
ISSUE_NUMBER: ${{ github.event.issue.number }}
ISSUE_TITLE: ${{ github.event.issue.title }}
ISSUE_BODY: ${{ github.event.issue.body }}
################ ################
# Docker cache # # Docker cache #
@ -168,26 +145,6 @@ jobs:
rm -rf /tmp/.buildx-cache rm -rf /tmp/.buildx-cache
mv /tmp/.buildx-cache-new /tmp/.buildx-cache mv /tmp/.buildx-cache-new /tmp/.buildx-cache
#############################
# Create the GitHub Release #
#############################
- name: Create Release
if: success()
id: create_release
uses: actions/create-release@v1
env:
# This token is provided by Actions,
# you do not need to create your own token
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
commitish: ${{ env.PR_REF }}
tag_name: ${{ env.RELEASE_VERSION }}
release_name: Release ${{ env.RELEASE_VERSION }}
body: |
${{ github.event.issue.body }}
draft: false
prerelease: false
##################################################### #####################################################
# Create the Required status check for Stack Linter # # Create the Required status check for Stack Linter #
##################################################### #####################################################
@ -222,3 +179,48 @@ jobs:
status: ${{ job.status }} status: ${{ job.status }}
deployment_id: ${{ steps.deployment.outputs.deployment_id }} deployment_id: ${{ steps.deployment.outputs.deployment_id }}
env_url: https://github.com/github/super-linter/releases/tag/${{ env.RELEASE_VERSION }} env_url: https://github.com/github/super-linter/releases/tag/${{ env.RELEASE_VERSION }}
#######################################################
# Create a GitHub Issue with the info from this build #
#######################################################
- name: Create GitHub Issue for failure
if: failure()
uses: actions/github-script@v4.0.2
id: create-issue
with:
# https://octokit.github.io/rest.js/v18#issues-create
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
const create = await github.issues.create({
owner: context.repo.owner,
repo: context.repo.repo,
title: "Failed to deploy release to production",
body: "Automation has failed us! Failed to push release ${{ env.RELEASE_VERSION }}"
})
console.log('create', create)
return create.data.number
############################
# Assign admins on failure #
############################
- name: Assign Admins on failure
uses: actions/github-script@v4.0.2
if: failure()
with:
# https://octokit.github.io/rest.js/v18#issues-create
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
github.issues.addAssignees({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: "${{ steps.create-issue.outputs.result }}",
assignees: [
'admiralawkbar',
'jwiebalk',
'IAmHughes',
'nemchik',
'Hanse00',
'GaboFDC',
'ferrarimarco'
]
})