This became an issue once schedules where added, as they would run at the wrong time. In order to fix it the host's timezone information is mounted.
104 lines
3.2 KiB
YAML
104 lines
3.2 KiB
YAML
# Based on: https://pastebin.com/99Fq2b2w
|
|
name: Build and deploy automation_rs
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
- feature/**
|
|
|
|
jobs:
|
|
build:
|
|
name: Build
|
|
runs-on: ubuntu-latest
|
|
container: catthehacker/ubuntu:act-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup Rust
|
|
uses: actions-rust-lang/setup-rust-toolchain@v1
|
|
with:
|
|
rustflags: ""
|
|
|
|
- name: Formatting
|
|
uses: actions-rust-lang/rustfmt@v1
|
|
|
|
- name: Clippy
|
|
run: cargo clippy --all-targets --all -- -D warnings
|
|
|
|
- name: Build
|
|
run: cargo build --release
|
|
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: build
|
|
path: target/x86_64-unknown-linux-gnu/release/automation
|
|
|
|
container:
|
|
name: Create container
|
|
runs-on: ubuntu-latest
|
|
needs: [build]
|
|
container: catthehacker/ubuntu:act-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Download artifact
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: build
|
|
|
|
- name: Set permissions
|
|
run: |
|
|
chown 65532:65532 ./build/*
|
|
chmod 0755 ./build/*
|
|
|
|
- name: Login to registry
|
|
uses: https://github.com/docker/login-action@v3
|
|
with:
|
|
registry: git.huizinga.dev
|
|
username: ${{ gitea.actor }}
|
|
password: ${{ secrets.REGISTRY_TOKEN }}
|
|
|
|
- name: Build & Push Docker Image
|
|
uses: https://github.com/docker/build-push-action@v5
|
|
with:
|
|
context: .
|
|
push: ${{ gitea.ref == 'refs/heads/master' }}
|
|
# TODO: Automatically add the correct tags here
|
|
tags: git.huizinga.dev/dreaded_x/automation_rs:latest
|
|
|
|
deploy:
|
|
name: Deploy Docker container
|
|
runs-on: ubuntu-latest
|
|
container: catthehacker/ubuntu:act-latest
|
|
needs: [container]
|
|
if: gitea.ref == 'refs/heads/master'
|
|
steps:
|
|
- name: Stop and remove current container
|
|
run: |
|
|
docker stop automation_rs || true
|
|
docker rm automation_rs || true
|
|
|
|
- name: Create container
|
|
run: |
|
|
docker create \
|
|
--pull always \
|
|
--restart unless-stopped \
|
|
--name automation_rs \
|
|
-e TZ=Europe/Amsterdam \
|
|
-e RUST_LOG=automation=debug \
|
|
-e MQTT_PASSWORD=${{ secrets.MQTT_PASSWORD }} \
|
|
-e HUE_TOKEN=${{ secrets.HUE_TOKEN }} \
|
|
-e NTFY_TOPIC=${{ secrets.NTFY_TOPIC }} \
|
|
git.huizinga.dev/dreaded_x/automation_rs:latest
|
|
|
|
docker network connect mqtt automation_rs
|
|
docker network connect web automation_rs
|
|
|
|
- name: Start container
|
|
run: docker start automation_rs
|
|
|
|
# TODO: Perform a healthcheck
|