diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml index 9afade0..eb1e5a6 100644 --- a/.gitea/workflows/build.yaml +++ b/.gitea/workflows/build.yaml @@ -1,5 +1,5 @@ name: Build -run-name: Running Lint Check +run-name: Running Lint Check and Licence checker on Pull Request on: [pull_request] jobs: diff --git a/.gitea/workflows/development-test.yaml b/.gitea/workflows/development-test.yaml deleted file mode 100644 index e85f700..0000000 --- a/.gitea/workflows/development-test.yaml +++ /dev/null @@ -1,226 +0,0 @@ -name: Test -run-name: Building and testing development branch -on: - push: - branches: - - development - -jobs: - Build-production-and-ng-test: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: 18 - - - name: Write .npmrc file - run: | - touch client/.npmrc - echo '${{ secrets.NPMRC}}' > client/.npmrc - - - name: Install Chrome for Angular tests - run: | - apt-get update - wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb - apt install -y ./google-chrome*.deb; - export CHROME_BIN=/usr/bin/google-chrome - - - name: Write cypress credentials - run: echo "$CYPRESS_CREDS" > ./client/cypress.env.json - shell: bash - env: - CYPRESS_CREDS: ${{ secrets.CYPRESS_CREDS }} - - - name: Install dependencies - run: npm ci - - - name: Check audit - # Audit should fail and stop the CI if critical vulnerability found - run: | - npm audit --audit-level=critical --omit=dev - cd ./sas - npm audit --audit-level=critical --omit=dev - cd ../client - npm audit --audit-level=critical --omit=dev - - - name: Angular Tests - run: | - cd client - npm test -- --no-watch --no-progress --browsers=ChromeHeadlessCI - - - name: Angular Production Build - run: | - cd client - npm run postinstall - npm run build - - Build-and-test-development: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: 18 - - - name: Write .npmrc file - run: | - touch client/.npmrc - echo '${{ secrets.NPMRC}}' > client/.npmrc - - - run: apt-get update - - run: wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb - - run: apt install -y ./google-chrome*.deb; - - run: export CHROME_BIN=/usr/bin/google-chrome - - run: apt-get update -y - - run: apt-get -y install libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 libxtst6 xauth xvfb - - run: apt -y install jq - - - name: Write cypress credentials - run: echo "$CYPRESS_CREDS" > ./client/cypress.env.json - shell: bash - env: - CYPRESS_CREDS: ${{ secrets.CYPRESS_CREDS }} - - - name: Install dependencies - run: npm ci - - # Install pm2 and prepare SASJS server - - run: npm i -g pm2 - - run: curl -L https://github.com/sasjs/server/releases/latest/download/linux.zip > linux.zip - - run: unzip linux.zip - - run: touch .env - - run: echo RUN_TIMES=js >> .env - - run: echo NODE_PATH=node >> .env - - run: echo CORS=enable >> .env - - run: echo WHITELIST=http://localhost:4200 >> .env - - run: cat .env - - run: pm2 start api-linux --wait-ready - - - name: Deploy mocked services - run: | - cd ./sas/mocks/sasjs - npm install -g @sasjs/cli - npm install -g replace-in-files-cli - sasjs cbd -t server-ci - # sasjs request services/admin/makedata -t server-ci -d ./deploy/makeData4GL.json -c ./deploy/requestConfig.json -o ./output.json - - - name: Install ZIP - run: | - apt-get update - apt-get install zip - - - name: Prepare and run frontend and cypress - run: | - cd ./client - mv ./cypress.env.example.json ./cypress.env.json - replace-in-files --regex='"username".*' --replacement='"username":"'${{ secrets.CYPRESS_USERNAME_SASJS }}'",' ./cypress.env.json - replace-in-files --regex='"password".*' --replacement='"password":"'${{ secrets.CYPRESS_PWD_SASJS }}'" ' ./cypress.env.json - cat ./cypress.env.json - npm run postinstall - # Prepare index.html to SASJS local - replace-in-files --regex='serverUrl=".*?"' --replacement='serverUrl="http://localhost:5000"' ./src/index.html - replace-in-files --regex='appLoc=".*?"' --replacement='appLoc="/Public/app/devtest"' ./src/index.html - replace-in-files --regex='serverType=".*?"' --replacement='serverType="SASJS"' ./src/index.html - replace-in-files --regex='"hosturl".*' --replacement='hosturl:"http://localhost:4200",' ./cypress.config.ts - cat ./cypress.config.ts - # Start frontend and run cypress - npm start & npx wait-on http://localhost:4200 && npx cypress run --browser chrome --spec "cypress/e2e/liveness.cy.ts,cypress/e2e/editor.cy.ts,cypress/e2e/excel.cy.ts,cypress/e2e/filtering.cy.ts,cypress/e2e/licensing.cy.ts" - - - name: Zip Cypress videos - if: always() - run: | - zip -r cypress-videos ./client/cypress/videos - - - name: Cypress videos artifacts - uses: actions/upload-artifact@v3 - with: - name: cypress-videos.zip - path: cypress-videos.zip - - Build-and-test-development-latest-adapter: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: 18 - - - name: Write .npmrc file - run: echo "$NPMRC" > client/.npmrc - shell: bash - env: - NPMRC: ${{ secrets.NPMRC}} - - - run: apt-get update - - run: wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb - - run: apt install -y ./google-chrome*.deb; - - run: export CHROME_BIN=/usr/bin/google-chrome - - run: apt-get update -y - - run: apt-get -y install libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 libxtst6 xauth xvfb - - run: apt -y install jq - - - name: Write cypress credentials - run: echo "$CYPRESS_CREDS" > ./client/cypress.env.json - shell: bash - env: - CYPRESS_CREDS: ${{ secrets.CYPRESS_CREDS }} - - - name: Install dependencies - run: npm ci - - # Install pm2 and prepare SASJS server - - run: npm i -g pm2 - - run: curl -L https://github.com/sasjs/server/releases/latest/download/linux.zip > linux.zip - - run: unzip linux.zip - - run: touch .env - - run: echo RUN_TIMES=js >> .env - - run: echo NODE_PATH=node >> .env - - run: echo CORS=enable >> .env - - run: echo WHITELIST=http://localhost:4200 >> .env - - run: cat .env - - run: pm2 start api-linux --wait-ready - - - name: Deploy mocked services - run: | - cd ./sas/mocks/sasjs - npm install -g @sasjs/cli - npm install -g replace-in-files-cli - sasjs cbd -t server-ci - - - name: Install ZIP - run: | - apt-get update - apt-get install zip - - - name: Prepare and run frontend and cypress - run: | - cd ./client - mv ./cypress.env.example.json ./cypress.env.json - replace-in-files --regex='"username".*' --replacement='"username":"'${{ secrets.CYPRESS_USERNAME_SASJS }}'",' ./cypress.env.json - replace-in-files --regex='"password".*' --replacement='"password":"'${{ secrets.CYPRESS_PWD_SASJS }}'" ' ./cypress.env.json - cat ./cypress.env.json - npm run postinstall - npm install @sasjs/adapter@latest - # Prepare index.html to SASJS local - replace-in-files --regex='serverUrl=".*?"' --replacement='serverUrl="http://localhost:5000"' ./src/index.html - replace-in-files --regex='appLoc=".*?"' --replacement='appLoc="/Public/app/devtest"' ./src/index.html - replace-in-files --regex='serverType=".*?"' --replacement='serverType="SASJS"' ./src/index.html - replace-in-files --regex='"hosturl".*' --replacement='hosturl:"http://localhost:4200",' ./cypress.config.ts - cat ./cypress.config.ts - # Start frontend and run cypress - npm start & npx wait-on http://localhost:4200 && npx cypress run --browser chrome --spec "cypress/e2e/liveness.cy.ts,cypress/e2e/editor.cy.ts,cypress/e2e/excel.cy.ts,cypress/e2e/filtering.cy.ts,cypress/e2e/licensing.cy.ts" - - - name: Zip Cypress videos - if: always() - run: | - zip -r cypress-videos ./client/cypress/videos - - - name: Cypress videos artifacts - uses: actions/upload-artifact@v3 - with: - name: cypress-videos-latest-adapter.zip - path: cypress-videos.zip \ No newline at end of file diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml index 4733490..a4bf988 100644 --- a/.gitea/workflows/release.yaml +++ b/.gitea/workflows/release.yaml @@ -1,13 +1,150 @@ name: Release -run-name: Releasing DC +run-name: Testing and Releasing DC on: push: branches: - main jobs: + Build-production-and-ng-test: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 18 + + - name: Write .npmrc file + run: | + touch client/.npmrc + echo '${{ secrets.NPMRC}}' > client/.npmrc + + - name: Install Chrome for Angular tests + run: | + apt-get update + wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb + apt install -y ./google-chrome*.deb; + export CHROME_BIN=/usr/bin/google-chrome + + - name: Write cypress credentials + run: echo "$CYPRESS_CREDS" > ./client/cypress.env.json + shell: bash + env: + CYPRESS_CREDS: ${{ secrets.CYPRESS_CREDS }} + + - name: Install dependencies + run: npm ci + + - name: Check audit + # Audit should fail and stop the CI if critical vulnerability found + run: | + npm audit --audit-level=critical --omit=dev + cd ./sas + npm audit --audit-level=critical --omit=dev + cd ../client + npm audit --audit-level=critical --omit=dev + + - name: Angular Tests + run: | + cd client + npm test -- --no-watch --no-progress --browsers=ChromeHeadlessCI + + - name: Angular Production Build + run: | + cd client + npm run postinstall + npm run build + + Build-and-test-development: + runs-on: ubuntu-latest + needs: Build-production-and-ng-test + + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 18 + + - name: Write .npmrc file + run: | + touch client/.npmrc + echo '${{ secrets.NPMRC}}' > client/.npmrc + + - run: apt-get update + - run: wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb + - run: apt install -y ./google-chrome*.deb; + - run: export CHROME_BIN=/usr/bin/google-chrome + - run: apt-get update -y + - run: apt-get -y install libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 libxtst6 xauth xvfb + - run: apt -y install jq + + - name: Write cypress credentials + run: echo "$CYPRESS_CREDS" > ./client/cypress.env.json + shell: bash + env: + CYPRESS_CREDS: ${{ secrets.CYPRESS_CREDS }} + + - name: Install dependencies + run: npm ci + + # Install pm2 and prepare SASJS server + - run: npm i -g pm2 + - run: curl -L https://github.com/sasjs/server/releases/latest/download/linux.zip > linux.zip + - run: unzip linux.zip + - run: touch .env + - run: echo RUN_TIMES=js >> .env + - run: echo NODE_PATH=node >> .env + - run: echo CORS=enable >> .env + - run: echo WHITELIST=http://localhost:4200 >> .env + - run: cat .env + - run: pm2 start api-linux --wait-ready + + - name: Deploy mocked services + run: | + cd ./sas/mocks/sasjs + npm install -g @sasjs/cli + npm install -g replace-in-files-cli + sasjs cbd -t server-ci + # sasjs request services/admin/makedata -t server-ci -d ./deploy/makeData4GL.json -c ./deploy/requestConfig.json -o ./output.json + + - name: Install ZIP + run: | + apt-get update + apt-get install zip + + - name: Prepare and run frontend and cypress + run: | + cd ./client + mv ./cypress.env.example.json ./cypress.env.json + replace-in-files --regex='"username".*' --replacement='"username":"'${{ secrets.CYPRESS_USERNAME_SASJS }}'",' ./cypress.env.json + replace-in-files --regex='"password".*' --replacement='"password":"'${{ secrets.CYPRESS_PWD_SASJS }}'" ' ./cypress.env.json + cat ./cypress.env.json + npm run postinstall + # Prepare index.html to SASJS local + replace-in-files --regex='serverUrl=".*?"' --replacement='serverUrl="http://localhost:5000"' ./src/index.html + replace-in-files --regex='appLoc=".*?"' --replacement='appLoc="/Public/app/devtest"' ./src/index.html + replace-in-files --regex='serverType=".*?"' --replacement='serverType="SASJS"' ./src/index.html + replace-in-files --regex='"hosturl".*' --replacement='hosturl:"http://localhost:4200",' ./cypress.config.ts + cat ./cypress.config.ts + # Start frontend and run cypress + npm start & npx wait-on http://localhost:4200 && npx cypress run --browser chrome --spec "cypress/e2e/liveness.cy.ts,cypress/e2e/editor.cy.ts,cypress/e2e/excel.cy.ts,cypress/e2e/filtering.cy.ts,cypress/e2e/licensing.cy.ts" + + - name: Zip Cypress videos + if: always() + run: | + zip -r cypress-videos ./client/cypress/videos + + - name: Cypress videos artifacts + uses: actions/upload-artifact@v3 + with: + name: cypress-videos.zip + path: cypress-videos.zip + release: runs-on: ubuntu-latest + needs: [Build-production-and-ng-test, Build-and-test-development] + steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3