Skip to content

ci: install cargo using rustup #206

ci: install cargo using rustup

ci: install cargo using rustup #206

Workflow file for this run

name: CI
on:
push:
branches:
- main
- v*-branch
tags:
- v*
pull_request:
branches:
- main
- v*-branch
permissions:
packages: write
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
jobs:
build:
name: Build (${{ matrix.variant.platform }})
runs-on: ${{ matrix.variant.builder }}
strategy:
fail-fast: true
matrix:
variant:
- platform: linux/amd64
arch: amd64
builder: zephyr-runner-linux-x64-4xlarge
- platform: linux/arm64
arch: arm64
builder: zephyr-runner-linux-arm64-4xlarge
services:
registry:
image: registry:2
ports:
- 5000:5000
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Generate local metadata for base image
id: meta_ci_base
uses: docker/metadata-action@v4
with:
images: |
localhost:5000/zephyrproject-rtos/ci-base
- name: Generate local metadata for CI image
id: meta_ci
uses: docker/metadata-action@v4
with:
images: |
localhost:5000/zephyrproject-rtos/ci
- name: Generate local metadata for Developer image
id: meta_developer
uses: docker/metadata-action@v4
with:
images: |
localhost:5000/zephyrproject-rtos/zephyr-build
- name: Generate push metadata for base image
if: ${{ github.event_name != 'pull_request' }}
id: meta_ci_base_push
uses: docker/metadata-action@v4
with:
images: |
docker.io/zephyrprojectrtos/ci-base
ghcr.io/zephyrproject-rtos/ci-base
flavor: |
latest=false
suffix=-${{ matrix.variant.arch }}
tags: |
type=ref,event=branch
type=ref,event=tag
- name: Generate push metadata for CI image
if: ${{ github.event_name != 'pull_request' }}
id: meta_ci_push
uses: docker/metadata-action@v4
with:
images: |
docker.io/zephyrprojectrtos/ci
ghcr.io/zephyrproject-rtos/ci
flavor: |
latest=false
suffix=-${{ matrix.variant.arch }}
tags: |
type=ref,event=branch
type=ref,event=tag
- name: Generate push metadata for Developer image
if: ${{ github.event_name != 'pull_request' }}
id: meta_developer_push
uses: docker/metadata-action@v4
with:
images: |
docker.io/zephyrprojectrtos/zephyr-build
ghcr.io/zephyrproject-rtos/zephyr-build
flavor: |
latest=false
suffix=-${{ matrix.variant.arch }}
tags: |
type=ref,event=branch
type=ref,event=tag
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
with:
driver-opts: network=host
- name: Build base docker image
uses: docker/build-push-action@v3
with:
context: .
file: Dockerfile.base
platforms: ${{ matrix.variant.platform }}
push: true
tags: ${{ steps.meta_ci_base.outputs.tags }}
labels: ${{ steps.meta_ci_base.outputs.labels }}
- name: Build CI docker image
uses: docker/build-push-action@v3
with:
context: .
file: Dockerfile.ci
platforms: ${{ matrix.variant.platform }}
push: true
tags: ${{ steps.meta_ci.outputs.tags }}
labels: ${{ steps.meta_ci.outputs.labels }}
build-args: |
BASE_IMAGE=localhost:5000/zephyrproject-rtos/ci-base:${{ steps.meta_ci_base.outputs.version }}
- name: Build Developer docker image
uses: docker/build-push-action@v3
with:
context: .
file: Dockerfile.devel
platforms: ${{ matrix.variant.platform }}
push: true
tags: ${{ steps.meta_developer.outputs.tags }}
labels: ${{ steps.meta_developer.outputs.labels }}
build-args: |
BASE_IMAGE=localhost:5000/zephyrproject-rtos/ci:${{ steps.meta_ci.outputs.version }}
- name: Login to DockerHub
if: ${{ github.event_name != 'pull_request' }}
uses: docker/login-action@v2
with:
registry: docker.io
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
if: ${{ github.event_name != 'pull_request' }}
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Push base docker image
if: ${{ github.event_name != 'pull_request' }}
uses: stephanosio/tag-push-action@v2.1.0
with:
src: localhost:5000/zephyrproject-rtos/ci-base:${{ steps.meta_ci_base.outputs.version }}
dst: ${{ steps.meta_ci_base_push.outputs.tags }}
- name: Push CI docker image
if: ${{ github.event_name != 'pull_request' }}
uses: stephanosio/tag-push-action@v2.1.0
with:
src: localhost:5000/zephyrproject-rtos/ci:${{ steps.meta_ci.outputs.version }}
dst: ${{ steps.meta_ci_push.outputs.tags }}
- name: Push Developer docker image
if: ${{ github.event_name != 'pull_request' }}
uses: stephanosio/tag-push-action@v2.1.0
with:
src: localhost:5000/zephyrproject-rtos/zephyr-build:${{ steps.meta_developer.outputs.version }}
dst: ${{ steps.meta_developer_push.outputs.tags }}
merge:
name: Merge
runs-on: zephyr-runner-linux-x64-4xlarge
needs: build
if: ${{ github.event_name != 'pull_request' }}
steps:
- name: Login to DockerHub
uses: docker/login-action@v2
with:
registry: docker.io
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Generate push metadata for base docker image
id: meta_ci_base_push
uses: docker/metadata-action@v4
with:
images: |
docker.io/zephyrprojectrtos/ci-base
ghcr.io/zephyrproject-rtos/ci-base
flavor: |
latest=false
tags: |
type=ref,event=branch
type=ref,event=tag
type=raw,value=latest,enable={{is_default_branch}}
- name: Generate push metadata for CI image
id: meta_ci_push
uses: docker/metadata-action@v4
with:
images: |
docker.io/zephyrprojectrtos/ci
ghcr.io/zephyrproject-rtos/ci
flavor: |
latest=false
tags: |
type=ref,event=branch
type=ref,event=tag
type=raw,value=latest,enable={{is_default_branch}}
- name: Generate push metadata for Developer image
id: meta_developer_push
uses: docker/metadata-action@v4
with:
images: |
docker.io/zephyrprojectrtos/zephyr-build
ghcr.io/zephyrproject-rtos/zephyr-build
flavor: |
latest=false
tags: |
type=ref,event=branch
type=ref,event=tag
type=raw,value=latest,enable={{is_default_branch}}
- name: Create multi-architecture image
run: |
archs=(amd64 arm64)
ci_base_image="ghcr.io/zephyrproject-rtos/ci-base:${{ steps.meta_ci_base_push.outputs.version }}"
ci_image="ghcr.io/zephyrproject-rtos/ci:${{ steps.meta_ci_push.outputs.version }}"
developer_image="ghcr.io/zephyrproject-rtos/zephyr-build:${{ steps.meta_developer_push.outputs.version }}"
# Pull architecture-specific images
for arch in ${archs[@]}; do
docker pull ${ci_base_image}-${arch}
docker pull ${ci_image}-${arch}
docker pull ${developer_image}-${arch}
done
# Create multi-architecture image
for arch in ${archs[@]}; do
ci_base_image_amend_flags+="--amend ${ci_base_image}-${arch} "
ci_image_amend_flags+="--amend ${ci_image}-${arch} "
developer_image_amend_flags+="--amend ${developer_image}-${arch} "
done
docker manifest create ${ci_base_image} ${ci_base_image_amend_flags}
docker manifest create ${ci_image} ${ci_image_amend_flags}
docker manifest create ${developer_image} ${developer_image_amend_flags}
docker manifest push ${ci_base_image}
docker manifest push ${ci_image}
docker manifest push ${developer_image}
- name: Push base docker image
uses: stephanosio/tag-push-action@v2.1.0
with:
src: ghcr.io/zephyrproject-rtos/ci-base:${{ steps.meta_ci_base_push.outputs.version }}
dst: ${{ steps.meta_ci_base_push.outputs.tags }}
- name: Push CI docker image
uses: stephanosio/tag-push-action@v2.1.0
with:
src: ghcr.io/zephyrproject-rtos/ci:${{ steps.meta_ci_push.outputs.version }}
dst: ${{ steps.meta_ci_push.outputs.tags }}
- name: Push Developer docker image
uses: stephanosio/tag-push-action@v2.1.0
with:
src: ghcr.io/zephyrproject-rtos/zephyr-build:${{ steps.meta_developer_push.outputs.version }}
dst: ${{ steps.meta_developer_push.outputs.tags }}