Tidying Dockerfile #186
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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' }} |