Skip to content
Snippets Groups Projects
Commit 49e9bc74 authored by Paul's avatar Paul :turtle:
Browse files

Merge branch 'add-ploh-domain' into split-into-domains

parents 49d2edf7 2e62f43d
No related branches found
No related tags found
1 merge request!2Split into domains
......@@ -6,16 +6,18 @@ before_script:
- apt-get install -y curl git libncurses-dev build-essential make gawk unzip wget
python2.7 file tar bzip2 tree ccache ecdsautils > /dev/null
- mkdir -p ccache
- mkdir -p logs
- PATH="/usr/lib/ccache:$PATH"
- git -C gluon fetch --tags
variables:
GIT_SUBMODULE_STRATEGY: recursive
FORCE_UNSAFE_CONFIGURE: '1'
CCACHE_DIR: $CI_PROJECT_DIR/ccache
CCACHE_MAXSIZE: 20G
CCACHE_MAXSIZE: 2G
stages:
- pre-build-tests
- build
- build-on-failure
- post build
- test
- prepare-deploy
......@@ -27,6 +29,9 @@ build-all:
tags:
- fast
image: registry.chaotikum.net/freifunk-luebeck/gluon-build:latest
retry:
max: 2
when: runner_system_failure
cache:
paths:
- ccache
......@@ -62,20 +67,79 @@ build-all:
GLUON_AUTOUPDATER_BRANCH: stable
GLUON_BRANCH: $GLUON_AUTOUPDATER_BRANCH
CCACHE_DIR: $CI_PROJECT_DIR/ccache
CCACHE_MAXSIZE: 20G
CCACHE_MAXSIZE: 2G
FORCE_UNSAFE_CONFIGURE: '1'
script:
- file $(which gcc)
- tree -L 3
- env | grep CI
- make -C gluon update
- 'make -C gluon -j $((($(nproc)+1) / 2)) GLUON_TARGET=$TARGET '
- make -C gluon -j $((($(nproc)+1) / 2)) GLUON_TARGET=$TARGET 2>&1 | tee "logs/build_${TARGET}.log"
- ccache -s
artifacts:
when: always
expire_in: 3 day
paths:
- gluon/output
- logs
build-all-verbose:
stage: build-on-failure
tags:
- fast
image: registry.chaotikum.net/freifunk-luebeck/gluon-build:latest
retry:
max: 2
when: runner_system_failure
cache:
paths:
- ccache
key: ${TARGET}
parallel:
matrix:
- TARGET:
- ar71xx-generic
- ar71xx-tiny
- ar71xx-nand
- ath79-generic
- brcm2708-bcm2708
- brcm2708-bcm2709
- ipq40xx-generic
- ipq806x-generic
- lantiq-xrx200
- lantiq-xway
- mpc85xx-generic
- mpc85xx-p1020
- ramips-mt7620
- ramips-mt7621
- ramips-mt76x8
- ramips-rt305x
- sunxi-cortexa7
- x86-generic
- x86-geode
- x86-legacy
- x86-64
variables:
GLUON_SITEDIR: ..
GLUON_DEPRECATED: 1
GLUON_AUTOUPDATER_ENABLED: 1
GLUON_AUTOUPDATER_BRANCH: stable
GLUON_BRANCH: $GLUON_AUTOUPDATER_BRANCH
CCACHE_DIR: $CI_PROJECT_DIR/ccache
CCACHE_MAXSIZE: 2G
FORCE_UNSAFE_CONFIGURE: '1'
script:
- file $(which gcc)
- tree -L 3
- env | grep CI
- make -C gluon update
- make -C gluon -j 1 V=sc GLUON_TARGET=$TARGET 2>&1 | tee "logs/build_${TARGET}.log"
| tail -c 100000
- ccache -s
artifacts:
expire_in: 3 day
paths:
- logs
when: on_failure
dependencies: []
test:images:
stage: test
needs:
......@@ -86,7 +150,6 @@ test:images:
- apt install -qq -y tree
script:
- ls gluon/output/images/sysupgrade/ | grep wdr3600
- ls gluon/output/images/sysupgrade/ | grep wr841
- ls gluon/output/images/sysupgrade/ | grep ubiquiti-unifi
- ls gluon/output/images/sysupgrade/ | grep nanostation-m2
- ls gluon/output/images/sysupgrade/ | grep wr1043n
......@@ -96,23 +159,6 @@ test:images:
expire_in: 3 day
paths:
- gluon/output
test:image-count:
stage: test
needs:
- build-all
allow_failure: true
before_script:
- apt update
- apt install -qq -y tree
script:
- N=$(ls gluon/output/images/sysupgrade/ | wc -l)
- echo $N
- '[ $N -ge 260 ]'
artifacts:
when: always
expire_in: 3 day
paths:
- gluon/output
test:image-names:
stage: test
needs:
......@@ -180,11 +226,11 @@ test:manifest-length:
stage: test-deploy
needs:
- generate manifest
allow_failure: true
before_script: []
script:
- bash scripts/ci/test_manifest_length.sh
artifacts:
expire_in: 3 day
when: always
paths:
- gluon/output
......@@ -200,11 +246,14 @@ test:manifest-signature:
- PUBKEY=$(echo $SIGNING_KEY | ecdsakeygen -p)
- ./gluon/contrib/sigtest.sh $PUBKEY gluon/output/images/sysupgrade/experimental.manifest
artifacts:
expire_in: 3 day
when: always
paths:
- gluon/output
upload:
stage: deploy
needs:
- generate manifest
rules:
- if: $DEPLOY_USER && $DEPLOY_HOST
before_script:
......@@ -222,21 +271,18 @@ upload:
- cd gluon
- mv output $TAG
- ln -s ./$TAG ./latest
- rsync -rvhl ./$TAG ${DEPLOY_USER}@${DEPLOY_HOST}:data/
- rsync -rvhl ./latest ${DEPLOY_USER}@${DEPLOY_HOST}:data/
pages:
- rsync -rvhl ./$TAG ${DEPLOY_USER}@${DEPLOY_HOST}:${DEPLOY_DIR}/
- rsync -rvhl ./latest ${DEPLOY_USER}@${DEPLOY_HOST}:${DEPLOY_DIR}/
upload-package-registry:
stage: deploy
rules:
- if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
needs:
- generate manifest
script:
- TAG=${CI_COMMIT_REF_SLUG}_$(date +%F_%H-%M-%S)
- mkdir -p public
- mv gluon/output/* public
- find public/ -type d -exec sh -c 'tree -I "index.html" -H "." -T "$TAG" -s -h
--si -L 2 "{}" > "{}/index.html" ' \;
artifacts:
when: always
expire_in: 3 day
paths:
- public
- TAG=$([[ $CI_COMMIT_TAG ]] && echo $CI_COMMIT_TAG || echo $CI_COMMIT_BRANCH)_$(date
+%F_%H-%M-%S)
- tree -L 3
- tar -cvzf firmware.tar.gz gluon/output
- 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file firmware.tar.gz "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/ffhl-firmware/$TAG/ffhl-firmware.tar.gz"'
rules:
- if: $GITLAB_CI
......@@ -22,9 +22,6 @@
wifi24 = {
channel = 5,
-- disables 802.11b rates
supported_rates = {6000, 9000, 12000, 18000, 24000, 36000, 48000, 54000},
basic_rate = {6000, 9000, 18000, 36000, 54000},
ap = {
ssid = 'nord.freifunk.net',
},
......@@ -58,106 +55,46 @@
},
timezone = 'CET-1CEST,M3.5.0,M10.5.0/3', -- Europe/Berlin
ntp_servers = {
'fd42:eb49:c0b5:4242::fd03',
'fd42:eb49:c0b5:4242::fd04',
},
regdom = 'DE',
fastd_mesh_vpn = {
methods = {'salsa2012+umac'},
enabled = true,
mesh_vpn = {
mtu = 1280,
groups = {
backbone = {
limit = 1,
peers = {
ffnord_vpn0 = {
key = 'b89353ecefc044e793063b00e1d2a36a0a6758eb67d54cede8a4a2fb5365adcf',
remotes = {'ipv4 "0.gw.freifunknord.de" port 10050', 'ipv6 "0.gw.freifunknord.de" port 10050'},
},
ffnord_vpn1 = {
key = 'd23dd91241b741e7d18a19eeecaef46066b0c5777d134e338535bb6788ba8497',
remotes = {'ipv4 "1.gw.freifunknord.de" port 10050', 'ipv6 "1.gw.freifunknord.de" port 10050'},
},
ffnord_vpn2 = {
key = '8f5017ef742e0b6c4d8babbc5497e786990d23eb4b1fc51e790b06d08c46df54',
remotes = {'ipv4 "2.gw.freifunknord.de" port 10050', 'ipv6 "2.gw.freifunknord.de" port 10050'},
},
ffnord_vpn3 = {
key = 'f141ebfd40352df6862404d8ea2d4cdfdd56e4e586f6e711cf68f20522d0e075',
remotes = {'ipv4 "3.gw.freifunknord.de" port 10050', 'ipv6 "3.gw.freifunknord.de" port 10050'},
},
ffnord_vpn4 = {
key = '2bd5bb1f45f76b0c43d3ba145b162d4d08960b12f968e5a7abeb2b3400b64d05',
remotes = {'ipv4 "4.gw.freifunknord.de" port 10050', 'ipv6 "4.gw.freifunknord.de" port 10050'},
},
ffnord_vpn5 = {
key = '766c2380bb1118ccd7132ad0588a65f20242c9d1995869c1509b0e91f1fc79e0',
remotes = {'ipv4 "5.gw.freifunknord.de" port 10050', 'ipv6 "5.gw.freifunknord.de" port 10050'},
},
ffnord_vpn6 = {
key = '734913882d3592603d1c704d4e4133c12606192ebd1a49429e7d980a2ca121d0',
remotes = {'ipv4 "6.gw.freifunknord.de" port 10050', 'ipv6 "6.gw.freifunknord.de" port 10050'},
},
ffnord_vpn7 = {
key = '6c35f366d430a6637cf5696fee2806b70ea4a3b3dfba2cb0e576b3ef4a77a7be',
remotes = {'ipv4 "7.gw.freifunknord.de" port 10050', 'ipv6 "7.gw.freifunknord.de" port 10050'},
},
ffnord_vpn8 = {
key = '9d6bf926071340171cc8a692c9a858e482a4368856dcb63e095e393049b8d6fd',
remotes = {'ipv4 "8.gw.freifunknord.de" port 10050', 'ipv6 "8.gw.freifunknord.de" port 10050'},
},
ffnord_vpn9 = {
key = '3b09482cee91e08839c1bfcca5a1135583c03817b1e8ff52019902faef7e2f28',
remotes = {'ipv4 "9.gw.freifunknord.de" port 10050', 'ipv6 "9.gw.freifunknord.de" port 10050'},
},
ffnord_vpn10 = {
key = 'a326197364109a3a7bfc9344e19da9277734989bc06d930617e00206feb6a065',
remotes = {'ipv4 "10.gw.freifunknord.de" port 10050', 'ipv6 "10.gw.freifunknord.de" port 10050'},
},
ffnord_vpn11 = {
key = '9ab17517450a52d1eac521a6ae4e696cf7861c3e55cd63acf0a94e85cb3e5172',
remotes = {'ipv4 "11.gw.freifunknord.de" port 10050', 'ipv6 "11.gw.freifunknord.de" port 10050'},
},
ffnord_vpn12 = {
key = 'bec4e95be17044ead0e1926b58cafc0d2cca9df3eb7a836234e886f3b51679f9',
remotes = {'ipv4 "12.gw.freifunknord.de" port 10050', 'ipv6 "12.gw.freifunknord.de" port 10050'},
},
ffnord_vpn13 = {
key = '1eeabc7534bed144c30b6d62f9cefd2e0b54607ac4c2ac1343c5153bceb01ab1',
remotes = {'ipv4 "13.gw.freifunknord.de" port 10050', 'ipv6 "13.gw.freifunknord.de" port 10050'},
},
ffnord_vpn14 = {
key = '5c7930f1fc37ceca6c921c13bed8010e4bada7e422aa69ad195c24f92c12f679',
remotes = {'ipv4 "14.gw.freifunknord.de" port 10050', 'ipv6 "14.gw.freifunknord.de" port 10050'},
},
ffnord_vpn15 = {
key = 'ae5bfc856ffc779bd766619aa24242890539495bdac03bf28405e41ba087b9a8',
remotes = {'ipv4 "15.gw.freifunknord.de" port 10050', 'ipv6 "15.gw.freifunknord.de" port 10050'},
},
ffnord_vpn16 = {
key = 'edaf40898203e24ce9af0e8180ec14d73bf69b13545f8b8b8deca79206cedbc0',
remotes = {'ipv4 "16.gw.freifunknord.de" port 10050', 'ipv6 "16.gw.freifunknord.de" port 10050'},
},
ffnord_vpn17 = {
key = '9b676bf167957780dbb8d810634f62ef6ce2ebc9e4a0283664883ff5fdbf86cc',
remotes = {'ipv4 "17.gw.freifunknord.de" port 10050', 'ipv6 "17.gw.freifunknord.de" port 10050'},
},
ffnord_vpn18 = {
key = '032b8c38201b07c8545e3679247ccbb581578b4dce8b7b57fde0285e34970ddf',
remotes = {'ipv4 "18.gw.freifunknord.de" port 10050', 'ipv6 "18.gw.freifunknord.de" port 10050'},
},
ffnord_vpn19 = {
key = '1e712fed9f190808c94298b20b1266536937c6b1d38bf229bf9f86a46cb41094',
remotes = {'ipv4 "19.gw.freifunknord.de" port 10050', 'ipv6 "19.gw.freifunknord.de" port 10050'},
},
ffnord_vpn20 = {
key = 'e12ab3ae5955e1380cd18908edd18e006ba11fa471335ed7b2d2776401da58b0',
remotes = {'ipv4 "20.gw.freifunknord.de" port 10050', 'ipv6 "20.gw.freifunknord.de" port 10050'},
fastd = {
methods = {'null', 'salsa2012+umac'},
groups = {
backbone = {
limit = 1,
peers = {
ffnord_vpn0 = {
key = 'b89353ecefc044e793063b00e1d2a36a0a6758eb67d54cede8a4a2fb5365adcf',
remotes = {'ipv4 "0.gw.freifunknord.de" port 10050', 'ipv6 "0.gw.freifunknord.de" port 10050'},
},
ffnord_vpn1 = {
key = 'd23dd91241b741e7d18a19eeecaef46066b0c5777d134e338535bb6788ba8497',
remotes = {'ipv4 "1.gw.freifunknord.de" port 10050', 'ipv6 "1.gw.freifunknord.de" port 10050'},
},
ffnord_vpn2 = {
key = '8f5017ef742e0b6c4d8babbc5497e786990d23eb4b1fc51e790b06d08c46df54',
remotes = {'ipv4 "2.gw.freifunknord.de" port 10050', 'ipv6 "2.gw.freifunknord.de" port 10050'},
},
ffnord_vpn3 = {
key = 'f141ebfd40352df6862404d8ea2d4cdfdd56e4e586f6e711cf68f20522d0e075',
remotes = {'ipv4 "3.gw.freifunknord.de" port 10050', 'ipv6 "3.gw.freifunknord.de" port 10050'},
},
ffnord_vpn4 = {
key = '2bd5bb1f45f76b0c43d3ba145b162d4d08960b12f968e5a7abeb2b3400b64d05',
remotes = {'ipv4 "4.gw.freifunknord.de" port 10050', 'ipv6 "4.gw.freifunknord.de" port 10050'},
},
ffnord_vpn5 = {
key = '766c2380bb1118ccd7132ad0588a65f20242c9d1995869c1509b0e91f1fc79e0',
remotes = {'ipv4 "5.gw.freifunknord.de" port 10050', 'ipv6 "5.gw.freifunknord.de" port 10050'},
},
ffnord_vpn6 = {
key = '734913882d3592603d1c704d4e4133c12606192ebd1a49429e7d980a2ca121d0',
remotes = {'ipv4 "6.gw.freifunknord.de" port 10050', 'ipv6 "6.gw.freifunknord.de" port 10050'},
},
ffnord_vpn20 = {
key = 'e12ab3ae5955e1380cd18908edd18e006ba11fa471335ed7b2d2776401da58b0',
remotes = {'ipv4 "20.gw.freifunknord.de" port 10050', 'ipv6 "20.gw.freifunknord.de" port 10050'},
},
},
},
},
......
......@@ -52,7 +52,9 @@
mesh_vpn = {
mtu = 1312,
fastd = {
methods = {'null', 'salsa2012+umac'},
groups = {
backbone = {
limit = 1,
......
......@@ -15,6 +15,18 @@ msgstr ""
"Welcome the the setup wizard of your new Freifunk Nord node. "
"Please fill out and then transmit the following form."
msgid "gluon-config-mode:domain"
msgstr "Domain"
msgid "gluon-config-mode:domain-select"
msgstr ""
"Here you have the possibility of selecting the mesh domain in which your node "
"is placed. Please keep in mind that your router only connects with the nodes "
"of the selected domain"
msgid "gluon-config-mode:pubkey"
msgstr ""
"<p>This is the public key for your Freifunk node. "
......
#!/bin/bash
set -ex
export GLUON_RELEASE="0.15.2"
export GLUON_RELEASE="2020.2.3-4"
export GLUON_SITEDIR=..
export FORCE_UNSAFE_CONFIGURE=1
export GLUON_AUTOUPDATER_ENABLED=1
......@@ -13,15 +13,16 @@ else
fi
THREADS=$((($(nproc)+1) / 2))
THREADS=$((($(nproc)+1) ))
# FLAGS="-j 1 V=sc"
FLAGS="-j $THREADS"
# FLAGS="-j $(nproc)"
# FLAGS="-j $THREADS"
FLAGS="-j $(nproc)"
make -C gluon update
for target in $TARGETS; do
echo $FLAGS GLUON_TARGET=$target
echo "$FLAGS" GLUON_TARGET="$target"
#make $FLAGS GLUON_TARGET=$target clean
make -C gluon $FLAGS GLUON_TARGET="$target"
done
......
......@@ -3,6 +3,7 @@
import yaml
import subprocess
import os
import copy
ARTIFACTS_EXPIRE="3 day"
......@@ -10,24 +11,32 @@ DOCKER_BUILD_IMAGE="registry.chaotikum.net/freifunk-luebeck/gluon-build:latest"
MAKE_FLAGS=["--silent", "-C", "gluon", "GLUON_SITEDIR=.."]
def get_available_targets():
res = subprocess.run(["make", *MAKE_FLAGS, "list-targets"], stdout=subprocess.PIPE)
return res.stdout.decode('utf-8').strip().split("\n")
BEFORE_SCRIPT = [
"apt-get update > /dev/null",
"apt-get install -y curl git libncurses-dev build-essential make gawk unzip wget python2.7 file tar bzip2 tree ccache ecdsautils > /dev/null",
"mkdir -p ccache",
"mkdir -p logs",
'PATH="/usr/lib/ccache:$PATH"',
'git -C gluon fetch --tags',
]
VARIABLES = {
"CCACHE_DIR": "$CI_PROJECT_DIR/ccache",
"CCACHE_MAXSIZE": "20G",
"CCACHE_MAXSIZE": "2G",
"FORCE_UNSAFE_CONFIGURE": "1",
}
def get_available_targets():
res = subprocess.run(["make", *MAKE_FLAGS, "list-targets"], stdout=subprocess.PIPE)
if res.returncode != 0:
print("failed to get gluon targets")
exit(1)
return res.stdout.decode('utf-8').strip().split("\n")
# the main ci config
ci = {
"image": "debian:buster",
"default": {
......@@ -42,6 +51,7 @@ ci = {
"stages": [
"pre-build-tests",
"build",
"build-on-failure",
"post build",
"test",
"prepare-deploy",
......@@ -56,6 +66,10 @@ ci['build-all'] = {
"needs": [],
"tags": ["fast"],
"image": DOCKER_BUILD_IMAGE,
"retry": {
"max": 2,
"when": "runner_system_failure"
},
"cache": {
"paths": ['ccache'],
"key": "${TARGET}",
......@@ -78,17 +92,48 @@ ci['build-all'] = {
"tree -L 3",
"env | grep CI",
"make -C gluon update",
"make -C gluon -j $((($(nproc)+1) / 2)) GLUON_TARGET=$TARGET ",
'make -C gluon -j $((($(nproc)+1) / 2)) GLUON_TARGET=$TARGET 2>&1 | tee "logs/build_${TARGET}.log"',
"ccache -s"
],
"artifacts": {
"when": "always",
# don't add "when: always".
# it will always skip the build-on-failure stage
"expire_in": ARTIFACTS_EXPIRE,
"paths": ["gluon/output"]
"paths": [
"gluon/output",
"logs"
]
}
}
# ci['foo'] = dict()
# ci['foo']['stage'] = "build-on-failure"
# ci['foo']['when'] = "on_failure"
# ci['foo']['script'] = ["true"]
# build again if pipeline failed but with verbose flags
ci['build-all-verbose'] = copy.deepcopy(ci['build-all'])
del ci['build-all-verbose']['needs']
ci['build-all-verbose']['when'] = "on_failure"
ci['build-all-verbose']['stage'] = "build-on-failure"
ci['build-all-verbose']['dependencies'] = []
# only save logs as artifacts
ci['build-all-verbose']['artifacts']['paths'] = ["logs"]
ci['build-all-verbose']['script'] = [
"file $(which gcc)",
"tree -L 3",
"env | grep CI",
"make -C gluon update",
'make -C gluon -j 1 V=sc GLUON_TARGET=$TARGET 2>&1 | tee "logs/build_${TARGET}.log" | tail -c 100000',
"ccache -s"
]
# test image names
ci['test:images'] = {
"stage": "test",
"needs": ["build-all"],
......@@ -100,7 +145,6 @@ ci['test:images'] = {
"script": [
# these are the most used devices in luebeck
"ls gluon/output/images/sysupgrade/ | grep wdr3600",
"ls gluon/output/images/sysupgrade/ | grep wr841",
"ls gluon/output/images/sysupgrade/ | grep ubiquiti-unifi",
"ls gluon/output/images/sysupgrade/ | grep nanostation-m2",
"ls gluon/output/images/sysupgrade/ | grep wr1043n",
......@@ -113,27 +157,6 @@ ci['test:images'] = {
}
}
ci['test:image-count'] = {
"stage": "test",
"needs": ["build-all"],
"allow_failure": True,
"before_script": [
"apt update",
"apt install -qq -y tree"
],
"script": [
# check the number of images
"N=$(ls gluon/output/images/sysupgrade/ | wc -l)",
"echo $N",
"[ $N -ge 260 ]"
],
"artifacts": {
"when": "always",
"expire_in": ARTIFACTS_EXPIRE,
"paths": ["gluon/output"]
}
}
ci['test:image-names'] = {
"stage": "test",
"needs": ["build-all"],
......@@ -209,13 +232,13 @@ ci['sign manifest'] = {
ci['test:manifest-length'] = {
"stage": "test-deploy",
"needs": ["generate manifest"],
"allow_failure": True,
"before_script": [],
"script": [
# check the number of images
"bash scripts/ci/test_manifest_length.sh"
],
"artifacts": {
"expire_in": ARTIFACTS_EXPIRE,
"when": "always",
"paths": ["gluon/output"]
}
......@@ -235,6 +258,7 @@ ci['test:manifest-signature'] = {
"./gluon/contrib/sigtest.sh $PUBKEY gluon/output/images/sysupgrade/experimental.manifest",
],
"artifacts": {
"expire_in": ARTIFACTS_EXPIRE,
"when": "always",
"paths": ["gluon/output"]
}
......@@ -242,9 +266,12 @@ ci['test:manifest-signature'] = {
# Upload Jobs
##############
ci['upload'] = {
"stage": "deploy",
# "needs": ["test:images", "test:image-count", "manifest"],
"needs": ["generate manifest"],
"rules": [
{'if': '$DEPLOY_USER && $DEPLOY_HOST'}
],
......@@ -263,36 +290,25 @@ ci['upload'] = {
"cd gluon",
"mv output $TAG",
'ln -s ./$TAG ./latest',
'rsync -rvhl ./$TAG ${DEPLOY_USER}@${DEPLOY_HOST}:data/',
'rsync -rvhl ./latest ${DEPLOY_USER}@${DEPLOY_HOST}:data/',
'rsync -rvhl ./$TAG ${DEPLOY_USER}@${DEPLOY_HOST}:${DEPLOY_DIR}/',
'rsync -rvhl ./latest ${DEPLOY_USER}@${DEPLOY_HOST}:${DEPLOY_DIR}/',
],
}
ci['pages'] = {
"stage": "deploy",
# "needs": ["test:images", "test:image-count", "manifest"],
"rules": [
{'if': '$DEPLOY_USER && $DEPLOY_HOST'}
],
"script": [
"TAG=${CI_COMMIT_REF_SLUG}_$(date +%F_%H-%M-%S)",
'mkdir -p public',
"mv gluon/output/* public",
'find public/ -type d -exec sh -c \'tree -I "index.html" -H "." -T "$TAG" -s -h --si -L 2 "{}" > "{}/index.html" \' \;',
ci['upload-package-registry'] = {
'stage': "deploy",
"needs": ["generate manifest"],
'script': [
"TAG=$([[ $CI_COMMIT_TAG ]] && echo $CI_COMMIT_TAG || echo $CI_COMMIT_BRANCH)_$(date +%F_%H-%M-%S)",
"tree -L 3",
'tar -cvzf firmware.tar.gz gluon/output',
'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file firmware.tar.gz "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/ffhl-firmware/$TAG/ffhl-firmware.tar.gz"',
],
"artifacts": {
"when": "always",
"expire_in": ARTIFACTS_EXPIRE,
"paths": ["public"]
},
# only upload if this is the default branch
"rules": [
{"if": "$CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH"}
]
'rules': [{
'if': '$GITLAB_CI'
}]
}
print(yaml.dump(ci, sort_keys=False,))
# print(get_available_targets())
......@@ -72,7 +72,6 @@
-- Options specific to routing protocols (optional)
mesh = {
vxlan = false,
filter_membership_reports = true,
-- Options specific to the batman-adv routing protocol (optional)
batman_adv = {
......@@ -86,7 +85,7 @@
mesh_vpn = {
enabled = true,
mtu = 1280,
pubkey_privacy = false,
bandwidth_limit = {
enabled = false,
egress = 2000,
......
......@@ -3,11 +3,28 @@
# Always call `make` from the command line with the desired release version!
# otherwise this is generated:
#DEFAULT_GLUON_RELEASE := 2020.2.1
DEFAULT_GLUON_RELEASE := 2020.2.3.2~exp$(shell date '+%y%m%d')
# h RELEASE=2020.2.3-3~exp
EXP_RELEASE=2020.2.3-4~exp
DEFAULT_GLUON_RELEASE := $(EXP_RELEASE)$(shell date '+%y%m%d')
# use date provided by CI-environment if provided
ifdef CI_PIPELINE_CREATED_AT
DEFAULT_GLUON_RELEASE := $(EXP_RELEASE)$(shell date --date "${CI_PIPELINE_CREATED_AT}" '+%Y%m%d')
endif
# gitlab-ci: use commit tag, if avalable as version number
# also remove the **v** from version number, because it breaks the autoupdater
ifdef CI_COMMIT_TAG
GLUON_RELEASE ?= $(subst v,,$(CI_COMMIT_TAG))
endif
# Allow overriding the release number from the command line
GLUON_RELEASE ?= $(DEFAULT_GLUON_RELEASE)
GLUON_PRIORITY ?= 0
GLUON_DEPRECATED ?= upgrade
GLUON_BRANCH ?= stable
......@@ -24,9 +41,12 @@ GLUON_WLAN_MESH ?= 11s
GLUON_LANGS ?= en de
GLUON_MULTIDOMAIN=1
# for feature packs see https://github.com/freifunk-gluon/gluon/blob/v2018.2.x/package/features
GLUON_FEATURES := \
config-mode-geo-location-osm \
config-mode-domain-select \
web-private-wifi \
ebtables-filter-multicast \
ebtables-filter-ra-dhcp \
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment