diff --git a/.github/workflows/build-and-publish.yml b/.github/workflows/build-and-publish.yml index 0fd1ca7..8db6cc8 100644 --- a/.github/workflows/build-and-publish.yml +++ b/.github/workflows/build-and-publish.yml @@ -9,10 +9,10 @@ jobs: uses: elgohr/Publish-Docker-Github-Action@master env: DESKTOP_ENVIRONMENT_USER: ${{ secrets.DESKTOP_ENVIRONMENT_USER }} - DESKTOP_ENVIRONMENT_REGISTRY: $GITHUB_ACTOR + DESKTOP_ENVIRONMENT_REGISTRY: ${{ github.actor }} with: dockerfile: docker/Dockerfile - name: ${{ secrets.DESKTOP_ENVIRONMENT_REGISTRY }}/desktop-environment:latest + name: ${{ github.actor }}/desktop-environment:latest username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} buildargs: DESKTOP_ENVIRONMENT_USER,DESKTOP_ENVIRONMENT_REGISTRY diff --git a/docker/Dockerfile b/docker/Dockerfile index 7954380..a7ed80c 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -121,6 +121,11 @@ RUN apt-get update -qq && \ zsh \ zathura +# Install alacritty +RUN wget -O alacritty.deb -nv https://github.com/jwilm/alacritty/releases/download/v0.3.3/Alacritty-v0.3.3-ubuntu_18_04_amd64.deb && \ + dpkg -i alacritty.deb && \ + rm alacritty.deb + # Install antigen RUN curl -fsSL git.io/antigen > /usr/local/bin/antigen.zsh @@ -128,16 +133,15 @@ RUN curl -fsSL git.io/antigen > /usr/local/bin/antigen.zsh RUN wget -O /usr/local/bin/arc -qnv https://github.com/mholt/archiver/releases/download/v3.1.1/arc_linux_amd64 && \ chmod +x /usr/local/bin/arc +# Install bandwhich +RUN curl -fsSL https://github.com/imsnif/bandwhich/releases/download/0.10.0/bandwhich-v0.10.0-x86_64-unknown-linux-musl.tar.gz | \ + tar -C /usr/local/bin -xzf - + # Install bat RUN wget -O bat.deb -qnv https://github.com/sharkdp/bat/releases/download/v0.9.0/bat_0.9.0_amd64.deb && \ dpkg -i bat.deb && \ rm bat.deb -# Install alacritty -RUN wget -O alacritty.deb -nv https://github.com/jwilm/alacritty/releases/download/v0.3.3/Alacritty-v0.3.3-ubuntu_18_04_amd64.deb && \ - dpkg -i alacritty.deb && \ - rm alacritty.deb - # Install chrome RUN apt-get update -qq && \ apt-get install -qq \ diff --git a/docker/scripts/bootstrap.sh b/docker/scripts/bootstrap.sh new file mode 100755 index 0000000..c49a7e4 --- /dev/null +++ b/docker/scripts/bootstrap.sh @@ -0,0 +1,10 @@ +REPO_ROOT=$(dirname $(readlink -f $0))/../.. + +# Export desktop environment shell configuration +eval "$($REPO_ROOT/docker/scripts/environment.sh)" + +# Prepare docker host volumes +$REPO_ROOT/docker/scripts/take-ownership.sh + +# Start desktop environment +$REPO_ROOT/docker/scripts/start.sh diff --git a/docker/scripts/build.sh b/docker/scripts/build.sh index ef90f7c..5f04e4b 100755 --- a/docker/scripts/build.sh +++ b/docker/scripts/build.sh @@ -13,6 +13,7 @@ docker build \ --build-arg DESKTOP_ENVIRONMENT_USER="$DESKTOP_ENVIRONMENT_USER" \ --build-arg DOTFILES_CACHEBUST=$(cat $REPO_ROOT/.dotfiles-cachebust 2>/dev/null) \ --file $REPO_ROOT/docker/Dockerfile \ + --network host \ --tag $DESKTOP_ENVIRONMENT_REGISTRY/$DESKTOP_ENVIRONMENT_CONTAINER_NAME:$DESKTOP_ENVIRONMENT_CONTAINER_TAG \ --tag $DESKTOP_ENVIRONMENT_REGISTRY/$DESKTOP_ENVIRONMENT_CONTAINER_NAME:latest \ $REPO_ROOT/docker diff --git a/docker/scripts/clean-ownership.sh b/docker/scripts/clean-ownership.sh deleted file mode 100755 index f5cd428..0000000 --- a/docker/scripts/clean-ownership.sh +++ /dev/null @@ -1,25 +0,0 @@ -REPO_ROOT=$(dirname $(readlink -f $0))/../.. - -# Export desktop environment shell configuration -eval "$($REPO_ROOT/docker/scripts/environment.sh)" - -SECRETS_VOLUMES=$(cat $REPO_ROOT/docker/scripts/environment.sh | grep echo | grep DESKTOP_ | grep -v SECRETS_ | cut -b 13- | cut -f 1 -d = | sort | uniq) - -for VOLUME_NAME in $SECRETS_VOLUMES; do - - VOLUME_PATH=$(printenv $VOLUME_NAME) - - echo Owning $VOLUME_NAME... - - # Give the desktop environment user ownership of the volume - docker run \ - --rm \ - --user root \ - --volume $VOLUME_NAME:$VOLUME_PATH \ - alpine:latest \ - chown -R $DESKTOP_ENVIRONMENT_USER_ID:$DESKTOP_ENVIRONMENT_USER_ID $VOLUME_PATH & - -done - -# Wait for ownership changes to complete in parallel -wait diff --git a/docker/scripts/clone.sh b/docker/scripts/clone.sh deleted file mode 100755 index b787f5c..0000000 --- a/docker/scripts/clone.sh +++ /dev/null @@ -1,19 +0,0 @@ -REPO_ROOT=$(dirname $(readlink -f $0))/../.. - -# Export desktop environment shell configuration -eval "$($REPO_ROOT/docker/scripts/environment.sh)" - -# Remove existing cloned repository -docker run \ - --rm \ - --volume DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY:$DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY \ - alpine:latest rm -rf $DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY - -# Clone desktop environment repository -docker run \ - --rm \ - --volume DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY:$DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY \ - alpine/git:latest clone https://github.com/$DESKTOP_ENVIRONMENT_REGISTRY/$DESKTOP_ENVIRONMENT_CONTAINER_NAME $DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY - -# Ensure the container user has ownership of docker volumes -$REPO_ROOT/docker/scripts/take-ownership.sh diff --git a/docker/scripts/environment.sh b/docker/scripts/environment.sh index 7a27600..dcc1b88 100755 --- a/docker/scripts/environment.sh +++ b/docker/scripts/environment.sh @@ -17,7 +17,6 @@ echo export DESKTOP_ENVIRONMENT_USER_ID=1000 # Desktop environment docker configuration echo export DESKTOP_ENVIRONMENT_DOCKER_NETWORK=$DESKTOP_ENVIRONMENT_REGISTRY-$DESKTOP_ENVIRONMENT_CONTAINER_NAME -echo export DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY=/$DESKTOP_ENVIRONMENT_CONTAINER_NAME # Desktop environment application cache volumes echo export DESKTOP_ENVIRONMENT_CACHE_CHROME=$DESKTOP_ENVIRONMENT_USER_HOME/.cache/google-chrome