diff --git a/.github/actions/docker/action.yml b/.github/actions/docker/action.yml new file mode 100644 index 00000000..3608f96e --- /dev/null +++ b/.github/actions/docker/action.yml @@ -0,0 +1,11 @@ +name: 'Run in docker' +inputs: + run: # id of input + description: 'A command to run' + required: true + default: '' +runs: + using: 'docker' + image: '../../../docker/Dockerfile' + args: + - ${{ inputs.run }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..2f1b5cd5 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,29 @@ +name: 'CI' + +on: + push: + branches: [ master ] + pull_request: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Cache Docker layers + uses: satackey/action-docker-layer-caching@v0.0.8 + + - name: Build docker image + uses: ./.github/actions/docker + + - name: Build target_lo in docker + uses: ./.github/actions/docker + with: + run: make -C target_lo + + - name: Build target_f1 in docker + uses: ./.github/actions/docker + with: + run: make -C target_f1 diff --git a/docker-compose.yml b/docker-compose.yml index dc166214..4ccbc5ab 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ version: '3' services: dev: - build: . + build: docker network_mode: "host" privileged: true tty: true diff --git a/Dockerfile b/docker/Dockerfile similarity index 90% rename from Dockerfile rename to docker/Dockerfile index 6c5fb134..127b323c 100644 --- a/Dockerfile +++ b/docker/Dockerfile @@ -22,5 +22,5 @@ RUN apt-get update && \ RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --profile=minimal --target thumbv7em-none-eabi thumbv7em-none-eabihf -ENV PATH="/root/.cargo/bin:${PATH}" -ENV USER=root +COPY entrypoint.sh /entrypoint.sh +ENTRYPOINT ["/entrypoint.sh"] diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh new file mode 100755 index 00000000..3693363e --- /dev/null +++ b/docker/entrypoint.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# A hack for GitHub Actions to not install Rust twice +if [ "$HOME" != "/root" ]; then + ln -sf /root/.rustup "$HOME/.rustup" + ln -sf /root/.cargo "$HOME/.cargo" +fi + +PATH="$HOME/.cargo/bin:${PATH}" + +if [ -z "$1" ]; then + bash +else + echo "Running $1" + set -ex + bash -c "$1" +fi