mirror of
https://github.com/armbian/actions.git
synced 2026-01-06 10:36:19 -08:00
123 lines
4.9 KiB
YAML
123 lines
4.9 KiB
YAML
name: "Make YAML file"
|
|
author: "Igor Pecovnik"
|
|
description: "Make YAML for redirector"
|
|
inputs:
|
|
variant:
|
|
description: packages, images, ...
|
|
required: true
|
|
port:
|
|
description: Repository
|
|
required: false
|
|
geodb:
|
|
description: geodb
|
|
required: true
|
|
asndb:
|
|
description: asndb
|
|
required: true
|
|
dl_map:
|
|
description: dl_map
|
|
required: true
|
|
certDataPath:
|
|
description: certDataPath
|
|
required: false
|
|
reloadKey:
|
|
description: reloadKey
|
|
required: true
|
|
failoverserver:
|
|
description: failover
|
|
required: true
|
|
netbox:
|
|
description: NetboxID
|
|
required: true
|
|
netboxapi:
|
|
description: NetboxAPI
|
|
required: true
|
|
|
|
runs:
|
|
using: "composite"
|
|
steps:
|
|
|
|
- shell: bash
|
|
run: |
|
|
|
|
rm -rf *.yaml
|
|
|
|
FILENAME=${{ inputs.variant }}
|
|
PORT=${{ inputs.port }}
|
|
CERTPATH=${{ inputs.certDataPath }}
|
|
|
|
cat <<- EOF > dlrouter-${FILENAME}.yaml
|
|
#
|
|
# ${FILENAME}.armbian.com
|
|
#
|
|
geodb: ${{ inputs.geodb }}
|
|
asndb: ${{ inputs.asndb }}
|
|
dl_map: ${{ inputs.dl_map }}
|
|
EOF
|
|
[[ -n ${CERTPATH} ]] && echo "certDataPath: ${CERTPATH}" >> dlrouter-${FILENAME}.yaml
|
|
[[ -n ${PORT} ]] && echo "bind: ':${PORT}'" >> dlrouter-${FILENAME}.yaml
|
|
[[ ${FILENAME} == *images* ]] && echo "enableProfiler: true" >> dlrouter-${FILENAME}.yaml
|
|
cat <<- EOF >> dlrouter-${FILENAME}.yaml
|
|
|
|
# Reload authorization key
|
|
reloadKey: ${{ inputs.reloadKey }}
|
|
|
|
# LRU Cache Size (in items)
|
|
cacheSize: 2048
|
|
|
|
# Documentation: https://github.com/armbian/armbian-router
|
|
|
|
specialExtensions:
|
|
- boot-sms.img.xz: -boot-sms
|
|
- boot-boe.img.xz: -boot-boe
|
|
- boot-csot.img.xz: -boot-csot
|
|
- rootfs.img.xz: -rootfs
|
|
- img.qcow2: -qcow2
|
|
- img.qcow2.xz: -qcow2
|
|
- boot.bin.xz: -boot
|
|
- u-boot.rom.xz: -u-boot-rom
|
|
- hyperv.zip: -hyperv
|
|
|
|
servers:
|
|
EOF
|
|
echo "<pre>" >> $GITHUB_STEP_SUMMARY
|
|
for server_id in ${{ inputs.failoverserver }}; do
|
|
unset REGION LATITUDE LONGITUDE PHYSICAL TIME_ZONE UPLOAD
|
|
# read virtual machine
|
|
COMMAND=$(curl -sH "Authorization: Token ${{ inputs.netbox }}" -H "Accept: application/json; indent=4" "${{ inputs.netboxapi }}/virtualization/virtual-machines/${server_id}/" | jq)
|
|
IFS=',' read -r SITE_ID NAME DL_PATH_DEBS DL_PATH_IMAGES WEIGHT <<<$(echo $COMMAND | jq '.site.id,.name,.custom_fields["download_path_debs"],.custom_fields["download_path_images"],.custom_fields["weight"]' | sed 's/$/,/' | xargs | sed 's/, /,/g')
|
|
# site data
|
|
COMMAND=$(curl -sH "Authorization: Token ${{ inputs.netbox }}" -H "Accept: application/json; indent=4" "${{ inputs.netboxapi }}/dcim/sites/${SITE_ID}/" | jq)
|
|
IFS=',' read REGION LATITUDE LONGITUDE PHYSICAL TIME_ZONE UPLOAD DOWNLOAD_EXCLUDE <<<$(echo $COMMAND | jq -r '.region.name,.latitude,.longitude,.physical_address,.time_zone,.custom_fields["upload_speed"],.custom_fields["download_exclude"]' | sed 's/$/,/' | xargs | sed 's/, /,/g')
|
|
echo "" >> dlrouter-${FILENAME}.yaml
|
|
|
|
[[ -n $REGION ]] && echo " # $TIME_ZONE - $UPLOAD Mbit/s" >> dlrouter-${FILENAME}.yaml
|
|
DL_PATH="${FILENAME}"
|
|
[[ "${FILENAME}" == rsync ]] && DL_PATH=""
|
|
[[ "${FILENAME}" == debs ]] && DL_PATH="apt"
|
|
[[ "${FILENAME}" == debs-beta ]] && DL_PATH="beta"
|
|
[[ "${FILENAME}" == images ]] && DL_PATH="dl"
|
|
[[ "$DL_PATH_DEBS" != null && "${FILENAME}" == debs ]] && DL_PATH="${DL_PATH_DEBS}"
|
|
[[ "$DL_PATH_IMAGES" != null && "${FILENAME}" == images ]] && DL_PATH="${DL_PATH_IMAGES}"
|
|
|
|
echo " - server: $NAME/$DL_PATH/" >> "dlrouter-${FILENAME}.yaml"
|
|
if [[ "$DOWNLOAD_EXCLUDE" != null && -n "$DOWNLOAD_EXCLUDE" ]]; then
|
|
echo " rules:" >> dlrouter-${FILENAME}.yaml
|
|
echo " - field: location.country.iso_code" >> dlrouter-${FILENAME}.yaml
|
|
echo " not_in:" >> dlrouter-${FILENAME}.yaml
|
|
echo " - ${DOWNLOAD_EXCLUDE}" >> dlrouter-${FILENAME}.yaml
|
|
fi
|
|
[[ "$LATITUDE" != null && -n "$LATITUDE" ]] && echo " latitude: $LATITUDE" >> dlrouter-${FILENAME}.yaml
|
|
[[ "$LONGITUDE" != null && -n "$LONGITUDE" ]] && echo " longitude: $LONGITUDE" >> dlrouter-${FILENAME}.yaml
|
|
[[ "$WEIGHT" != null ]] && echo " weight: $WEIGHT" >> dlrouter-${FILENAME}.yaml
|
|
done
|
|
cat dlrouter-${FILENAME}.yaml >> $GITHUB_STEP_SUMMARY
|
|
echo "</pre>" >> $GITHUB_STEP_SUMMARY
|
|
|
|
- name: Upload JSON
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: config-${{ inputs.variant }}
|
|
path: ${{ github.workspace }}/*.yaml
|
|
if-no-files-found: ignore
|