-
Notifications
You must be signed in to change notification settings - Fork 5
97 lines (89 loc) · 3 KB
/
ci.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
name: Run CI
on:
push:
branches: [ main ]
paths-ignore:
- '**.md' # Do not need to run CI for markdown changes.
pull_request:
branches: [ main ]
paths-ignore:
- '**.md'
jobs:
rockspec-info:
uses: ./.github/workflows/rockspec-info.yml
rockspecs:
needs: rockspec-info
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- id: set-matrix
run: |
data=$(echo '${{ needs.rockspec-info.outputs.info }}' | jq -c 'to_entries | map(.value.rockspec)')
echo "matrix=$data" >> $GITHUB_OUTPUT
linux-build:
needs: rockspecs
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
version: ["5.1", "5.2", "5.3", "luajit-2.0.5"]
package: ${{ fromJSON(needs.rockspecs.outputs.matrix) }}
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/ci
with:
lua-version: ${{ matrix.version }}
rockspec: ${{ matrix.package }}
web-server-examples:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
name: ["hello-haproxy", "hello-nginx"]
env:
LD_SDK_KEY: foo
steps:
- uses: actions/checkout@v4
- name: Get C++ Versions
id: cpp-versions
uses: ./.github/actions/cpp-versions
- name: Build ${{ matrix.name }} image
run: |
docker build \
--build-arg="CPP_SDK_VERSION=${{ steps.cpp-versions.outputs.sdk }}" \
-t launchdarkly:${{ matrix.name }} -f ./examples/${{ matrix.name }}/Dockerfile .
- name: Run ${{ matrix.name }} container in background
run: |
docker run -dit --rm --name ${{ matrix.name }} -p 8123:80 --env LD_SDK_KEY="$LD_SDK_KEY" launchdarkly:${{ matrix.name }}
- name: Evaluate feature flag
run: |
curl --retry 5 --retry-all-errors --retry-delay 1 -s -v http://localhost:8123 | tee response.txt
grep -F "is false for this user" response.txt || (echo "Expected false evaluation!" && exit 1)
- name: Stop ${{ matrix.name }} container
run: |
docker stop ${{ matrix.name }}
plain-lua-examples:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
name: [ "hello-debian"]
env:
LD_SDK_KEY: foo
steps:
- uses: actions/checkout@v4
- name: Get C++ Versions
id: cpp-versions
uses: ./.github/actions/cpp-versions
- name: Build ${{ matrix.name }} image
run: |
docker build \
--build-arg="CPP_SDK_VERSION=${{ steps.cpp-versions.outputs.sdk }}" \
-t launchdarkly:${{ matrix.name }} -f ./examples/${{ matrix.name }}/Dockerfile .
- name: Run ${{ matrix.name }} container in foreground
run: |
docker run --env LD_SDK_KEY="$LD_SDK_KEY" launchdarkly:${{ matrix.name }} > logs.txt
- name: Verify output
run: |
grep -F "is false for this user" logs.txt || (echo "Expected false evaluation!" && exit 1)