Skip to content

Commit

Permalink
run with docker compose only
Browse files Browse the repository at this point in the history
  • Loading branch information
cjjacks committed Aug 5, 2024
1 parent 073abca commit 0d3633a
Show file tree
Hide file tree
Showing 8 changed files with 350 additions and 39 deletions.
97 changes: 97 additions & 0 deletions .github/workflows/docker-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
name: Docker

# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.

on:
push:
branches: [ "main" ]
# Publish semver tags as releases.
tags: [ 'v*.*.*' ]
pull_request:
branches: [ "main" ]

env:
# Use docker.io for Docker Hub if empty
REGISTRY: ghcr.io
# github.repository as <account>/<repo>
IMAGE_NAME: ${{ github.repository }}


jobs:
build:

runs-on: ubuntu-latest
permissions:
contents: read
packages: write
# This is used to complete the identity challenge
# with sigstore/fulcio when running outside of PRs.
id-token: write

steps:
- name: Checkout repository
uses: actions/checkout@v4

# Install the cosign tool except on PR
# https://github.com/sigstore/cosign-installer
- name: Install cosign
if: github.event_name != 'pull_request'
uses: sigstore/cosign-installer@59acb6260d9c0ba8f4a2f9d9b48431a222b68e20 #v3.5.0
with:
cosign-release: 'v2.2.4'

# Set up BuildKit Docker container builder to be able to build
# multi-platform images and export cache
# https://github.com/docker/setup-buildx-action
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3.0.0

# Login against a Docker registry except on PR
# https://github.com/docker/login-action
- name: Log into registry ${{ env.REGISTRY }}
if: github.event_name != 'pull_request'
uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

# Extract metadata (tags, labels) for Docker
# https://github.com/docker/metadata-action
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@96383f45573cb7f253c731d3b3ab81c87ef81934 # v5.0.0
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}

# Build and push Docker image with Buildx (don't push on PR)
# https://github.com/docker/build-push-action
- name: Build and push Docker image
id: build-and-push
uses: docker/build-push-action@0565240e2d4ab88bba5387d719585280857ece09 # v5.0.0
with:
context: .
dockerfile: docker/Dockerfile.base
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max

# Sign the resulting Docker image digest except on PRs.
# This will only write to the public Rekor transparency log when the Docker
# repository is public to avoid leaking data. If you would like to publish
# transparency data even for private images, pass --force to cosign below.
# https://github.com/sigstore/cosign
- name: Sign the published Docker image
if: ${{ github.event_name != 'pull_request' }}
env:
# https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-an-intermediate-environment-variable
TAGS: ${{ steps.meta.outputs.tags }}
DIGEST: ${{ steps.build-and-push.outputs.digest }}
# This step uses the identity token to provision an ephemeral certificate
# against the sigstore community Fulcio instance.
run: echo "${TAGS}" | xargs -I {} cosign sign --yes {}@${DIGEST}
87 changes: 48 additions & 39 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -41,82 +41,91 @@ OTHERTGTS := $(filter-out $(LOCALTGTS),$(MAKECMDGOALS))
# Commands
#
all:
$(MAKE) config
$(MAKE) fsw
$(MAKE) sim
$(MAKE) gsw
$(MAKE) config;
$(MAKE) fsw;
$(MAKE) sim;
$(MAKE) gsw;

build-cryptolib:
mkdir -p $(GSWBUILDDIR)
cd $(GSWBUILDDIR) && cmake $(PREP_OPTS) -DSUPPORT=1 ../../components/cryptolib
$(MAKE) --no-print-directory -C $(GSWBUILDDIR)
mkdir -p $(GSWBUILDDIR);
cd $(GSWBUILDDIR) && cmake $(PREP_OPTS) -DSUPPORT=1 ../../components/cryptolib;
$(MAKE) --no-print-directory -C $(GSWBUILDDIR);

build-fsw:
mkdir -p $(FSWBUILDDIR)
cd $(FSWBUILDDIR) && cmake $(PREP_OPTS) ../cfe
$(MAKE) --no-print-directory -C $(FSWBUILDDIR) mission-install
mkdir -p $(FSWBUILDDIR);
cd $(FSWBUILDDIR) && cmake $(PREP_OPTS) ../cfe;
$(MAKE) --no-print-directory -C $(FSWBUILDDIR) mission-install;

build-sim:
mkdir -p $(SIMBUILDDIR)
cd $(SIMBUILDDIR) && cmake -DCMAKE_INSTALL_PREFIX=$(SIMBUILDDIR) ..
$(MAKE) --no-print-directory -C $(SIMBUILDDIR) install
mkdir -p $(SIMBUILDDIR);
cd $(SIMBUILDDIR) && cmake -DCMAKE_INSTALL_PREFIX=$(SIMBUILDDIR) ..;
$(MAKE) --no-print-directory -C $(SIMBUILDDIR) install;

checkout:
./scripts/docker_checkout.sh
source ./scripts/docker_checkout.sh;

clean:
$(MAKE) clean-fsw
$(MAKE) clean-sim
$(MAKE) clean-gsw
rm -rf cfg/build
$(MAKE) clean-fsw;
$(MAKE) clean-sim;
$(MAKE) clean-gsw;
rm -rf cfg/build;

clean-fsw:
rm -rf cfg/build/nos3_defs
rm -rf fsw/build
rm -rf cfg/build/nos3_defs;
rm -rf fsw/build;

clean-sim:
rm -rf sims/build
rm -rf sims/build;

clean-gsw:
rm -rf gsw/build
rm -rf gsw/cosmos/build
rm -rf /tmp/nos3
rm -rf gsw/build;
rm -rf gsw/cosmos/build;
rm -rf /tmp/nos3;

config:
./scripts/config.sh
source ./scripts/config.sh;

debug:
./scripts/docker_debug.sh
source ./scripts/docker_debug.sh;

fsw:
./scripts/docker_build_fsw.sh
source ./scripts/docker_build_fsw.sh;

gsw:
./scripts/docker_build_cryptolib.sh
./cfg/build/gsw_build.sh
source ./scripts/docker_build_cryptolib.sh;
source ./cfg/build/gsw_build.sh;

launch:
./scripts/docker_launch.sh
source ./scripts/docker_launch.sh;

log:
./scripts/log.sh
source ./scripts/log.sh;

prep:
./scripts/prepare.sh
source ./scripts/prepare.sh;

real-clean:
$(MAKE) clean
./scripts/real_clean.sh
$(MAKE) clean;
source ./scripts/real_clean.sh;

sim:
./scripts/docker_build_sim.sh
source ./scripts/docker_build_sim.sh;

stop:
./scripts/docker_stop.sh
./scripts/stop.sh
source ./scripts/docker_stop.sh;
source ./scripts/stop.sh;

stop-gsw:
./scripts/stop_gsw.sh
source ./scripts/stop_gsw.sh;

igniter:
./scripts/igniter_launch.sh
source ./scripts/igniter_launch.sh;

docker-prep:
source ./scripts/docker_prepare.sh;

docker:
docker compose up --build --detach;

base:
docker build -t nos3-base -f ./docker/Dockerfile.base .
93 changes: 93 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
services:
gsw:
container_name: ait
platform: linux/amd64
image: ghcr.io/sphinxdefense/gsw-ait:main
environment:
LOG_LEVEL: INFO
ports:
- "8080:8080"
networks:
nos3_core:
aliases:
- active-gs
nos3_sc_1:
aliases:
- active-gs

influxdb:
image: influxdb:1.8
container_name: influxdb
ports:
- 8086:8086
environment:
INFLUXDB_DB: ait
INFLUXDB_ADMIN_USER: ait
INFLUXDB_ADMIN_PASSWORD: admin_password
networks:
- nos3_core

sc_1_nos_fsw:
container_name: sc_1_nos_fsw
hostname: fsw
platform: linux/amd64
build:
context: .
dockerfile: ./docker/Dockerfile.fsw
command: ["/home/nos3/scripts/fsw_respawn.sh"]
volumes:
- base-dir:/home/nos3
networks:
- nos3_sc_1

sc_1_fortytwo:
container_name: sc_1_fortytwo
hostname: fortytwo
platform: linux/amd64
build:
context: .
dockerfile: ./docker/Dockerfile.fortytwo
volumes:
- nos3-dir:/home/nos3/.nos3
command: ["/home/nos3/.nos3/42/42 NOS3InOut"]
networks:
- nos3_sc_1

stdio:
container_name: stdio
platform: linux/amd64
build:
context: .
dockerfile: ./docker/Dockerfile.sim
volumes:
- sim-dir:/home/nos3/sims/build
command: ["./nos3-single-simulator -f nos3-simulator.xml stdio-terminal"]
networks:
- nos3_core

udp:
container_name: udp
platform: linux/amd64
build:
context: .
dockerfile: ./docker/Dockerfile.sim
volumes:
- sim-dir:/home/nos3/sims/build
command: ["./nos3-single-simulator -f nos3-simulator.xml udp-terminal"]
networks:
- nos3_core

networks:
nos3_core:
name: nos3_core
driver: bridge
ipam:
config:
- subnet: 192.168.41.0/24
gateway: 192.168.41.1
nos3_sc_1:

volumes:
sim-dir:
nos3-dir:
base-dir:
53 changes: 53 additions & 0 deletions docker/Dockerfile.base
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
FROM ivvitc/nos3-64:20240430 AS nos3-base

ARG USER=nos3
ARG GROUP=nos3
ARG UID=1001
ARG GID=1001
ARG HOME=/home/$USER
ENV PROJECT_HOME=/home/$USER
ENV BASE_DIR=$PROJECT_HOME
ENV SCRIPT_DIR=$BASE_DIR/scripts
ENV FSW_DIR=$BASE_DIR/fsw/build/exe/cpu1
ENV GSW_BIN=$BASE_DIR/gsw/cosmos/build/openc3-cosmos-nos3
ENV GSW_DIR=$BASE_DIR/gsw/cosmos
ENV SIM_DIR=$BASE_DIR/sims/build
ENV SIM_BIN=$SIM_DIR/bin
ENV USER_NOS3_DIR=$PROJECT_HOME/.nos3
ENV OPENC3_DIR=$USER_NOS3_DIR/cosmos
ENV OPENC3_PATH=$OPENC3_DIR/openc3.sh

RUN groupadd -r -g ${GID} ${GROUP} \
&& useradd -m -u ${UID} -g ${GROUP} ${USER} \
&& ln -sf /bin/bash /bin/sh

USER $USER
WORKDIR $PROJECT_HOME
COPY --chown=${USER}:${GROUP} . $PROJECT_HOME/
RUN mkdir -p $USER_NOS3_DIR/42 \
&& cd $USER_NOS3_DIR \
&& git clone https://github.com/nasa-itc/42.git --depth 1 -b nos3-main \
&& cd $USER_NOS3_DIR/42 \
&& make \
&& cd $PROJECT_HOME \
&& mkdir -p $BASE_DIR/cfg/build \
&& cp -r $BASE_DIR/cfg/InOut $BASE_DIR/cfg/build/ \
&& cp -r $BASE_DIR/cfg/nos3_defs $BASE_DIR/cfg/build/ \
&& cp -r $BASE_DIR/cfg/sims $BASE_DIR/cfg/build/ \
&& python3 $SCRIPT_DIR/configure.py \
&& mkdir -p $BASE_DIR/fsw/build \
&& make -j1 build-fsw \
&& mkdir -p $BASE_DIR/sims/build \
&& make -j1 build-sim \
&& mkdir -p $FSW_DIR/data \
&& mkdir -p $FSW_DIR/data/cam \
&& mkdir -p $FSW_DIR/data/evs \
&& mkdir -p $FSW_DIR/data/hk \
&& mkdir -p $FSW_DIR/data/inst \
&& mkdir -p /tmp/nos3 \
&& mkdir -p /tmp/nos3/data \
&& mkdir -p /tmp/nos3/data/cam \
&& mkdir -p /tmp/nos3/data/evs \
&& mkdir -p /tmp/nos3/data/hk \
&& mkdir -p /tmp/nos3/data/inst \
&& mkdir -p /tmp/nos3/uplink
14 changes: 14 additions & 0 deletions docker/Dockerfile.fortytwo
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
FROM nos3-base

ARG USER=nos3
ARG GROUP=nos3
ARG UID=1001
ARG GID=1001
ARG HOME=/home/$USER
ENV PROJECT_HOME=/home/$USER

USER $USER
WORKDIR $PROJECT_HOME/.nos3/42
RUN rm -rf $PROJECT_HOME/.nos3/42/NOS3InOut \
&& cp -r $BASE_DIR/cfg/build/InOut $PROJECT_HOME/.nos3/42/NOS3InOut
ENTRYPOINT ["/usr/bin/bash","-c"]
Loading

0 comments on commit 0d3633a

Please sign in to comment.