diff --git a/.github/workflows/comment-and-close.yml b/.github/workflows/comment-and-close.yml index 6aa782a0..a8ddd038 100644 --- a/.github/workflows/comment-and-close.yml +++ b/.github/workflows/comment-and-close.yml @@ -1,13 +1,12 @@ +name: comment-and-close + on: issues: types: [opened] jobs: comment-and-close: - runs-on: ubuntu-latest - steps: - - uses: vardevs/candc@v1 - with: - close-comment: 'If you would like to file a bug report or feature request, please refer to our issue tracker: https://jira.dhis2.org' - exempt-users: dhis2-bot,dependabot,kodiakhq - github-token: ${{secrets.DHIS2_BOT_GITHUB_TOKEN}} + uses: dhis2/workflows-platform/.github/workflows/comment-and-close.yml@v1 + if: '!contains(fromJson(''["dhis2-bot", "kodiakhq", "dependabot"]''), github.event.issue.sender.login)' + with: + issue_number: ${{ github.event.issue.number }} diff --git a/.github/workflows/deploy-pr.yml b/.github/workflows/deploy-pr.yml new file mode 100644 index 00000000..e9d6112b --- /dev/null +++ b/.github/workflows/deploy-pr.yml @@ -0,0 +1,39 @@ +name: deploy-pr + +on: + pull_request: + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref }} + cancel-in-progress: true + +jobs: + deploy: + runs-on: ubuntu-latest + if: '!github.event.pull_request.head.repo.fork' + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 20 + cache: yarn + - run: yarn install --frozen-lockfile + - run: yarn d2-app-scripts build --standalone + env: + NODE_OPTIONS: --openssl-legacy-provider + - id: netlify-deploy + uses: nwtgck/actions-netlify@v3 + timeout-minutes: 1 + with: + github-token: ${{ secrets.DHIS2_BOT_GITHUB_TOKEN }} + github-deployment-environment: netlify + github-deployment-description: PR Preview on Netlify + deploy-message: ${{ github.event.pull_request.title }} + enable-pull-request-comment: true + enable-commit-comment: true + enable-commit-status: true + alias: pr-${{ github.event.number }} + publish-dir: build/app + env: + NETLIFY_AUTH_TOKEN: ${{ secrets.DHIS2_BOT_NETLIFY_TOKEN }} + NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} diff --git a/.github/workflows/deploy-production.yml b/.github/workflows/deploy-production.yml new file mode 100644 index 00000000..9575c2ed --- /dev/null +++ b/.github/workflows/deploy-production.yml @@ -0,0 +1,17 @@ +name: deploy-production + +on: + push: + branches: + - master + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + deploy: + uses: dhis2/workflows-platform/.github/workflows/deploy-production.yml@v1 + secrets: inherit + with: + branch: master diff --git a/.github/workflows/dhis2-preview-pr.yml b/.github/workflows/dhis2-preview-pr.yml deleted file mode 100644 index 22150d6f..00000000 --- a/.github/workflows/dhis2-preview-pr.yml +++ /dev/null @@ -1,51 +0,0 @@ -name: 'dhis2: pr preview' - -# Requirements: -# -# - Org secrets: -# DHIS2_BOT_NETLIFY_TOKEN -# DHIS2_BOT_GITHUB_TOKEN -# - Repo secrets: -# NETLIFY_SITE_ID -# - Customize the 'jobs.build.steps.netlify-deploy.publish-dir' property - -on: - pull_request: - -concurrency: - group: ${{ github.workflow}}-${{ github.ref }} - cancel-in-progress: true - -jobs: - preview: - runs-on: ubuntu-latest - if: "!github.event.push.repository.fork && github.actor != 'dependabot[bot]'" - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 - with: - node-version: 12.x - - - uses: c-hive/gha-yarn-cache@v1 - - run: yarn install --frozen-lockfile - - - name: Build - run: yarn d2-app-scripts build --standalone - - - name: Deploy - id: netlify-deploy - uses: nwtgck/actions-netlify@v1.1 - timeout-minutes: 1 - with: - github-token: ${{ secrets.DHIS2_BOT_GITHUB_TOKEN }} - deploy-message: ${{ github.event.pull_request.title }} - enable-pull-request-comment: true - enable-commit-comment: false - alias: pr-${{ github.event.number }} - # customize according to project needs - publish-dir: 'build/app' - env: - # org secret - NETLIFY_AUTH_TOKEN: ${{ secrets.DHIS2_BOT_NETLIFY_TOKEN }} - # repo secret - NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} diff --git a/.github/workflows/dhis2-verify-app.yml b/.github/workflows/dhis2-verify-app.yml deleted file mode 100644 index de3ec799..00000000 --- a/.github/workflows/dhis2-verify-app.yml +++ /dev/null @@ -1,122 +0,0 @@ -name: 'dhis2: verify (app)' - -on: - push: - branches: - -env: - GIT_AUTHOR_NAME: '@dhis2-bot' - GIT_AUTHOR_EMAIL: 'apps@dhis2.org' - GIT_COMMITTER_NAME: '@dhis2-bot' - GIT_COMMITTER_EMAIL: 'apps@dhis2.org' - GH_TOKEN: ${{secrets.DHIS2_BOT_GITHUB_TOKEN}} - CI: true - D2_VERBOSE: true - -jobs: - install: - runs-on: ubuntu-latest - if: "!contains(github.event.head_commit.message, '[skip ci]')" - - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 - with: - node-version: 12.x - - - uses: actions/cache@v4 - id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) - with: - path: '**/node_modules' - key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} - - - name: Install - if: steps.yarn-cache.outputs.cache-hit != 'true' - run: yarn install --frozen-lockfile - - build: - runs-on: ubuntu-latest - needs: install - if: "!contains(github.event.head_commit.message, '[skip ci]')" - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 - with: - node-version: 12.x - - - uses: actions/cache@v4 - id: yarn-cache - with: - path: '**/node_modules' - key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} - - - name: Build - run: yarn build - - - uses: actions/upload-artifact@v4 - with: - name: app-build - path: | - **/build - !**/node_modules - retention-days: 1 - - lint: - runs-on: ubuntu-latest - needs: install - if: "!contains(github.event.head_commit.message, '[skip ci]')" - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 - with: - node-version: 12.x - - - uses: actions/cache@v4 - id: yarn-cache - with: - path: '**/node_modules' - key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} - - - name: Build - run: yarn build - - - name: Lint - run: yarn lint - - publish: - runs-on: ubuntu-latest - needs: [build, lint] - if: "!contains(github.event.head_commit.message, '[skip ci]')" - steps: - - uses: actions/checkout@v2 - with: - token: ${{env.GH_TOKEN}} - - - uses: actions/setup-node@v1 - with: - node-version: 12.x - - - uses: actions/download-artifact@v4 - with: - name: app-build - - - uses: dhis2/deploy-build@master - with: - build-dir: build/app - github-token: ${{ env.GH_TOKEN }} - - release: - runs-on: ubuntu-latest - needs: [publish] - if: "github.event_name == 'push' && !contains(github.event.head_commit.message, '[skip ci]')" - steps: - - uses: actions/checkout@v2 - with: - token: ${{env.GH_TOKEN}} - - - uses: actions/setup-node@v1 - with: - node-version: 12.x - - - name: Publish release to GitHub - run: npx @dhis2/cli-utils release diff --git a/.github/workflows/dhis2-verify-commits.yml b/.github/workflows/dhis2-verify-commits.yml deleted file mode 100644 index ae7831b5..00000000 --- a/.github/workflows/dhis2-verify-commits.yml +++ /dev/null @@ -1,32 +0,0 @@ -name: 'dhis2: verify (commits)' - -on: - pull_request: - types: ['opened', 'edited', 'reopened', 'synchronize'] - -jobs: - lint-pr-title: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: c-hive/gha-yarn-cache@v1 - - run: yarn install --frozen-lockfile - - id: commitlint - run: echo ::set-output name=config_path::$(node -e "process.stdout.write(require('@dhis2/cli-style').config.commitlint)") - - uses: JulienKode/pull-request-name-linter-action@v0.5.0 - with: - configuration-path: ${{ steps.commitlint.outputs.config_path }} - - lint-commits: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 0 - - uses: c-hive/gha-yarn-cache@v1 - - run: yarn install --frozen-lockfile - - id: commitlint - run: echo ::set-output name=config_path::$(node -e "process.stdout.write(require('@dhis2/cli-style').config.commitlint)") - - uses: wagoid/commitlint-github-action@v4 - with: - configFile: ${{ steps.commitlint.outputs.config_path }} diff --git a/.github/workflows/lint-pr-title.yml b/.github/workflows/lint-pr-title.yml new file mode 100644 index 00000000..eb59072b --- /dev/null +++ b/.github/workflows/lint-pr-title.yml @@ -0,0 +1,13 @@ +name: lint-pr-title + +on: + pull_request: + types: ['opened', 'edited', 'reopened', 'synchronize'] + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref }} + cancel-in-progress: true + +jobs: + lint-pr-title: + uses: dhis2/workflows-platform/.github/workflows/lint-pr-title.yml@v1 diff --git a/.github/workflows/test-and-release.yml b/.github/workflows/test-and-release.yml new file mode 100644 index 00000000..7fd10bae --- /dev/null +++ b/.github/workflows/test-and-release.yml @@ -0,0 +1,49 @@ +name: test-and-release + +on: push + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + # Cancel previous runs if not on a release branch + cancel-in-progress: ${{ !contains(fromJSON('["refs/heads/master", "refs/heads/main"]'), github.ref) }} + +jobs: + lint-commits: + uses: dhis2/workflows-platform/.github/workflows/lint-commits.yml@v1 + lint: + uses: dhis2/workflows-platform/.github/workflows/lint.yml@v1 + test: + uses: dhis2/workflows-platform/.github/workflows/test.yml@v1 + release: + needs: [lint-commits, lint, test] + runs-on: ubuntu-latest + # Skips forks and dependabot PRs + if: '!github.event.push.repository.fork' + env: + GIT_AUTHOR_NAME: '@dhis2-bot' + GIT_AUTHOR_EMAIL: apps@dhis2.org + GIT_COMMITTER_NAME: '@dhis2-bot' + GIT_COMMITTER_EMAIL: apps@dhis2.org + steps: + - uses: actions/checkout@v4 + with: + token: ${{ secrets.DHIS2_BOT_GITHUB_TOKEN }} + - uses: actions/setup-node@v4 + with: + node-version: 20 + cache: yarn + - run: yarn install --frozen-lockfile + - run: yarn d2-app-scripts build + env: + NODE_OPTIONS: --openssl-legacy-provider + - uses: dhis2/action-semantic-release@master + with: + publish-apphub: true + publish-github: true + apphub-channel: stable + github-token: ${{ secrets.DHIS2_BOT_GITHUB_TOKEN }} + apphub-token: ${{ secrets.DHIS2_BOT_APPHUB_TOKEN }} + - uses: dhis2/deploy-build@master + with: + build-dir: build/app + github-token: ${{ secrets.DHIS2_BOT_GITHUB_TOKEN }} diff --git a/cypress/integration/maintenance/index.js b/cypress/integration/maintenance/index.js index 025ea4d0..8962f08c 100644 --- a/cypress/integration/maintenance/index.js +++ b/cypress/integration/maintenance/index.js @@ -16,7 +16,7 @@ Before(() => { 'softDeletedDataValueRemoval', 'softDeletedEventRemoval', 'softDeletedEnrollmentRemoval', - 'softDeletedTrackedEntityInstanceRemoval', + 'softDeletedTrackedEntityRemoval', 'periodPruning', 'expiredInvitationsClear', 'sqlViewsDrop', diff --git a/src/i18n-keys.js b/src/i18n-keys.js index 1f547cd7..609a6a24 100644 --- a/src/i18n-keys.js +++ b/src/i18n-keys.js @@ -32,7 +32,7 @@ export const i18nKeys = { softDeletedEnrollmentRemoval: i18n.t( 'Permanently remove soft deleted enrollments' ), - softDeletedTrackedEntityInstanceRemoval: i18n.t( + softDeletedTrackedEntityRemoval: i18n.t( 'Permanently remove soft deleted tracked entity instances' ), periodPruning: i18n.t('Prune periods'), diff --git a/yarn.lock b/yarn.lock index df2a886f..296047fa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12109,10 +12109,10 @@ nano-time@1.0.0: dependencies: big-integer "^1.6.16" -nanoid@^3.1.20: - version "3.1.20" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" - integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== +nanoid@^3.3.6: + version "3.3.11" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" + integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== nanomatch@^1.2.9: version "1.2.13" @@ -12959,6 +12959,16 @@ perfy@^1.1.5: resolved "https://registry.yarnpkg.com/perfy/-/perfy-1.1.5.tgz#0d629f870a34a3eb1866d3db485d2b3faef29e4b" integrity sha512-/ieVBpMaPTJf83YTUl2TImsSwMEJ23qGP2w27pE6aX+NrB/ZRGqOnQZpl7J719yFwd+ebDiHguPNFeMSamyK7w== +picocolors@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" + integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== + +picocolors@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3: version "2.3.0" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" @@ -13701,22 +13711,21 @@ postcss@7.0.21: supports-color "^6.1.0" postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.35" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" - integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== + version "7.0.39" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" + integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== dependencies: - chalk "^2.4.2" + picocolors "^0.2.1" source-map "^0.6.1" - supports-color "^6.1.0" postcss@^8.1.0: - version "8.2.6" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.6.tgz#5d69a974543b45f87e464bc4c3e392a97d6be9fe" - integrity sha512-xpB8qYxgPuly166AGlpRjUdEYtmOWx2iCwGmrv4vqZL9YPVviDVPZPRXxnXr6xPZOdxQ9lp3ZBFCRgWJ7LE3Sg== + version "8.4.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== dependencies: - colorette "^1.2.1" - nanoid "^3.1.20" - source-map "^0.6.1" + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" prelude-ls@^1.2.1: version "1.2.1" @@ -15323,6 +15332,11 @@ source-map-explorer@^2.1.0: temp "^0.9.4" yargs "^16.2.0" +source-map-js@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a"