diff --git a/.github/workflows/run-test-and-publish.yaml b/.github/workflows/run-test-and-publish.yaml new file mode 100644 index 0000000..68b8090 --- /dev/null +++ b/.github/workflows/run-test-and-publish.yaml @@ -0,0 +1,117 @@ +name: Run test and publish + +on: + pull_request: + types: [closed] + branches: + - develop + - main + +jobs: + unit_tests: + if: github.event.pull_request.merged == true # Condition + permissions: + contents: write + actions: read + checks: write + + name: Unit Test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - uses: actions/setup-node@v4 + with: + node-version: 18 + cache: npm + + - name: Install dependencies + run: npm ci + + - name: Run Unit Tests + run: npm run test + + - name: Unit Test Report + uses: dorny/test-reporter@v1 + if: success() || failure() # run this step even if previous step failed + with: + name: Unit Tests Reporter # Name of the check run which will be created + path: report/unit.xml # Path to test results + reporter: jest-junit # Format of test results + fail-on-error: 'true' # Set action as failed if test report contains any failed test + + e2e_tests: + name: E2e Test For Core package + needs: unit_tests + permissions: + contents: write + actions: read + checks: write + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - uses: actions/setup-node@v4 + with: + node-version: 18 + cache: npm + + - name: Install dependencies + run: npm ci + + - name: Build test + run: npx lerna run build:test --scope=@mbc-cqrs-severless/core + + - name: Run e2e Tests + run: npx lerna run test:e2e --scope=@mbc-cqrs-severless/core + + - uses: actions/upload-artifact@v4 + name: 'upload artfact' + if: success() || failure() + with: + name: my-artifacts + path: ./packages/core/test/scripts/*.out.txt + + - name: E2E Test Report + uses: dorny/test-reporter@v1 + if: success() || failure() # run this step even if previous step failed + with: + name: E2E Core Tests Reporter # Name of the check run which will be created + path: report/e2e-core.xml # Path to test results + reporter: jest-junit # Format of test results + fail-on-error: 'true' # Set action as failed if test report contains any failed test + + publish: + if: github.event.pull_request.merged == true # Condition + name: Publish + needs: e2e_tests + runs-on: ubuntu-latest + permissions: + contents: write + actions: read + checks: write + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - uses: actions/setup-node@v4 + with: + node-version: 18 + cache: npm + - name: Authenticate with npm + run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc + + - name: 'Version and publish' + run: | + git config user.name "${{ github.actor }}" + git config user.email "${{ github.actor}}@users.noreply.github.com" + + if [[ "${{ github.base_ref }}" == "development" ]]; then + npx lerna version prepatch --force-publish --no-changelog --yes + else + npx lerna version prepatch --conventional-graduate --no-changelog --yes + fi + + npx lerna publish from-git --yes diff --git a/.github/workflows/deploy-to-github-pages.yaml b/.github/workflows/run-test.yaml similarity index 87% rename from .github/workflows/deploy-to-github-pages.yaml rename to .github/workflows/run-test.yaml index 03f163a..571425f 100644 --- a/.github/workflows/deploy-to-github-pages.yaml +++ b/.github/workflows/run-test.yaml @@ -2,14 +2,18 @@ name: Run test on: pull_request: + types: [opened, synchronize] branches: - develop - push: - branches: - - develop + - main + jobs: unit_tests: name: Unit Test + permissions: + contents: read + actions: read + checks: write runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -31,13 +35,17 @@ jobs: if: success() || failure() # run this step even if previous step failed with: name: Unit Tests Reporter # Name of the check run which will be created - path: report/*.xml # Path to test results + path: report/unit.xml # Path to test results reporter: jest-junit # Format of test results fail-on-error: 'true' # Set action as failed if test report contains any failed test e2e_tests: name: E2e Test For Core package - # needs: unit_tests + permissions: + contents: read + actions: read + checks: write + needs: unit_tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v4