test #1
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: KubeagiTests | |
on: | |
push: | |
branches: | |
- 'main' | |
pull_request: | |
branches: [main] | |
workflow_dispatch: | |
env: | |
LOG_DIR: "/tmp/kubeagi-example-test/logs" | |
concurrency: | |
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}' | |
cancel-in-progress: true | |
jobs: | |
build-image: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check whether the operator image of the same commit has been built. | |
id: cache | |
uses: actions/cache/restore@v3 | |
with: | |
key: operator.image-${{ github.sha }} | |
path: /tmp/operator.image.tar | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
# It would be foolish to add the same judgment over and over again, but GitHub action currently does not have | |
# the syntax to skip all the next steps unless we let the pre step fail, and failure is not what we want. | |
# see https://github.com/actions/runner/issues/662 | |
if: steps.cache.outputs.cache-hit != 'true' | |
- name: Build operator image | |
if: steps.cache.outputs.cache-hit != 'true' | |
run: | | |
make docker-build | |
- name: Save operator image to /tmp | |
if: steps.cache.outputs.cache-hit != 'true' | |
run: | | |
docker save controller:latest > /tmp/operator.image.tar | |
- name: Upload operator image | |
if: steps.cache.outputs.cache-hit != 'true' | |
uses: actions/cache/save@v3 | |
with: | |
key: operator.image-${{ github.sha }} | |
path: /tmp/operator.image.tar | |
example-test: | |
needs: | |
- build-image | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: true | |
matrix: | |
no: [1, 2, 3] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Download operator image from cache | |
uses: actions/cache/restore@v3 | |
with: | |
key: operator.image-${{ github.sha }} | |
path: /tmp/operator.image.tar | |
- name: Load component image to /tmp from cache | |
uses: actions/cache/restore@v3 | |
with: | |
key: component-image-cache-${{ github.sha }} | |
restore-keys: component-image-cache- | |
path: | | |
/home/runner/work/kubeagi/kubeagi/tmp/images/ | |
/home/runner/work/kubeagi/kubeagi/tmp/all.image.list | |
- name: Load kubeagi image to docker | |
run: | | |
docker load --input /tmp/operator.image.tar | |
- name: Copy the existing kustomize | |
# avoid kustomize installation to bypass the rate limit of GitHub. | |
run: | | |
mkdir -p ${GITHUB_WORKSPACE}/bin | |
cp /usr/local/bin/kustomize ${GITHUB_WORKSPACE}/bin/kustomize | |
- name: Install mc | |
run: | | |
command -v mc >/dev/null 2>&1 || (curl https://dl.min.io/client/mc/release/linux-amd64/mc \ | |
--create-dirs -o /usr/local/bin/mc && chmod +x /usr/local/bin/mc ) | |
- name: Example test | |
run: tests/example-test.sh | |
- name: Upload logs if test fail | |
if: failure() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ github.sha }}-${{ matrix.no }}.logs | |
path: ${{ env.LOG_DIR }} | |
- name: Upload component images to cache | |
if: ${{ env.UPLOAD_IMAGE == 'YES' }} | |
uses: actions/cache/save@v3 | |
with: | |
key: component-image-cache-${{ github.sha }} | |
path: | | |
/home/runner/work/kubeagi/kubeagi/tmp/images/ | |
/home/runner/work/kubeagi/kubeagi/tmp/all.image.list |