diff --git a/.github/development-flow.png b/.github/development-flow.png new file mode 100644 index 0000000..bb69452 Binary files /dev/null and b/.github/development-flow.png differ diff --git a/.github/workflows/approve-merge.yaml b/.github/workflows/approve-merge.yaml new file mode 100644 index 0000000..44dd4f5 --- /dev/null +++ b/.github/workflows/approve-merge.yaml @@ -0,0 +1,25 @@ +name: Merge Release PR + +on: + pull_request_review: + types: [submitted] + +jobs: + pr_approved: + if: ${{ github.event.review.state == 'approved' && github.event.pull_request.base.ref == 'master' && github.event.pull_request.head.ref == 'next' }} + runs-on: ubuntu-latest + steps: + - name: Clone git repo + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Merge PR + run: | + git checkout master + git merge --ff origin/next + git push -u origin master + - uses: benc-uk/workflow-dispatch@v1 + with: + workflow: release.yaml + ref: master diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 06cd5ce..51524ee 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -1,4 +1,4 @@ -name: build +name: Build on: push diff --git a/.github/workflows/pr-lint.yml b/.github/workflows/pr-lint.yml index 1e6aa17..462366a 100644 --- a/.github/workflows/pr-lint.yml +++ b/.github/workflows/pr-lint.yml @@ -11,7 +11,7 @@ permissions: pull-requests: read jobs: - main: + lint: name: pr-lint runs-on: ubuntu-latest steps: diff --git a/.github/workflows/release-pr.yaml b/.github/workflows/release-pr.yaml new file mode 100644 index 0000000..c956960 --- /dev/null +++ b/.github/workflows/release-pr.yaml @@ -0,0 +1,46 @@ +name: Release PR + +on: + push: + branches: + - next + +permissions: + contents: read + +jobs: + release_pr: + permissions: + issues: write + pull-requests: write + contents: write + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - uses: actions/setup-node@v4 + with: + node-version-file: '.nvmrc' + + - name: Install Dependencies + run: npm clean-install + + - name: Generate Changes + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + set -ex + echo '# Release Changes' > changes.md + npx semantic-release@22.0.12 -d -p '@semantic-release/release-notes-generator' -b next | grep -v semantic-release | tee -a changes.md + printf '\n---\n\n### Approve this PR to release above packages!' >> changes.md + - name: Create PR + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + set -ex + export PR_NUMBER=$(gh pr list -B master -H next --json number | jq -r '.[0].number') + if [[ "$(git rev-parse origin/master)" == "$(git rev-parse origin/next)" ]]; then exit 0; fi + if [[ "$PR_NUMBER" == "null" ]]; then gh pr create -B master -H next -t "chore: release" -F changes.md; fi + if [[ "$PR_NUMBER" != "null" ]]; then gh pr edit $PR_NUMBER -F changes.md; fi diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index ab841f2..0ac0cde 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -4,6 +4,7 @@ on: push: branches: - master + workflow_dispatch: permissions: contents: read @@ -17,6 +18,8 @@ jobs: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 + with: + ref: master - uses: docker/login-action@v3 with: @@ -61,3 +64,10 @@ jobs: - run: npx semantic-release@22.0.12 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - uses: benc-uk/workflow-dispatch@v1 + with: + workflow: upgrade-services.yaml + ref: master + repo: restorecommerce/charts + token: "${{ secrets.CHARTS_WORKFLOW_TOKEN }}" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..55f5d14 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,23 @@ +# Contributing Guidelines + +## Commit Messages + +This repository uses [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) and [commitlint](https://commitlint.js.org) +to standardize the commit messages. + +## Development Flow + +This repository follows a gitflow-style development. + +The `main`/`master` branch is locked, and only allows pull requests. +Any change in the `main`/`master` branch gets automatically released via [semantic-release](https://github.com/semantic-release/semantic-release). + +The `next` branch gets merged into `main`/`master` on an unscheduled basis. + +Any change to the repository requires a new branch from the `next` branch, which then gets merged back into it with a pull request. + +The pull request title must follow the same rules as commit messages and it gets linted. + +The following diagram visualizes the development flow: + +![development flow](./.github/development-flow.png) diff --git a/Dockerfile b/Dockerfile index cb2a178..32471a5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -35,7 +35,7 @@ COPY package-lock.json package-lock.json COPY --chown=node:node . $APP_HOME COPY --chown=node:node --from=build $APP_HOME/lib $APP_HOME/lib -EXPOSE 50051 +EXPOSE 389 USER node diff --git a/cfg/config.json b/cfg/config.json index cc04273..15d6c99 100644 --- a/cfg/config.json +++ b/cfg/config.json @@ -14,7 +14,7 @@ }, "ldap": { "host": "0.0.0.0", - "port": 1389, + "port": 389, "tls": { "certificate": "", "key": "" diff --git a/cfg/config_production.json b/cfg/config_production.json new file mode 100644 index 0000000..76fece2 --- /dev/null +++ b/cfg/config_production.json @@ -0,0 +1,23 @@ +{ + "logger": { + "elasticsearch": { + "level": "error", + "clientOpts": { + "node": "http://elasticsearch:9200" + }, + "dataStream": true, + "source": "ldap-srv" + }, + "console": { + "handleExceptions": false, + "level": "info", + "colorize": true, + "prettyPrint": true + } + }, + "client": { + "user": { + "address": "identity-srv:50051" + } + } +} diff --git a/cfg/config_test.json b/cfg/config_test.json index 37148b3..618ca36 100644 --- a/cfg/config_test.json +++ b/cfg/config_test.json @@ -8,6 +8,7 @@ } }, "ldap": { - "host": "127.0.0.1" + "host": "127.0.0.1", + "port": 1389 } }