# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions name: SASjs Build and Server Tests on: pull_request: jobs: test: runs-on: ubuntu-22.04 strategy: matrix: node-version: [lts/hydrogen] steps: - uses: actions/checkout@v2 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v2 with: node-version: ${{ matrix.node-version }} # 2. Restore npm cache manually - name: Restore npm cache uses: actions/cache@v3 id: npm-cache with: path: ~/.npm key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-node- - name: Install Dependencies run: npm ci - name: Install Rimraf run: npm i rimraf - name: Build Package run: npm run package:lib env: CI: true - name: Write VPN Files run: | echo "$CA_CRT" > .github/vpn/ca.crt echo "$USER_CRT" > .github/vpn/user.crt echo "$USER_KEY" > .github/vpn/user.key echo "$TLS_KEY" > .github/vpn/tls.key shell: bash env: CA_CRT: ${{ secrets.CA_CRT}} USER_CRT: ${{ secrets.USER_CRT }} USER_KEY: ${{ secrets.USER_KEY }} TLS_KEY: ${{ secrets.TLS_KEY }} - name: Chmod VPN files run: | chmod 600 .github/vpn/ca.crt .github/vpn/user.crt .github/vpn/user.key .github/vpn/tls.key - name: Install Open VPN run: | sudo apt install apt-transport-https sudo wget https://swupdate.openvpn.net/repos/openvpn-repo-pkg-key.pub sudo apt-key add openvpn-repo-pkg-key.pub sudo wget -O /etc/apt/sources.list.d/openvpn3.list https://swupdate.openvpn.net/community/openvpn3/repos/openvpn3-jammy.list sudo apt update sudo apt install openvpn3=17~betaUb22042+jammy - name: Start Open VPN 3 run: openvpn3 session-start --config .github/vpn/config.ovpn - name: install pm2 run: npm i -g pm2 - name: Fetch SASJS server run: curl ${{ secrets.SASJS_SERVER_URL }}/SASjsApi/info - name: Deploy sasjs-tests run: | sudo apt install jq cd sasjs-tests jq '.dependencies."@sasjs/adapter" |= "latest"' ./package.json > ./package.temp && mv ./package.temp ./package.json npm i jq '.sasJsConfig.serverUrl |= "${{ secrets.SASJS_SERVER_URL }}"' ./public/config.json > ./public/config.temp && mv ./public/config.temp ./public/config.json jq '.sasJsConfig.serverType |= "SASJS"' ./public/config.json > ./public/config.temp && mv ./public/config.temp ./public/config.json jq '.userName |= "${{ secrets.SASJS_USERNAME }}"' ./public/config.json > ./public/config.temp && mv ./public/config.temp ./public/config.json jq '.password |= "${{ secrets.SASJS_PASSWORD }}"' ./public/config.json > ./public/config.temp && mv ./public/config.temp ./public/config.json cat ./public/config.json npm run update:adapter pm2 start --name sasjs-test npm -- start - name: Sleep for 10 seconds run: sleep 10s shell: bash - name: Run cypress on sasjs run: | jq '.env.sasjsTestsUrl |= "http://localhost:3000"' ./cypress.json > ./cypress.temp && mv ./cypress.temp ./cypress.json jq '.env.username |= "${{ secrets.SASJS_USERNAME }}"' ./cypress.json > ./cypress.temp && mv ./cypress.temp ./cypress.json jq '.env.password |= "${{ secrets.SASJS_PASSWORD }}"' ./cypress.json > ./cypress.temp && mv ./cypress.temp ./cypress.json cat ./cypress.json echo "SASJS_USERNAME=${{ secrets.SASJS_USERNAME }}" sh ./sasjs-tests/sasjs-cypress-run.sh ${{ secrets.MATRIX_TOKEN }} https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}