diff --git a/.github/workflows/release-close-issue.yml b/.github/workflows/release-close-issue.yml new file mode 100644 index 0000000000..b8e3c438a7 --- /dev/null +++ b/.github/workflows/release-close-issue.yml @@ -0,0 +1,34 @@ +name: 'Close Issues with Labels' + +on: + # Triggered manually + workflow_dispatch: + inputs: + issue_label: + description: "All issues with such label will be closed" + required: true + version: + description: "Which version is this issue fixed in" + required: true + # Triggered by release-nocodb.yml + workflow_call: + inputs: + issue_label: + description: "All issues with such label will be closed" + required: true + type: string + version: + description: "Which version is this issue fixed in" + required: true + type: string +jobs: + close-issues: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@master + - name: close-resolved-issues + uses: wingkwong/close-issues-based-on-label@master + env: + LABEL: ${{ github.event.inputs.issue_label || inputs.issue_label }} + VERSION: ${{ github.event.inputs.version || inputs.version }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/release-docker.yml b/.github/workflows/release-docker.yml index c8e094a8f8..1efc14d9ba 100644 --- a/.github/workflows/release-docker.yml +++ b/.github/workflows/release-docker.yml @@ -1,11 +1,19 @@ name: "Release : Docker" on: + # Triggered manually workflow_dispatch: inputs: tag: description: "Docker image tag" required: true + # Triggered by release-nocodb.yml + workflow_call: + inputs: + tag: + description: "Docker image tag" + required: true + type: string jobs: buildx: @@ -59,13 +67,13 @@ jobs: uses: docker/build-push-action@v2 with: context: ${{ env.working-directory }} - build-args: NC_VERSION=${{ github.event.inputs.tag }} + build-args: NC_VERSION=${{ github.event.inputs.tag || inputs.tag }} platforms: linux/amd64,linux/arm64,linux/arm/v7 cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache-new push: true tags: | - nocodb/nocodb:${{ github.event.inputs.tag }} + nocodb/nocodb:${{ github.event.inputs.tag || inputs.tag }} nocodb/nocodb:latest # Temp fix diff --git a/.github/workflows/release-draft.yml b/.github/workflows/release-draft.yml index dc57ee6389..8f0228b615 100644 --- a/.github/workflows/release-draft.yml +++ b/.github/workflows/release-draft.yml @@ -1,6 +1,7 @@ name: "Release : Draft Notes" on: + # Triggered manually workflow_dispatch: inputs: tag: @@ -9,6 +10,17 @@ on: prev_tag: description: "Previous Tag" required: true + # Triggered by release-nocodb.yml + workflow_call: + inputs: + tag: + description: "Tag" + required: true + type: string + prev_tag: + description: "Previous Tag" + required: true + type: string jobs: build: @@ -22,7 +34,7 @@ jobs: github.git.createRef({ owner: context.repo.owner, repo: context.repo.repo, - ref: "refs/tags/${{ github.event.inputs.tag }}", + ref: "refs/tags/${{ github.event.inputs.tag || inputs.tag }} ", sha: context.sha }) @@ -33,4 +45,4 @@ jobs: - uses: actions/setup-node@v2 with: node-version: 14 - - run: "npx github-release-notes@0.17.2 release --token ${{ secrets.GH_TOKEN }} --draft --tags ${{ github.event.inputs.tag }}..${{ github.event.inputs.prev_tag }}" + - run: "npx github-release-notes@0.17.2 release --token ${{ secrets.GH_TOKEN }} --draft --tags ${{ github.event.inputs.tag || inputs.tag }}..${{ github.event.inputs.prev_tag || inputs.prev_tag }} " diff --git a/.github/workflows/release-nocodb.yml b/.github/workflows/release-nocodb.yml new file mode 100644 index 0000000000..5f427fb0a5 --- /dev/null +++ b/.github/workflows/release-nocodb.yml @@ -0,0 +1,52 @@ +name: 'NocoDB Release' + +on: + # Triggered manually + workflow_dispatch: + inputs: + tag: + description: "Target Tag" + required: true + prev_tag: + description: "Previous Tag" + required: true +jobs: + # Close all issues with target tags 'Fixed' & 'Resolved' + close-fixed-issues: + needs: release-npm + uses: ./.github/workflows/release-close-issue.yml + with: + issue_label: 'Fixed' + version: ${{ github.event.inputs.tag }} + close-resolved-issues: + needs: close-fixed-issues + uses: ./.github/workflows/release-close-issue.yml + with: + issue_label: 'Resolved' + version: ${{ github.event.inputs.tag }} + + # Build, install, publish frontend and backend to npm + release-npm: + uses: ./.github/workflows/release-npm.yml + with: + tag: ${{ github.event.inputs.tag }} + + # Draft Release Note + release-draft-note: + needs: close-issues + uses: ./.github/workflows/release-draft.yml + with: + tag: ${{ github.event.inputs.tag }} + prev_tag: ${{ github.event.inputs.prev_tag }} + + # Build docker image and push to docker hub + release-docker: + needs: release-draft-note + uses: ./.github/workflows/release-docker.yml + with: + tag: ${{ github.event.inputs.tag }} + + # Sync changes to develop + sync-to-develop: + needs: release-docker + uses: ./.github/workflows/sync-to-develop.yml \ No newline at end of file diff --git a/.github/workflows/release-npm.yml b/.github/workflows/release-npm.yml index 200b7e5782..6a9646791a 100644 --- a/.github/workflows/release-npm.yml +++ b/.github/workflows/release-npm.yml @@ -1,15 +1,19 @@ name: "Release : NPM packages" on: + # Triggered manually workflow_dispatch: inputs: tag: description: "Tag" required: true - prev_tag: - description: "Previous Tag" + type: string + # Triggered by release-nocodb.yml + workflow_call: + inputs: + tag: + description: "Tag" required: true - jobs: release: runs-on: ubuntu-latest @@ -31,7 +35,7 @@ jobs: npm run build:copy:jsdeliver cd ../.. npm install - VERSION=${{github.event.inputs.tag}} node scripts/upgradeNcGui.js node scripts/upgradeNcGui.js && cd packages/nocodb && npm run obfuscate:build:publish + VERSION=${{ github.event.inputs.tag || inputs.tag }} node scripts/upgradeNcGui.js node scripts/upgradeNcGui.js && cd packages/nocodb && npm run obfuscate:build:publish env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - name: Create Pull Request @@ -44,113 +48,17 @@ jobs: # committer: GitHub # author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com> signoff: true - branch: release-patches + branch: 'release/${{ github.event.inputs.tag || inputs.tag }}' delete-branch: true - title: 'Release ${{github.event.inputs.tag}}' + title: 'Release ${{ github.event.inputs.tag || inputs.tag }}' labels: | - automerge - + Bot: Automated PR - name: Check outputs run: | echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}" echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}" - - - name: automerge - uses: "pascalgn/automerge-action@v0.14.3" - env: - GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" - PULL_REQUEST: "${{ steps.cpr.outputs.pull-request-number }}" - buildx: - runs-on: ubuntu-latest - needs: [release] - env: - working-directory: ./packages/nocodb - strategy: - matrix: - node-version: [ 12 ] - steps: - - name: Checkout - uses: actions/checkout@v2 - - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v2 - with: - node-version: ${{ matrix.node-version }} - - - uses: bahmutov/npm-install@v1 - with: - working-directory: ${{ env.working-directory }} - - - name: Build nocodb and docker files - run: | - npm run build - npm run docker:build - working-directory: ${{ env.working-directory }} - - - name: Set up QEMU - uses: docker/setup-qemu-action@v1 - - - name: Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v1 - - - name: Cache Docker layers - uses: actions/cache@v2 - with: - path: /tmp/.buildx-cache - key: ${{ runner.os }}-buildx-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-buildx- - - - name: Login to DockerHub - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Build and push - uses: docker/build-push-action@v2 - with: - context: ${{ env.working-directory }} - build-args: NC_VERSION=${{ github.event.inputs.tag }} - platforms: linux/amd64,linux/arm64,linux/arm/v7 - cache-from: type=local,src=/tmp/.buildx-cache - cache-to: type=local,dest=/tmp/.buildx-cache-new - push: true - tags: | - nocodb/nocodb:${{ github.event.inputs.tag }} - nocodb/nocodb:latest - - # Temp fix - # https://github.com/docker/build-push-action/issues/252 - # https://github.com/moby/buildkit/issues/1896 - - name: Move cache - run: | - rm -rf /tmp/.buildx-cache - mv /tmp/.buildx-cache-new /tmp/.buildx-cache - draft: - runs-on: ubuntu-latest - needs: [release] - steps: - - name: Create tag - uses: actions/github-script@v3 - with: - github-token: ${{ secrets.GH_TOKEN }} - script: | - github.git.createRef({ - owner: context.repo.owner, - repo: context.repo.repo, - ref: "refs/tags/${{ github.event.inputs.tag }}", - sha: context.sha - }) - - - uses: actions/checkout@v2 - with: - fetch-depth: 0 - - - uses: actions/setup-node@v2 - with: - node-version: 14 - - run: "npx github-release-notes@0.17.2 release --token ${{ secrets.GH_TOKEN }} --draft --tags ${{ github.event.inputs.tag }}..${{ github.event.inputs.prev_tag }}" - - + - name: automerge + uses: "pascalgn/automerge-action@v0.14.3" + env: + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + PULL_REQUEST: "${{ steps.cpr.outputs.pull-request-number }}" \ No newline at end of file diff --git a/.github/workflows/sync-to-develop.yml b/.github/workflows/sync-to-develop.yml new file mode 100644 index 0000000000..93407111cf --- /dev/null +++ b/.github/workflows/sync-to-develop.yml @@ -0,0 +1,23 @@ +name: 'Sync changes back to develop branch from master' + +on: + # Triggered manually + workflow_dispatch: + # Triggered by release-nocodb.yml + workflow_call: +jobs: + close-issues: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v1 + + - name: Merge from master to develop + uses: robotology/gh-action-nightly-merge@v1.3.1 + with: + stable_branch: 'master' + development_branch: 'develop' + allow_ff: true + allow_forks: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file