-
Notifications
You must be signed in to change notification settings - Fork 14
142 lines (118 loc) · 4.1 KB
/
integration.yaml
File metadata and controls
142 lines (118 loc) · 4.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
---
name: Integration Test
on:
pull_request:
branches:
- master
push:
branches:
- master
env:
REGISTRY: ghcr.io
jobs:
build-mini-lab-vms-image:
name: Build mini-lab-vms image
runs-on: ubuntu-latest
steps:
- name: Log in to the container registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ secrets.DOCKER_REGISTRY_USER }}
password: ${{ secrets.DOCKER_REGISTRY_TOKEN }}
- name: Checkout
uses: actions/checkout@v4
- name: Make tag
run: |
IMAGE_TAG=$([ "${GITHUB_EVENT_NAME}" == 'pull_request' ] && echo ${GITHUB_HEAD_REF##*/} || echo "latest")
echo "MINI_LAB_VM_IMAGE=ghcr.io/metal-stack/mini-lab-vms:${IMAGE_TAG}" >> $GITHUB_ENV
echo "MINI_LAB_SONIC_IMAGE=ghcr.io/metal-stack/mini-lab-sonic:${IMAGE_TAG}" >> $GITHUB_ENV
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and push mini-lab-vms container
uses: docker/build-push-action@v6
with:
context: ./images/machine
pull: true
push: true
sbom: true
tags: ${{ env.MINI_LAB_VM_IMAGE }}
cache-from: type=registry,ref=${{ env.MINI_LAB_VM_IMAGE }}
cache-to: type=inline
build-mini-lab-sonic-image:
name: Build mini-lab-sonic image
runs-on: ubuntu-latest
steps:
- name: Log in to the container registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ secrets.DOCKER_REGISTRY_USER }}
password: ${{ secrets.DOCKER_REGISTRY_TOKEN }}
- name: Checkout
uses: actions/checkout@v4
- name: Make tag
run: |
IMAGE_TAG=$([ "${GITHUB_EVENT_NAME}" == 'pull_request' ] && echo ${GITHUB_HEAD_REF##*/} || echo "latest")
echo "MINI_LAB_VM_IMAGE=ghcr.io/metal-stack/mini-lab-vms:${IMAGE_TAG}" >> $GITHUB_ENV
echo "MINI_LAB_SONIC_IMAGE=ghcr.io/metal-stack/mini-lab-sonic:${IMAGE_TAG}" >> $GITHUB_ENV
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and push mini-lab-sonic container
uses: docker/build-push-action@v6
with:
context: ./images/sonic
pull: true
push: true
sbom: true
tags: ${{ env.MINI_LAB_SONIC_IMAGE }}
cache-from: type=registry,ref=${{ env.MINI_LAB_SONIC_IMAGE }}
cache-to: type=inline
test:
name: Run tests
runs-on: self-hosted
needs:
- build-mini-lab-vms-image
- build-mini-lab-sonic-image
continue-on-error: true
strategy:
matrix:
flavors:
- name: sonic
- name: gardener
- name: dell_sonic
steps:
- name: Gain back workspace permissions # https://github.com/actions/checkout/issues/211
run: |
[ -d "${GITHUB_WORKSPACE}" ] && sudo chown -R $USER:$USER ${GITHUB_WORKSPACE}
- name: Setup Containerlab
run: |
bash -c "$(curl -sL https://get.containerlab.dev)"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# set if required:
# DESIRED_VERSION: v0.59.0
- name: Log in to the container registry
uses: docker/login-action@v3
with:
registry: r.metal-stack.io
username: ${{ secrets.R_METALSTACK_IO_READ_USER }}
password: ${{ secrets.R_METALSTACK_IO_READ_PASSWORD }}
- name: Checkout
uses: actions/checkout@v4
- name: Make tag
run: |
IMAGE_TAG=$([ "${GITHUB_EVENT_NAME}" == 'pull_request' ] && echo ${GITHUB_HEAD_REF##*/} || echo "latest")
echo "MINI_LAB_VM_IMAGE=ghcr.io/metal-stack/mini-lab-vms:${IMAGE_TAG}" >> $GITHUB_ENV
echo "MINI_LAB_SONIC_IMAGE=ghcr.io/metal-stack/mini-lab-sonic:${IMAGE_TAG}" >> $GITHUB_ENV
- name: Run integration tests
shell: bash
run: |
eval $(make dev-env)
./test/ci-cleanup.sh
./test/integration.sh
env:
MINI_LAB_FLAVOR: ${{ matrix.flavors.name }}
DOCKER_HUB_USER: ${{ secrets.DOCKER_HUB_USER }}
DOCKER_HUB_TOKEN: ${{ secrets.DOCKER_HUB_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}