Skip to content

Merge pull request #74 from shlevy/marlowe-deploy #107

Merge pull request #74 from shlevy/marlowe-deploy

Merge pull request #74 from shlevy/marlowe-deploy #107

Workflow file for this run

name: "Deploy"
env:
ALLOWED_URIS: "https://github.com https://api.github.com"
TRUSTED_PUBLIC_KEYS: "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ= marlowe-temp.cachix.org-1:1gPjVFpu4QjaAT3tRurCioX+BC23V7mjvFwpP5bV0Ec="
SUBSTITUTERS: "https://cache.nixos.org/ https://cache.iog.io https://marlowe-temp.cachix.org"
on:
push:
branches:
- main
- production
jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Nix
uses: cachix/install-nix-action@v25
with:
extra_nix_config: |
allowed-uris = ${{ env.ALLOWED_URIS }}
trusted-public-keys = ${{ env.TRUSTED_PUBLIC_KEYS }}
substituters = ${{ env.SUBSTITUTERS }}
experimental-features = nix-command flakes
accept-flake-config = true
- name: Build image and copy to local Docker registry
run: |
nix build .#oci-images.x86_64-linux.all.copyToDockerDaemon
./result/bin/copy-to-docker-daemon
- name: Authenticate with container registry
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $ --password-stdin
- name: Tag and push images
run: |
tagAndPush() {
IMAGE_ID=ghcr.io/${{ github.repository_owner }}/$1
# Change all uppercase to lowercase
IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]')
# Strip git ref prefix from version
TAG=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,')
# Strip "runtime@v" prefix from tag name
[[ "${{ github.ref }}" == "refs/tags/"* ]] && TAG=$(echo $TAG | sed -e 's/^runtime@v//')
# Use Docker `latest` tag convention
[ "$TAG" == "main" ] && TAG=latest
# Use date + short hash for production releases
[ "$TAG" == "production" ] && TAG="$(date +'%Y-%m-%d')-$(git rev-parse --short "${{ github.ref }}")"
echo IMAGE_ID=$IMAGE_ID
echo TAG=$TAG
docker tag $1:latest $IMAGE_ID:$TAG
docker push $IMAGE_ID:$TAG
}
tagAndPush "marlowe-playground-server"
tagAndPush "marlowe-playground-client"