Skip to content

[aarch64 support] debugging #64

[aarch64 support] debugging

[aarch64 support] debugging #64

Workflow file for this run

name: Build
on:
push:
branches:
# @TODO: limit this to `main` branch
- '**'
tags:
- '**'
paths-ignore:
- 'releases/**'
workflow_dispatch:
env:
REGISTRY: ghcr.io
IMAGE_NAME: hiro-microdatacenters-bv/rhio
HELM_CHART_TARGET_DIR: ${{ github.ref == 'refs/heads/main' && './helm-charts' || './dev' }}
BRANCH_NAME: ${GITHUB_REF##*/}
jobs:
test:
name: Test / ${{ matrix.target }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
isPR:
- ${{github.event_name == 'pull_request'}}
include:
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
# - os: macos-latest
# target: aarch64-apple-darwin
# exclude:
# - isPR: true
# os: macos-latest
# target: aarch64-apple-darwin
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Rust toolchain
uses: moonrepo/setup-rust@v1
with:
channel: ${{ env.RUST_TOOLCHAIN }}
- name: Run tests
# Ensure debug output is also tested
env:
RUST_LOG: debug
run: cargo test --all-features
build-helm-chart:
name: Build Helm Chart
runs-on: ubuntu-latest
needs: [test]
defaults:
run:
working-directory: ./
permissions:
contents: write
packages: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Helm
uses: azure/setup-helm@v3
- name: Make versions
run: |
cd "${{ github.workspace }}"
chmod +x ./version.sh
./version.sh "${{ github.sha }}" "${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}"
echo "VERSION_APP=$(cat "./VERSION")" >> $GITHUB_ENV
echo "DOCKER_IMAGES=$(cat "./DOCKER_IMAGES")" >> $GITHUB_ENV
echo "DOCKER_TAGS=$(cat "./VERSION_DOCKER")" >> $GITHUB_ENV
- name: Configure Git
run: |
git config user.name "$GITHUB_ACTOR"
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
- name: Create a github release
if: ${{ github.ref == 'refs/heads/main' }}
run: gh release create "${{ env.VERSION_APP }}"
env:
GH_TOKEN: ${{ github.token }}
- name: Publish Helm charts
uses: stefanprodan/helm-gh-pages@master
with:
token: ${{ github.token }}
charts_dir: "./charts"
target_dir: ${{ env.HELM_CHART_TARGET_DIR }}
build-docker:
name: Docker Build / ${{ matrix.platform }}
runs-on: ubuntu-latest
needs: [test]
strategy:
fail-fast: false
matrix:
platform:
- linux/amd64
- linux/arm64
isPR:
- ${{github.event_name == 'pull_request'}}
exclude:
- isPR: true
platform: "linux/arm64"
defaults:
run:
working-directory: ./
permissions:
contents: write
packages: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
# @TODO: don't build form arm during development cos it's super slow
with:
platforms: ${{ matrix.platform }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Make versions
run: |
cd "${{ github.workspace }}"
chmod +x ./version.sh
./version.sh "${{ github.sha }}" "${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}"
echo "VERSION_APP=$(cat "./VERSION")" >> $GITHUB_ENV
echo "DOCKER_IMAGES=$(cat "./DOCKER_IMAGES")" >> $GITHUB_ENV
echo "DOCKER_TAGS=$(cat "./VERSION_DOCKER")" >> $GITHUB_ENV
- name: Log into registry ${{ env.REGISTRY }}
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ github.token }}
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: ${{ env.DOCKER_TAGS }}
- name: Build and push docker image
uses: docker/build-push-action@v5
with:
push: true
# @TODO: don't build form arm during development cos it's super slow
platforms: ${{ matrix.platform }}
tags: ${{ env.DOCKER_IMAGES }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha,scope=${{ env.BRANCH_NAME }}
cache-to: type=gha,mode=max,scope=${{ env.BRANCH_NAME }}
github-token: ${{ github.token }}