forked from MapComplete/MapComplete
78 lines
2.5 KiB
YAML
78 lines
2.5 KiB
YAML
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 ${{ github.ref_name }}
|
|
zip ${{ github.ref_name }}.zip -r ${{ github.ref_name }}/*
|
|
|
|
- name: uploading file
|
|
run: scp ${{ github.ref_name }}.zip hetzner:/root/staging/
|
|
|
|
- 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: Extract PR number
|
|
run: echo "PR_NUMBER=$(echo $FORGEJO_REF_NAME | cut -d'/' -f3)" >> $FORGEJO_ENV
|
|
|
|
- name: add comment to PR
|
|
if: env.PR_NUMBER != ''
|
|
run: |
|
|
curl -X POST "https://source.mapcomplete.org/api/v1/repos/${FORGEJO_REPOSITORY}/issues/${PR_NUMBER}/comments" \
|
|
-H "Content-Type: application/json" \
|
|
-H "Authorization: token $FORGEJO_TOKEN" \
|
|
-d '{"body": "This PR has been deployed and is (temporarily) available on https://builds.mapcomplete.org/${PR_NUMBER}"}'
|
|
env:
|
|
FORGEJO_TOKEN: ${{ secrets.FORGEJO_TOKEN }}
|
|
|
|
|