Skip to content

Commit

Permalink
Refactor ci (rancher#2137)
Browse files Browse the repository at this point in the history
* Refactor CI to use a local registry
* Cache image and fetch image tarballs
* Composite fetch images
* Push to insecure registry with podman
* Simplify workflow runs
* Improve cache cleanup
* Improve ip detection

Signed-off-by: David Cassany <dcassany@suse.com>
  • Loading branch information
davidcassany authored Jul 11, 2024
1 parent 22996ef commit 644cdc7
Show file tree
Hide file tree
Showing 11 changed files with 338 additions and 119 deletions.
58 changes: 58 additions & 0 deletions .github/actions/fetchimages/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: Pull images
descriptions: Fetches and loads images from the cache

inputs:
version:
description: key of the cache and tag of the images
required: true
type: string
flavor:
description: flavor of the OS image
required: false
type: string
toolkit:
description: fetch toolkit image
required: false
default: 'true'
type: 'boolean'
os:
description: fetch OS image
required: false
default: 'true'
type: 'boolean'

runs:
using: composite
steps:
- if: ${{ inputs.toolkit == 'true' }}
name: Fetch toolkit image
id: cache-toolkit
uses: actions/cache/restore@v4
env:
cache-name: pr-toolkit-build-x86_64
with:
path: /tmp/toolkit.tar
key: ${{ env.cache-name }}-${{ inputs.version }}
fail-on-cache-miss: true
- if: ${{ inputs.toolkit == 'true' }}
name: Load toolkit image
id: load-toolkit
shell: bash
run: |
docker load -i /tmp/toolkit.tar
- if: ${{ inputs.os == 'true' }}
name: Fetch OS image
id: cache-os
uses: actions/cache/restore@v4
env:
cache-name: pr-os-build-x86_64-${{ inputs.flavor }}
with:
path: /tmp/os.tar
key: ${{ env.cache-name }}-${{ inputs.version }}
fail-on-cache-miss: true
- if: ${{ inputs.os == 'true' }}
name: Load OS image
id: load-os
shell: bash
run: |
docker load -i /tmp/os.tar
63 changes: 37 additions & 26 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
@@ -1,23 +1,9 @@
name: Build
on:
pull_request:
push:
tags:
- v**
pull_request_target:
types:
- opened
- synchronize
- reopened
paths:
- tests/**
- make/**
- Makefile
- .github/**
- pkg/**
- cmd/**
- go.mod
- go.sum
- examples/**
branches:
- main

jobs:
detect:
Expand All @@ -41,29 +27,53 @@ jobs:
build-toolkit:
permissions:
packages: write
contents: read
needs:
- detect
runs-on: ubuntu-latest
env:
PLATFORM: ${{ needs.detect.outputs.platform }}
TOOLKIT_REPO: ghcr.io/${{github.repository}}/elemental-cli
outputs:
version: ${{ steps.version.outputs.version }}
steps:
- uses: actions/checkout@v4
with:
ref: "${{ github.event.pull_request.head.sha }}"
- run: |
git fetch --prune --unshallow
- name: Log in to ghcr.io
uses: docker/login-action@v3
- name: Define version
id: version
env:
hash: ${{ hashFiles('Dockerfile', '**/go.sum', '**/pkg/**', '**/examples/**', '**/cmd/**', '**/vendor/**', '**/Makefile', '**/main.go') }}
run: |
version="${{ env.hash }}"
version=${version::16}
echo "version=${version}" >> $GITHUB_OUTPUT
- name: Check cache for Toolkit image
id: cache-toolkit
uses: actions/cache/restore@v4
env:
cache-name: pr-toolkit-build-x86_64
lookup-only: true
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build toolkit
path: /tmp/toolkit.tar
key: ${{ env.cache-name }}-${{ steps.version.outputs.version }}
- if: ${{ steps.cache-toolkit.outputs.cache-hit != 'true' }}
name: Build toolkit
env:
VERSION: ${{ steps.version.outputs.version }}
run: |
make DOCKER_ARGS=--push build
make build-save
mv build/elemental-toolkit*.tar /tmp/toolkit.tar
- if: ${{ steps.cache-toolkit.outputs.cache-hit != 'true' }}
name: Save toolkit image in cache
id: save-toolkit
uses: actions/cache/save@v4
env:
cache-name: pr-toolkit-build-x86_64
with:
path: /tmp/toolkit.tar
key: ${{ env.cache-name }}-${{ steps.version.outputs.version }}

build-matrix:
needs:
Expand All @@ -76,3 +86,4 @@ jobs:
uses: ./.github/workflows/build_and_test_x86.yaml
with:
flavor: ${{ matrix.flavor }}
version: ${{ needs.build-toolkit.outputs.version }}
Loading

0 comments on commit 644cdc7

Please sign in to comment.