Skip to content

Tidying Dockerfile #186

Tidying Dockerfile

Tidying Dockerfile #186

Workflow file for this run

name: Code CI
on:
push:
tags:
- "*"
pull_request:
jobs:
# Job for creating the container image
build-image:
runs-on: ubuntu-latest
steps:
# Git repositories
- name: Checkout Source
uses: actions/checkout@v2
with:
path: PandABlocks-rootfs
- name: Checkout rootfs builder
uses: actions/checkout@v2
with:
repository: dls-controls/rootfs
path: rootfs
- name: Checkout annotypes
uses: actions/checkout@v2
with:
repository: dls-controls/annotypes
path: annotypes
- name: Checkout pymalcolm
uses: actions/checkout@v2
with:
repository: dls-controls/pymalcolm
path: pymalcolm
- name: Checkout malcolmjs
uses: actions/checkout@v2
with:
repository: dls-controls/malcolmjs
path: malcolmjs
- name: Cache Docker layers
uses: actions/cache@v2
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
# Docker Buildx
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
# Build and push container image to registry
- name: Build and push
uses: docker/build-push-action@v2
with:
context: .
file: ./PandABlocks-rootfs/Dockerfile
push: false
tags: pandablocks-dev-container:latest
outputs: type=docker, dest=./pandablocks-dev-container.tar
cache-to: type=gha
# Upload container as an artifact
- name: Upload contianer as an artifact
uses: actions/upload-artifact@v3
with:
name: pandablocks-dev-container
path: .
# Job the zips
build:
needs: [build-image]
strategy:
fail-fast: false
matrix:
platform: ["zynq", "zynqmp"]
name: build/${{ matrix.platform }}
runs-on: ubuntu-latest
steps:
# Download artifact of image
- uses: actions/download-artifact@v3
with:
name: pandablocks-dev-container
path: .
# Git repositories
- name: Checkout Source
uses: actions/checkout@v2
with:
path: PandABlocks-rootfs
# require history to get back to last tag for version number of branches
fetch-depth: 0
# Run make inside the container
- name: Make zips
run: |
docker load --input pandablocks-dev-container.tar
docker run \
-v "${{ github.workspace }}:/repos" \
-v "${{ github.workspace }}/build:/build" \
pandablocks-dev-container:latest \
/bin/bash -c \
"cd PandABlocks-rootfs && ln -s CONFIG.example CONFIG && make zips PLATFORM=${{ matrix.platform }}"
# Upload zips as artifact
- name: Upload deps and boot build files
uses: actions/upload-artifact@v3
with:
name: zips
path: ./build/PandA-rootfs-${{ matrix.platform }}/*.zip
release:
needs: [build]
runs-on: ubuntu-latest
# Make a release on every tag
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')
steps:
- uses: actions/download-artifact@v3
with:
name: zips
path: zips
- name: Github Release
# We pin to the SHA, not the tag, for security reasons.
# https://docs.github.com/en/actions/learn-github-actions/security-hardening-for-github-actions#using-third-party-actions
uses: softprops/action-gh-release@2d72d869af3bf23602f9593a1e3fd739b80ac1eb # v0.1.12
with:
prerelease: ${{ contains(github.ref_name, 'a') || contains(github.ref_name, 'b') || contains(github.ref_name, 'rc') }}
files: zips/*
body: See [Changelog](CHANGELOG.rst) for more details
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Container release
container-release:
needs: [build]
runs-on: ubuntu-latest
# if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')
steps:
# Git repositories
- name: Checkout Source
uses: actions/checkout@v2
with:
path: PandABlocks-rootfs
- name: Checkout rootfs builder
uses: actions/checkout@v2
with:
repository: dls-controls/rootfs
path: rootfs
- name: Checkout annotypes
uses: actions/checkout@v2
with:
repository: dls-controls/annotypes
path: annotypes
- name: Checkout pymalcolm
uses: actions/checkout@v2
with:
repository: dls-controls/pymalcolm
path: pymalcolm
- name: Checkout malcolmjs
uses: actions/checkout@v2
with:
repository: dls-controls/malcolmjs
path: malcolmjs
- name: Cache Docker layers
uses: actions/cache@v2
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Log in to GitHub Docker Registry
if: github.event_name != 'pull_request'
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Docker meta
id: meta
uses: docker/metadata-action@v4
with:
images: ghcr.io/pandablocks/pandablocks-dev-container
tags: |
type=ref,event=branch
type=ref,event=tag
type=raw,value=latest
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v1
- name: Rebuild and release image
uses: docker/build-push-action@v2
with:
context: .
file: ./PandABlocks-rootfs/Dockerfile
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
push: ${{ github.event_name != 'pull_request' }}