aboutsummaryrefslogblamecommitdiffhomepage
path: root/.github/workflows/docker.yml
blob: cd14344074b909ce428b219343b4238343e19a18 (plain) (tree)


































                                                

                                                                                                              


















                                                                                           
name: Build and push docker image

on:
  pull_request:
  push:
    branches:
      - 'master'
    tags:
      - '*'

env:
  TEST_TAG: fretlink/link

jobs:
  docker:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        base_os:
          - debian
          - alpine
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1
      - name: Build and export to Docker
        uses: docker/build-push-action@v2
        with:
          context: .
          file: ${{ matrix.base_os }}/Dockerfile
          load: true
          tags: ${{ env.TEST_TAG }}
      - name: Test
        run: |
          docker run --rm ${{ env.TEST_TAG }} 'nix-channel --list'
          docker run --rm ${{ env.TEST_TAG }} 'nix-env -iA nixpkgs.hello && test "$(hello)" = "Hello, world!"'
      - name: Get the version
        if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
        id: get_version
        run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//}
      - name: Login to DockerHub
        if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Build and push
        if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
        id: docker_build
        uses: docker/build-push-action@v2
        with:
          push: true
          context: .
          file: ${{ matrix.base_os }}/Dockerfile
          tags: fretlink/nix:${{ steps.get_version.outputs.VERSION }}-${{ matrix.base_os }}