Skip to content

docker

docker #580

Workflow file for this run

---
name: docker
# Run on push and once a week to keep the images from bitrotting and to
# identify issues while no commits are being pushed.
on:
push:
branches: [master]
schedule:
- cron: "52 2 * * 0"
jobs:
docker-haskell:
runs-on: ubuntu-22.04
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v5
with:
file: tools/built/src/Dockerfile.haskell
tags: toxchat/toktok-stack:haskell
cache-from: type=registry,ref=toxchat/toktok-stack:haskell
cache-to: type=inline
push: true
docker-third_party:
runs-on: ubuntu-22.04
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v5
with:
file: tools/built/src/Dockerfile.third_party
tags: toxchat/toktok-stack:latest-third_party
cache-from: type=registry,ref=toxchat/toktok-stack:latest-third_party
cache-to: type=inline
push: true
docker:
runs-on: ubuntu-22.04
needs: [docker-third_party]
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v5
with:
file: tools/built/src/Dockerfile
tags: toxchat/toktok-stack:latest
cache-from: type=registry,ref=toxchat/toktok-stack:latest
cache-to: type=inline
push: true
docker-dev:
runs-on: ubuntu-22.04
needs: [docker]
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v5
with:
file: tools/built/src/Dockerfile.dev
tags: toxchat/toktok-stack:latest-dev
cache-from: type=registry,ref=toxchat/toktok-stack:latest-dev
cache-to: type=inline
push: true
bazel-cache:
strategy:
fail-fast: false
matrix:
flavour: [fastbuild, release, debug, asan, msan, tsan, arm64, windows]
runs-on: ubuntu-22.04
needs: [docker]
steps:
- uses: actions/checkout@v4
with:
sparse-checkout: compose.yml
- name: Set up environment
run: |
echo "GROUP_ID=$(id -g)" >.env
echo "USER_ID=$(id -u)" >>.env
- name: Download current cache and run the build
run: |
tar -C .. -xf <(curl -L https://github.com/TokTok/toktok-stack/releases/download/nightly/${{ matrix.flavour }}.tar) || mkdir -p ../bazel-cache
docker compose run --rm ${{ matrix.flavour }}
tar -C .. -cf ${{ matrix.flavour }}.tar bazel-cache
- name: Upload updated cache to nightly release
uses: ncipollo/release-action@v1
with:
allowUpdates: true
tag: nightly
omitBodyDuringUpdate: true
omitNameDuringUpdate: true
prerelease: true
replacesArtifacts: true
artifacts: ${{ matrix.flavour }}.tar