86 lines
3 KiB
YAML
86 lines
3 KiB
YAML
on:
|
|
push:
|
|
branches-ignore:
|
|
- build/*
|
|
pull_request:
|
|
|
|
jobs:
|
|
deploy_on_hosted:
|
|
runs-on: [ubuntu-latest, hetzner-access]
|
|
steps:
|
|
- uses: https://source.mapcomplete.org/actions/checkout@v4
|
|
|
|
- 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 }}
|
|
|
|
|