on: push: branches-ignore: - build/* pull_request: jobs: deploy_on_hosted: runs-on: [ubuntu-latest, hetzner-access] steps: - uses: ./actions/checkout@v3 - name: Set up Node.js uses: actions/setup-node@v3 with: node-version: "20" cache: "npm" cache-dependency-path: package-lock.json - name: install deps run: npm ci shell: bash - name: create generated dir run: mkdir -p ./assets/generated shell: bash - name: create dependencies run: npm run generate:licenses; npm run generate:images; npm run generate:charging-stations; npm run generate:service-worker; npm run download:editor-layer-index shell: bash - name: sync translations run: npm run generate:translations shell: bash - name: Prepare build run: npm run generate:service-worker && ./scripts/prepare-build.sh shell: bash - name: Run tests run: | # This is the same as `npm run test`, but `vitest` doesn't want to run within npm :shrug: export NODE_OPTIONS="--max-old-space-size=8192" npm run clean:tests npm run generate:doctests 2>&1 | grep -v "No doctests found in" vitest --run test && npm run clean:tests shell: bash - name: Build files run: npm run build - name: Zipping dist file run: | mv dist /tmp/${{ github.ref_name }} cd /tmp zip ${{ github.ref_name }}.zip -r ${{ github.ref_name }}/* cd - - name: uploading file run: scp /tmp/${{ github.ref_name }}.zip hetzner:/root/staging/ - name: cleanup files run: rm /tmp/${{ github.ref_name }}.zip && rm -rf /tmp/${{ github.ref_name }}/ - name: unzipping remote file run: ssh hetzner "cd /root/staging && rm -rf ${{ github.ref_name }} && unzip ${{ github.ref_name }}.zip && rm -rf /root/public/${{ github.ref_name }} && mv /root/staging/${{ github.ref_name }}/ /root/public/ && rm ${{ github.ref_name }}.zip" - name: Comment on the PR run: | PR_NUMBER=$(echo ${{ github.event.pull_request.number || github.event.issue.number }}) if [[ -n "$PR_NUMBER" ]] then echo "Found a pull request or issue number, will post to $PR_NUMBER ..." MSG=$(echo "Congratulations! This PR been successfully built and has been deployed. It is (temporarily) available on https://builds.mapcomplete.org/${PR_NUMBER}") BODY="{\"body\": \"$MSG\"}" # Token must have following permissions: issue > read and write curl -X POST "https://source.mapcomplete.org/api/v1/repos/${GITHUB_REPOSITORY}/issues/${PR_NUMBER}/comments" \ -H "Content-Type: application/json" \ -H "Authorization: token $FORGEJO_TOKEN" \ -d "$BODY" fi env: FORGEJO_TOKEN: ${{ secrets.FORGEJO_TOKEN }}