NocoDB Release #116
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: 'NocoDB Release' | |
on: | |
# Triggered manually | |
workflow_dispatch: | |
inputs: | |
tag: | |
description: "Target Tag" | |
required: false | |
prev_tag: | |
description: "Previous Tag" | |
required: false | |
jobs: | |
# Validate Branch | |
validate-branch: | |
runs-on: ubuntu-latest | |
steps: | |
- run: | | |
if [[ ${{ github.ref }} != 'refs/heads/master' ]]; then | |
echo "NocoDB Release is only allowed to run on master branch" | |
exit 1 | |
fi | |
# Process Input | |
process-input: | |
runs-on: ubuntu-latest | |
needs: validate-branch | |
outputs: | |
target_tag: ${{ steps.process-input.outputs.target_tag }} | |
prev_tag: ${{ steps.process-input.outputs.prev_tag }} | |
steps: | |
- id: process-input | |
name: process-input | |
run: | | |
TARGET_TAG=${{github.event.inputs.tag}} | |
PREV_TAG=${{github.event.inputs.prev_tag}} | |
if [[ ${PREV_TAG} == '' ]]; then | |
# fetch the latest version | |
PREV_TAG=$(basename $(curl -fs -o/dev/null -w %{redirect_url} https://github.com/nocodb/nocodb/releases/latest)) | |
fi | |
if [[ ${TARGET_TAG} == '' ]]; then | |
# bump the version from PREV_TAG | |
TARGET_TAG=$(echo ${PREV_TAG} | awk -F. -v OFS=. '{$NF += 1 ; print}') | |
fi | |
echo "TARGET_TAG=${TARGET_TAG}" >> $GITHUB_OUTPUT | |
echo "PREV_TAG=${PREV_TAG}" >> $GITHUB_OUTPUT | |
- name: Verify | |
run : | | |
echo TARGET_TAG: ${{ steps.process-input.outputs.target_tag }} | |
echo PREV_TAG: ${{ steps.process-input.outputs.prev_tag }} | |
# Merge develop to master | |
pr-to-master: | |
needs: process-input | |
uses: ./.github/workflows/pr-to-master.yml | |
with: | |
tag: ${{ needs.process-input.outputs.target_tag }} | |
targetEnv: ${{ github.event.inputs.targetEnv || 'PROD' }} | |
# Build, install, publish frontend and backend to npm | |
release-npm: | |
needs: [pr-to-master, process-input] | |
uses: ./.github/workflows/release-npm.yml | |
with: | |
tag: ${{ needs.process-input.outputs.target_tag }} | |
targetEnv: ${{ github.event.inputs.targetEnv || 'PROD' }} | |
secrets: | |
NPM_TOKEN: "${{ secrets.NPM_TOKEN }}" | |
# Draft Release Note | |
release-draft-note: | |
needs: [release-npm, process-input] | |
uses: ./.github/workflows/release-draft.yml | |
with: | |
tag: ${{ needs.process-input.outputs.target_tag }} | |
prev_tag: ${{ needs.process-input.outputs.prev_tag }} | |
tagHeadSHA: 'N' | |
secrets: | |
NC_GITHUB_TOKEN: "${{ secrets.NC_GITHUB_TOKEN }}" | |
# Build docker image and push to docker hub | |
release-docker: | |
needs: [release-draft-note, process-input] | |
uses: ./.github/workflows/release-docker.yml | |
with: | |
currentVersion: 'N/A' | |
tag: ${{ needs.process-input.outputs.target_tag }} | |
targetEnv: ${{ github.event.inputs.targetEnv || 'PROD' }} | |
secrets: | |
DOCKERHUB_USERNAME: "${{ secrets.DOCKERHUB_USERNAME }}" | |
DOCKERHUB_TOKEN: "${{ secrets.DOCKERHUB_TOKEN }}" | |
# Build executables and publish to GitHub | |
release-executables: | |
needs: [release-draft-note, process-input] | |
uses: ./.github/workflows/release-executables.yml | |
with: | |
tag: ${{ needs.process-input.outputs.target_tag }} | |
secrets: | |
NC_GITHUB_TOKEN: "${{ secrets.NC_GITHUB_TOKEN }}" | |
# Close all issues with target tags 'Status: Ready for Next Release' | |
# close-issues: | |
# needs: [release-docker, process-input] | |
# uses: ./.github/workflows/release-close-issue.yml | |
# with: | |
# issue_label: 'π Status: Ready for Next Release' | |
# version: ${{ needs.process-input.outputs.target_tag }} | |
# Publish Docs | |
publish-docs: | |
needs: release-docker | |
uses: ./.github/workflows/publish-docs.yml | |
secrets: | |
GH_TOKEN: "${{ secrets.GH_TOKEN }}" | |
# Sync changes to develop | |
sync-to-develop: | |
needs: publish-docs | |
uses: ./.github/workflows/sync-to-develop.yml |