mirror of https://github.com/arendst/Tasmota.git
Merge pull request #6256 from eddyhub/development
Container to build all or custom builds with one run.
This commit is contained in:
commit
cb1d99bd82
|
@ -0,0 +1,24 @@
|
|||
FROM python:2
|
||||
|
||||
LABEL author="Eduard Angold"
|
||||
|
||||
# Install platformio. To be able to build tasmota <=v6.6.0 (and later)
|
||||
# we have to use version 3.6.7 of platformio.
|
||||
RUN pip install --upgrade pip &&\
|
||||
pip install -U platformio==3.6.7
|
||||
|
||||
# Init project
|
||||
COPY init_pio_tasmota /init_pio_tasmota
|
||||
|
||||
# Install project dependencies using a init project.
|
||||
RUN cd /init_pio_tasmota &&\
|
||||
pio run &&\
|
||||
cd ../ &&\
|
||||
rm -fr init_pio_tasmota &&\
|
||||
cp -r /root/.platformio / &&\
|
||||
chmod -R 777 /.platformio
|
||||
|
||||
COPY entrypoint.sh /entrypoint.sh
|
||||
|
||||
ENTRYPOINT ["/bin/bash", "/entrypoint.sh"]
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
# Docker container for tasmota builds
|
||||
This Container will setup a proper build environment for [Sonoff-Tasmota](https://github.com/arendst/Sonoff-Tasmota)
|
||||
|
||||
## Create container
|
||||
`docker build -t mytasmota:latest .`
|
||||
|
||||
## Use a ready container from docker hub
|
||||
Use instead of the container `mytasmota:latest` the published container `eddyhub/docker-tasmota:latest` from docker hub.
|
||||
|
||||
## Build all development binaries
|
||||
`git clone https://github.com/arendst/Sonoff-Tasmota.git`
|
||||
`docker run -ti --rm -v $(pwd)/Sonoff-Tasmota:/tasmota -u $UID:$GID mytasmota:latest`
|
||||
|
||||
## Build a specific binary with custom options
|
||||
Checkout Sonoff-Tasmota: `git clone https://github.com/arendst/Sonoff-Tasmota.git`
|
||||
Mount the source as volume in `/tasmota`. **Prefix** any parameter available in `Sonoff-Tasmota/sonoff/my_user_config.h` with `TASMOTA_` as a environment variable for the container. **Also don't forget to escape what needs to be escaped in your shell.** **Strings** should be in **double quotes**. My config example:
|
||||
`docker run -ti --rm -v $(pwd)/Sonoff-Tasmota:/tasmota -e TASMOTA_STA_SSID1='"my-wifi"' -e TASMOTA_STA_PASS1='"my-wifi-password"' -e TASMOTA_MQTT_HOST='my-mqtt-host' -e TASMOTA_MQTT_USER='"my-mqtt-user"' -e TASMOTA_MQTT_PASS='"my-mqtt-password"' -e TASMOTA_WEB_PASSWORD='"my-web-password"' -u $UID:$GID mytasmota:latest --environment sonoff-DE
|
||||
|
||||
Now you should have the file Sonoff-Tasmota/.pioenvs/sonoff-DE/firmware.bin which can be flashed on your device.
|
||||
|
||||
## Build a specific version of tasmota
|
||||
Checkout out the needed version before using the build instructions above:
|
||||
- `git clone https://github.com/arendst/Sonoff-Tasmota.git`
|
||||
- `git -C Sonoff-Tasmota checkout v6.6.0`
|
||||
Build it:
|
||||
- `docker run -ti --rm -v $(pwd)/Sonoff-Tasmota:/tasmota -u $UID:$GID mytasmota:latest`
|
|
@ -0,0 +1,35 @@
|
|||
# configure build via environment
|
||||
#!/bin/bash
|
||||
|
||||
TASMOTA_VOLUME='/tasmota'
|
||||
USER_CONFIG_OVERRIDE="${TASMOTA_VOLUME}/sonoff/user_config_override.h"
|
||||
|
||||
if [ -d $TASMOTA_VOLUME ]; then
|
||||
cd $TASMOTA_VOLUME
|
||||
if [ -n "$(env | grep ^TASMOTA_)" ]; then
|
||||
echo "Removing $USER_CONFIG_OVERRIDE and creating a new one."
|
||||
rm "$USER_CONFIG_OVERRIDE"
|
||||
#export PLATFORMIO_BUILD_FLAGS='-DUSE_CONFIG_OVERRIDE'
|
||||
sed -i 's/^; *-DUSE_CONFIG_OVERRIDE/ -DUSE_CONFIG_OVERRIDE/' platformio.ini
|
||||
echo '#ifndef _USER_CONFIG_OVERRIDE_H_' >> $USER_CONFIG_OVERRIDE
|
||||
echo '#define _USER_CONFIG_OVERRIDE_H_' >> $USER_CONFIG_OVERRIDE
|
||||
echo '#warning **** user_config_override.h: Using Settings from this File ****' >> $USER_CONFIG_OVERRIDE
|
||||
echo '#undef CFG_HOLDER' >> $USER_CONFIG_OVERRIDE
|
||||
echo '#define CFG_HOLDER 1' >> $USER_CONFIG_OVERRIDE
|
||||
for i in $(env | grep ^TASMOTA_); do
|
||||
config=${i#TASMOTA_}
|
||||
key=$(echo $config | cut -d '=' -f 1)
|
||||
value=$(echo $config | cut -d '=' -f 2)
|
||||
echo "#undef ${key}" >> $USER_CONFIG_OVERRIDE
|
||||
echo "#define ${key} ${value}" >> $USER_CONFIG_OVERRIDE
|
||||
done
|
||||
echo '#endif' >> $USER_CONFIG_OVERRIDE
|
||||
fi
|
||||
echo "Compiling..."
|
||||
#pio run -t clean
|
||||
pio run $@
|
||||
echo "Everything done you find your builds in .pioenvs/<build-flavour>/firmware.bin"
|
||||
else
|
||||
echo ">>> NO TASMOTA VOLUME MOUNTED --> EXITING"
|
||||
exit 0;
|
||||
fi
|
|
@ -0,0 +1,30 @@
|
|||
[env:core_2_3_0]
|
||||
; *** Esp8266 core for Arduino version 2.3.0
|
||||
platform = espressif8266@1.5.0
|
||||
framework = arduino
|
||||
board = esp01_1m
|
||||
|
||||
[env:core_2_4_2]
|
||||
; *** Esp8266 core for Arduino version 2.4.2
|
||||
platform = espressif8266@1.8.0
|
||||
framework = arduino
|
||||
board = esp01_1m
|
||||
|
||||
[env:core_2_5_2]
|
||||
; *** Esp8266 core for Arduino version 2.5.2
|
||||
platform = espressif8266@~2.2.2
|
||||
framework = arduino
|
||||
board = esp01_1m
|
||||
|
||||
[env:core_stage]
|
||||
; *** Esp8266 core for Arduino version latest beta
|
||||
platform = https://github.com/platformio/platform-espressif8266.git#feature/stage
|
||||
framework = arduino
|
||||
board = esp01_1m
|
||||
|
||||
[env:core_pre]
|
||||
; *** Arduino Esp8266 core pre 2.6.x for Tasmota (mqtt reconnects fixed)
|
||||
platform = https://github.com/Jason2866/platform-espressif8266.git#Tasmota
|
||||
framework = arduino
|
||||
board = esp01_1m
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
#include <Arduino.h>
|
||||
void setup() {}
|
||||
void loop() {}
|
Loading…
Reference in New Issue