diff --git a/.github/workflows/commands-handler.yml b/.github/workflows/commands-handler.yml new file mode 100644 index 00000000..fb5ba7f1 --- /dev/null +++ b/.github/workflows/commands-handler.yml @@ -0,0 +1,43 @@ +name: Commands processor + +on: + issue_comment: + types: [created] +defaults: + run: + shell: bash + +jobs: + process: + name: Process command + if: github.event.issue.pull_request && endsWith(github.repository, '-private') != true + runs-on: ubuntu-latest + steps: + - name: Check referred user + id: user-check + env: + CLEN_BOT: ${{ secrets.CLEN_BOT }} + run: echo "expected-user=${{ startsWith(github.event.comment.body, format('@{0} ', env.CLEN_BOT)) }}" >> $GITHUB_OUTPUT + - name: Regular comment + if: steps.user-check.outputs.expected-user != 'true' + run: echo -e "\033[38;2;19;181;255mThis is regular commit which should be ignored.\033[0m" + - name: Checkout repository + if: steps.user-check.outputs.expected-user == 'true' + uses: actions/checkout@v3 + with: + token: ${{ secrets.GH_TOKEN }} + - name: Checkout release actions + if: steps.user-check.outputs.expected-user == 'true' + uses: actions/checkout@v3 + with: + repository: pubnub/client-engineering-deployment-tools + ref: v1 + token: ${{ secrets.GH_TOKEN }} + path: .github/.release/actions + - name: Process changelog entries + if: steps.user-check.outputs.expected-user == 'true' + uses: ./.github/.release/actions/actions/commands + with: + token: ${{ secrets.GH_TOKEN }} + listener: ${{ secrets.CLEN_BOT }} + jira-api-key: ${{ secrets.JIRA_API_KEY }} \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..b8e829d6 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,52 @@ +name: Automated product release + +on: + pull_request: + branches: [master] + types: [closed] + +jobs: + check-release: + name: Check release required + runs-on: ubuntu-latest + if: github.event.pull_request.merged && endsWith(github.repository, '-private') != true + outputs: + release: ${{ steps.check.outputs.ready }} + steps: + - name: Checkout actions + uses: actions/checkout@v3 + with: + repository: pubnub/client-engineering-deployment-tools + ref: v1 + token: ${{ secrets.GH_TOKEN }} + path: .github/.release/actions + - id: check + name: Check pre-release completed + uses: ./.github/.release/actions/actions/checks/release + with: + token: ${{ secrets.GH_TOKEN }} + publish: + name: Publish package + runs-on: ubuntu-latest + needs: check-release + if: needs.check-release.outputs.release == 'true' + steps: + - name: Checkout repository + uses: actions/checkout@v3 + with: + # This should be the same as the one specified for on.pull_request.branches + ref: master + - name: Checkout actions + uses: actions/checkout@v3 + with: + repository: pubnub/client-engineering-deployment-tools + ref: v1 + token: ${{ secrets.GH_TOKEN }} + path: .github/.release/actions + - name: Publish to NPM + uses: ./.github/.release/actions/actions/services/npm + with: + token: ${{ secrets.GH_TOKEN }} + npm-token: ${{ secrets.NPM_TOKEN }} + check-ownership: false + actions: publish \ No newline at end of file diff --git a/.github/workflows/release/versions.json b/.github/workflows/release/versions.json new file mode 100644 index 00000000..984136ac --- /dev/null +++ b/.github/workflows/release/versions.json @@ -0,0 +1,10 @@ +{ + ".pubnub.yml": [{ "pattern": "^version: (v?(\\d+\\.?){2,}([a-zA-Z0-9-]+(\\.?\\d+)?)?)$" }], + "lib/package.json": [ + { + "pattern": "^\\s{2,}\"version\": \"(v?(\\d+\\.?){2,}([a-zA-Z0-9-]+(\\.?\\d+)?)?)\",$", + "clearedPrefix": true, + "clearedSuffix": false + } + ] +}