-
Notifications
You must be signed in to change notification settings - Fork 70
168 lines (139 loc) · 4.56 KB
/
test.yml
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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
on:
push:
branches:
- main
pull_request:
types: [opened, reopened, synchronize]
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
env:
TF_ACC: "1"
GO111MODULE: "on"
LXD_GENERATE_CLIENT_CERTS: "true"
LXD_ACCEPT_SERVER_CERTIFICATE: "true"
name: Test
jobs:
acc-standalone:
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
channel:
- 5.0/stable
- 5.0/edge
- 5.21/stable
- 5.21/edge
- latest/stable
- latest/edge
steps:
- uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version-file: 'go.mod'
- name: Setup LXD from ${{ matrix.channel }} channel
run: |
sudo snap install lxd --channel=${{ matrix.channel }}
sudo lxd waitready --timeout 60
sudo lxd init --auto --network-port=8443 --network-address=localhost
sudo chmod 777 /var/snap/lxd/common/lxd/unix.socket
# 5.0/* currently use core20 which ships with a buggy lvm2 package so
# if the base used by the LXD snap is core20, use the external lvm provider
# which is the one installed on the runner machine. Since there are plans
# to switch 5.0/* to using core22, it's best to autodetect this condition.
if snap info lxd --verbose | grep -qxE 'base:\s+core20'; then
echo "WARN: Using external lvm command to workaround bug in core20" >&2
sudo snap set lxd lvm.external=true
sudo systemctl restart snap.lxd.daemon.service
fi
# Add HTTPS remote.
lxc remote add localhost "$(lxc config trust add --name lxd-terraform-provider --quiet)"
- name: Download minio/mc
uses: canonical/lxd/.github/actions/download-minio@main
if: ${{ matrix.channel != '5.0/stable' && matrix.channel != '5.0/edge' }}
- name: Configure MinIO
if: ${{ matrix.channel != '5.0/stable' && matrix.channel != '5.0/edge' }}
run: |
mkdir -p /opt/minio
mv "$(go env GOPATH)/bin/minio" /opt/minio/
mv "$(go env GOPATH)/bin/mc" /opt/minio/
# Set the snap config key for minio and reload LXD to have it take effect.
sudo snap set lxd minio.path=/opt/minio
sudo systemctl reload snap.lxd.daemon
- name: Configure OVN
run: |
sudo apt-get update
sudo apt-get install --no-install-recommends --yes \
ovn-host \
ovn-central \
bind9-dnsutils \
jq
sudo ovs-vsctl set open_vswitch . \
external_ids:ovn-remote=unix:/var/run/ovn/ovnsb_db.sock \
external_ids:ovn-encap-type=geneve \
external_ids:ovn-encap-ip=127.0.0.1
- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
with:
terraform_wrapper: false
- name: Run acceptance tests
run: make test
acc-cluster:
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
channel:
- 5.0/stable
- 5.0/edge
- 5.21/stable
- 5.21/edge
- latest/stable
- latest/edge
steps:
- uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version-file: 'go.mod'
- name: Setup LXD cluster
uses: ./.github/actions/cluster
with:
cluster-name: acctest
lxd-version: ${{ matrix.channel }}
- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
with:
terraform_wrapper: false
- name: Run acceptance tests
run: make test
build-platforms:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version-file: 'go.mod'
- name: Run GoReleaser in build mode to test all release platforms
uses: goreleaser/goreleaser-action@v6
with:
args: build --snapshot
check-lint:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version-file: 'go.mod'
- name: Install dependencies
run: |
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin
- run: make fmtcheck
- run: make vet
- run: make static-analysis