-
Notifications
You must be signed in to change notification settings - Fork 1.5k
141 lines (120 loc) · 4.13 KB
/
Copy pathtest-devcontainer.yml
File metadata and controls
141 lines (120 loc) · 4.13 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
name: test devcontainer
on:
push:
branches:
- main
pull_request:
branches:
- main
workflow_dispatch:
permissions:
contents: read
jobs:
detect-changes:
runs-on: ubuntu-latest
outputs:
changes: "${{ steps.images.outputs.changed == 'true' || steps.files.outputs.changed == 'true' }}"
steps:
- name: Fetch changed files (PR)
if: github.event_name == 'pull_request'
env:
GH_TOKEN: "${{ github.token }}"
run: |
gh api repos/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}/files --paginate \
| jq -s 'add' > pr-files.json
- name: Fetch changed files (push)
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
if: github.event_name == 'push'
with:
persist-credentials: false
fetch-depth: 2
- name: Build changed files list
run: |
if [ "${{ github.event_name }}" = "pull_request" ]; then
jq -r '.[].filename' pr-files.json | sort -u > changed-files.txt
jq -r '.[] | select(.filename==".gitlab-ci.yml") | .patch // empty' pr-files.json > gitlab-ci.patch
else
git diff --name-only HEAD~1 HEAD | sort -u > changed-files.txt
git diff HEAD~1 HEAD -- .gitlab-ci.yml > gitlab-ci.patch || true
fi
- name: Detect CI image changes
id: images
run: |
if grep -E '^[-+] +CI_IMAGE_[^:]+: v' gitlab-ci.patch >/dev/null; then
echo "changed=true" >> "$GITHUB_OUTPUT"
else
echo "changed=false" >> "$GITHUB_OUTPUT"
fi
- name: Detect files of interest changes
id: files
run: |
cat > files-of-interest.txt <<'EOF'
.github/workflows/test-devcontainer.yml
EOF
if grep -Fx -f files-of-interest.txt changed-files.txt >/dev/null; then
echo "changed=true" >> "$GITHUB_OUTPUT"
else
echo "changed=false" >> "$GITHUB_OUTPUT"
fi
test:
needs: detect-changes
if: ${{ needs.detect-changes.outputs.changes == 'true' }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, ubuntu-24.04-arm]
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
fetch-depth: 1000
fetch-tags: true
- name: Setup Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
- name: Install dda
uses: ./.github/actions/install-dda
with:
features: legacy-tasks
- name: Free disk space
run: |
df -h
echo "::group::Android"
sudo rm -rf /usr/local/lib/android
echo "::endgroup::"
echo "::group::.NET"
sudo rm -rf /usr/share/dotnet
echo "::endgroup::"
echo "::group::Haskell"
sudo rm -rf /opt/ghc
echo "::endgroup::"
echo "::group::CodeQL"
sudo rm -rf /opt/hostedtoolcache/CodeQL
echo "::endgroup::"
df -h
- name: Build image
run: |
git clone https://github.com/DataDog/datadog-agent-buildimages.git
cd datadog-agent-buildimages
dda run build devcontainer legacy-devenv
- name: Create Dev Container config
run: dda inv -- devcontainer.setup --image legacy-devenv
- name: Ensure mount paths exist
run: |
mkdir -p ~/.ssh
- name: Install Dev Container CLI
run: npm install -g @devcontainers/cli@0.86.0
- name: Start Dev Container
run: devcontainer up --workspace-folder .
- name: Grant the datadog user access to host Docker socket
run: |
docker exec -u root datadog-agent-devcontainer sh -lc '
set -e
sock=/var/run/docker.sock
gid=$(stat -c %g "$sock")
getent group "$gid" >/dev/null || groupadd -g "$gid" dockersock
gname=$(getent group "$gid" | cut -d: -f1)
id -nG datadog | tr " " "\n" | grep -qx "$gname" || usermod -aG "$gname" datadog
'
- name: Test Agent build
run: devcontainer exec --workspace-folder . dda inv agent.hacky-dev-image-build --target-image=agent