Skip to content

Commit aaf5359

Browse files
authored
Support for Ubuntu 24.04 and Infrastructure/Config Improvements (#714)
* Enable supporting Ubuntu 24.04 Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Enable building without using GCLIB * Fix issue with finding image * Update github CI ubuntu version to 24.04 * Change user ID * Temporary disable matrix * Emit docker logs Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Update docker files to enable all access to TEST_USER Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Update scripts to enable all access to TEST_USER Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Update scripts to enable all access to TEST_USER Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Update Makefile to bypass permission issue in CI job Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Try bypass permission issue without sudo command Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Fix CI errors Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Fix CI errors Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Try bypass permission issue Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Try bypass permission issue Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Try bypass permission issue Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Try bypass permission issue Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Update publishing releases Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Try with 22.04 runner - as its used as latest in Github Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Try to resolve crash while running dcld Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Update relasing artificats Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Add docker logs Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Try light-client proxy test first Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Try to handle removing files without 'sudo' Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Try to handle removing files without 'sudo' Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Try to handle removing files without 'sudo' Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Revert some changes Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Make Ubuntu 24.04 as default OS Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Try to run integration tests on Ubuntu 22.04 Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Try to run integration tests on Ubuntu 22.04 Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Try to resolve upgrade issue Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Try to resolve upgrade to master issue Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Update netcat package Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Revert changes Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Update TEST_USER id to not conflict with default one Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Fix release.yml Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Add new upgrade integration test for v1.6.0-dev release Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Fix issue with 1.6.0 upgrade test Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Add upgrade handler Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Update 1.6.0-dev upgrade tests Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Fix issue of coverage CI job Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Actualize ansible scripts Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Add doc about Upgrading OS(Ubuntu) on running nodes Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Update doc Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Update terraform scipts due to finding while running terraform plan Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Fix azure image name Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Update applying gcp image(Ubuntu 24.04) and value of region_1 Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Update upgrade doc Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Add comment Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Update doc Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Fix typo Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Update upgrade doc Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Update upgrade doc Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Remove predefined type_name Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Enable setting up nodes with ubuntu 22.04 Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Enable releasing the 20.04 version of Ubuntu instead of 22.04 Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Update doc/desc and add TODO item Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Update GCP image filtering IAC script Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> * Fix broken link Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com> --------- Signed-off-by: Abdulbois <abdulbois.tursunov@dsr-corporation.com>
1 parent 0156879 commit aaf5359

39 files changed

Lines changed: 484 additions & 138 deletions

File tree

.github/workflows/release.yml

Lines changed: 66 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ jobs:
2929

3030
checks:
3131
name: verify release
32-
runs-on: ubuntu-latest
32+
runs-on: ubuntu-24.04
3333
outputs:
3434
included: ${{ steps.release_info.outputs.included }}
3535
matrix_os: ${{ steps.release_info.outputs.matrix_os }}
@@ -59,55 +59,58 @@ jobs:
5959
echo "$EOF"
6060
} >> "$GITHUB_OUTPUT"
6161
62-
asset_bin_url="$(echo "$release_info" \
63-
| jq -r '.assets[] | select(.name | match("^${{ env.BIN_NAME }}$")) | .browser_download_url')"
64-
echo "$asset_bin_url"
65-
66-
asset_ubuntu_tgz_url="$(echo "$release_info" \
67-
| jq -r '.assets[] | select(.name | match("^${{ env.BIN_NAME }}.ubuntu.tar.gz$")) | .browser_download_url')"
68-
echo "$asset_ubuntu_tgz_url"
69-
70-
asset_cosmovisor_url="$(echo "$release_info" \
71-
| jq -r '.assets[] | select(.name | match("^cosmovisor$")) | .browser_download_url')"
72-
echo "$asset_cosmovisor_url"
73-
7462
asset_service_url="$(echo "$release_info" \
7563
| jq -r '.assets[] | select(.name | match("^cosmovisor.service$")) | .browser_download_url')"
76-
echo "$asset_service_url"
64+
echo "service: $asset_service_url"
7765
7866
asset_service_conf_url="$(echo "$release_info" \
7967
| jq -r '.assets[] | select(.name | match("^cosmovisor.conf$")) | .browser_download_url')"
80-
echo "$asset_service_conf_url"
68+
echo "service_conf: $asset_service_conf_url"
8169
8270
asset_start_url="$(echo "$release_info" \
8371
| jq -r '.assets[] | select(.name | match("^cosmovisor_start.sh$")) | .browser_download_url')"
84-
echo "$asset_start_url"
72+
echo "start: $asset_start_url"
8573
8674
asset_preupgrade_url="$(echo "$release_info" \
8775
| jq -r '.assets[] | select(.name | match("^cosmovisor_preupgrade.sh$")) | .browser_download_url')"
88-
echo "$asset_preupgrade_url"
76+
echo "preupgrade: $asset_preupgrade_url"
8977
9078
asset_deploy_script_url="$(echo "$release_info" \
9179
| jq -r '.assets[] | select(.name | match("^run_dcl_node$")) | .browser_download_url')"
92-
echo "$asset_deploy_script_url"
93-
94-
asset_macos_tgz_url="$(echo "$release_info" \
95-
| jq -r '.assets[] | select(.name | match("^${{ env.BIN_NAME }}.macos.tar.gz$")) | .browser_download_url')"
96-
echo "$asset_macos_tgz_url"
80+
echo "deploy: $asset_deploy_script_url"
9781
9882
upload_url="$(echo "$release_info" | jq -r '.upload_url')"
99-
echo "$upload_url"
10083
echo "upload_url=$upload_url" >> "$GITHUB_OUTPUT"
10184
10285
# build json string to use later as a job matrix
10386
included=()
104-
if [[ -z "$asset_bin_url" || -z "$asset_ubuntu_tgz_url" || -z "$asset_cosmovisor_url" || -z "$asset_service_url" || -z "$asset_service_conf_url" || -z "$asset_start_url" || -z "$asset_preupgrade_url" || -z "$asset_deploy_script_url" ]]; then
105-
# os|bin-url|tgz-url|cosmovisor-url|service-file-url|service-conf-file-url|start-script-url|preupgrade-script-url|deploy-script-url|tgz-suffix
106-
included+=("ubuntu-22.04|$asset_bin_url|$asset_ubuntu_tgz_url|$asset_cosmovisor_url|$asset_service_url|$asset_service_conf_url|$asset_start_url|$asset_preupgrade_url|$asset_deploy_script_url|.ubuntu.tar.gz")
107-
fi
87+
for os in "ubuntu-20.04" "ubuntu-24.04"; do
88+
asset_bin_url="$(echo "$release_info" | jq -r ".assets[] | select(.name == \"${{ env.BIN_NAME }}-$os\") | .browser_download_url")"
89+
asset_tgz_url="$(echo "$release_info" | jq -r ".assets[] | select(.name == \"$os.tar.gz\") | .browser_download_url")"
90+
asset_cv_url="$(echo "$release_info" | jq -r ".assets[] | select(.name == \"cosmovisor-v${{ env.COSMOVISOR_VERSION }}-$os\") | .browser_download_url")"
91+
92+
# Check if we need to run the job for this OS
93+
# For 20.04, we don't care if BIN or CV are missing (we only want TGZ and common assets)
94+
if [[ -z "$asset_tgz_url" || \
95+
( "$os" == "ubuntu-24.04" && ( -z "$asset_bin_url" || -z "$asset_cv_url" ) ) || \
96+
( "$os" == "ubuntu-20.04" && ( -z "$asset_service_url" || -z "$asset_service_conf_url" || -z "$asset_start_url" || -z "$asset_preupgrade_url" || -z "$asset_deploy_script_url" ) ) ]]; then
97+
98+
# For non-20.04, we don't want to re-check/re-upload generic assets if they are being handled by 20.04 or already exist
99+
# If they are missing, 20.04 job will upload them.
100+
if [[ "$os" == "ubuntu-20.04" ]]; then
101+
# os|bin-url|tgz-url|cosmovisor-url|service-file-url|service-conf-file-url|start-script-url|preupgrade-script-url|deploy-script-url|tgz-filename
102+
included+=("$os|$asset_bin_url|$asset_tgz_url|$asset_cv_url|$asset_service_url|$asset_service_conf_url|$asset_start_url|$asset_preupgrade_url|$asset_deploy_script_url|$os.tar.gz")
103+
else
104+
included+=("$os|$asset_bin_url|$asset_tgz_url|$asset_cv_url|skip|skip|skip|skip|skip|$os.tar.gz")
105+
fi
106+
fi
107+
done
108+
109+
asset_macos_tgz_url="$(echo "$release_info" \
110+
| jq -r '.assets[] | select(.name | match("^macos.tar.gz$")) | .browser_download_url')"
108111
if [[ -z "$asset_macos_tgz_url" ]]; then
109112
# bin, service file and deploy script are not considered for macos job
110-
included+=("macos-14|-||-|-|-|-|-|-|.macos.tar.gz")
113+
included+=("macos-14|-||-|-|-|-|-|-|macos.tar.gz")
111114
fi
112115
113116
matrix_os="$(jq -ncR '
@@ -123,7 +126,7 @@ jobs:
123126
(input | split(" ")) |
124127
[ .[] | split("|") |
125128
{"os": .[0], "bin": .[1] | length, "tgz": .[2] | length, "cosmovisor": .[3] | length, "service": .[4] | length, "service_conf": .[5] |
126-
length, "start": .[6] | length, "preupgrade": .[7] | length, "deploy_script": .[8] | length, "tgz_name_suffix": .[9]} ]
129+
length, "start": .[6] | length, "preupgrade": .[7] | length, "deploy_script": .[8] | length, "tgz_filename": .[9]} ]
127130
' <<<"${included[*]}"
128131
)"
129132
echo "$included_json"
@@ -132,6 +135,7 @@ jobs:
132135
133136
shell: bash
134137

138+
135139
- name: check release published
136140
if: ${{ !steps.release_info.outputs.release_info }}
137141
run: exit 1
@@ -172,25 +176,22 @@ jobs:
172176
${{ runner.os }}-go-
173177
174178
- name: build application binary
175-
if: ${{ matrix.os != 'ubuntu-22.04' && (!matrix.bin || !matrix.tgz) }}
179+
if: ${{ !startsWith(matrix.os, 'ubuntu-') && (!matrix.bin || !matrix.tgz) }}
176180
run: |
177181
make build
178182
build/${{ env.BIN_NAME }} version
179-
180-
tar czf build/${{ env.BIN_NAME }}${{ matrix.tgz_name_suffix }} -C build ${{ env.BIN_NAME }}
181183
shell: bash
182184

183-
- name: build application and cosmovisor binary | ubuntu-22.04
184-
if: ${{ matrix.os == 'ubuntu-22.04' && (!matrix.bin || !matrix.tgz || !matrix.cosmovisor) }}
185+
- name: build application and cosmovisor binary | ubuntu
186+
if: ${{ startsWith(matrix.os, 'ubuntu-') && (!matrix.bin || !matrix.tgz || !matrix.cosmovisor) }} # TODO: When archive is not present, but bin (dcld) and/or cosmovisor are already available in the release makes sense to not rebuild the existing artifacts but rather download them
185187
run: |
186-
bash .github/workflows/ubuntu-20.04-build.sh
188+
UBUNTU_VERSION=$(echo "${{ matrix.os }}" | cut -d'-' -f2)
189+
UBUNTU_VERSION=$UBUNTU_VERSION bash .github/workflows/ubuntu-build.sh
187190
ls -la build
188-
189-
tar czf build/${{ env.BIN_NAME }}${{ matrix.tgz_name_suffix }} -C build ${{ env.BIN_NAME }}
190191
shell: bash
191192

192193
- name: upload to GitHub (application binary)
193-
if: ${{ !matrix.bin }}
194+
if: ${{ !matrix.bin && matrix.os == 'ubuntu-24.04' }}
194195
uses: actions/upload-release-asset@v1
195196
env:
196197
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -200,28 +201,43 @@ jobs:
200201
asset_name: ${{ env.BIN_NAME }}
201202
asset_content_type: application/octet-stream # TODO check for less generic type
202203

204+
- name: build cosmovisor binary
205+
if: ${{ !startsWith(matrix.os, 'ubuntu-') && (!matrix.cosmovisor || !matrix.tgz) }}
206+
run: |
207+
go install "cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@v${{ env.COSMOVISOR_VERSION }}"
208+
GOPATH="${GOPATH:-${HOME}/go}"
209+
GOBIN="${GOBIN:-${GOPATH}/bin}"
210+
cp "$GOBIN/cosmovisor" build
211+
shell: bash
212+
213+
- name: create archive with all artifacts
214+
if: ${{ !matrix.tgz }}
215+
run: |
216+
mkdir -p build/artifacts
217+
cp build/${{ env.BIN_NAME }} build/artifacts/
218+
cp build/cosmovisor build/artifacts/
219+
cp deployment/cosmovisor.service build/artifacts/
220+
cp deployment/cosmovisor.conf build/artifacts/
221+
cp deployment/ansible/roles/bootstrap/files/cosmovisor_preupgrade.sh build/artifacts/
222+
cp deployment/ansible/roles/bootstrap/files/cosmovisor_start.sh build/artifacts/
223+
cp deployment/scripts/run_dcl_node build/artifacts/
224+
225+
tar czf build/${{ matrix.tgz_filename }} -C build/artifacts .
226+
shell: bash
227+
203228
- name: upload to GitHub (archived application binary)
204229
if: ${{ !matrix.tgz }}
205230
uses: actions/upload-release-asset@v1
206231
env:
207232
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
208233
with:
209234
upload_url: ${{ needs.checks.outputs.upload_url }}
210-
asset_path: build/${{ env.BIN_NAME }}${{ matrix.tgz_name_suffix }}
211-
asset_name: ${{ env.BIN_NAME }}${{ matrix.tgz_name_suffix }}
235+
asset_path: build/${{ matrix.tgz_filename }}
236+
asset_name: ${{ matrix.tgz_filename }}
212237
asset_content_type: application/x-gtar
213238

214-
- name: build cosmovisor binary
215-
if: ${{ matrix.os != 'ubuntu-22.04' && !matrix.cosmovisor }}
216-
run: |
217-
go install "cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@v${{ env.COSMOVISOR_VERSION }}"
218-
GOPATH="${GOPATH:-${HOME}/go}"
219-
GOBIN="${GOBIN:-${GOPATH}/bin}"
220-
cp "$GOBIN/cosmovisor" build
221-
shell: bash
222-
223239
- name: upload to GitHub (cosmovisor binary)
224-
if: ${{ !matrix.cosmovisor }}
240+
if: ${{ !matrix.cosmovisor && matrix.os == 'ubuntu-24.04' }}
225241
uses: actions/upload-release-asset@v1
226242
env:
227243
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,11 @@ _GO_ROOT_BIN="$_GO_ROOT/bin"
4444
chown -R "$(id -u):$(id -g)" "$BUILD_DIR"
4545
EOF
4646

47+
UBUNTU_VERSION="${UBUNTU_VERSION:-24.04}"
4748

4849
docker run --rm -w "$PWD" \
4950
-e GOROOT="$_GO_ROOT" \
5051
-e HOME="$_HOME" \
5152
-v "$HOME":"$_HOME" \
5253
-v "$GO_ROOT:$_GO_ROOT" \
53-
ubuntu:20.04 bash -c "$script"
54+
ubuntu:${UBUNTU_VERSION} bash -c "$script"

.github/workflows/verify.yml

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ on:
2828
jobs:
2929
changes:
3030
name: Check for changes
31-
runs-on: ubuntu-latest
31+
runs-on: ubuntu-24.04
3232
outputs:
3333
go: ${{ steps.filter.outputs.go }}
3434
src: ${{ steps.filter.outputs.src }}
@@ -56,7 +56,7 @@ jobs:
5656
gh-actions:
5757
if: needs.changes.outputs.workflows == 'true'
5858
name: Run actionlint tool to verify lint issues in GitHub actions
59-
runs-on: ubuntu-latest
59+
runs-on: ubuntu-24.04
6060
needs:
6161
- changes
6262
steps:
@@ -65,7 +65,7 @@ jobs:
6565
links:
6666
if: needs.changes.outputs.docs == 'true'
6767
name: Run markdown-link-check tool to verify link issues
68-
runs-on: ubuntu-latest
68+
runs-on: ubuntu-24.04
6969
needs:
7070
- changes
7171
steps:
@@ -77,15 +77,15 @@ jobs:
7777
spell:
7878
if: needs.changes.outputs.docs == 'true'
7979
name: Run PySpelling tool to verify spelling issues
80-
runs-on: ubuntu-latest
80+
runs-on: ubuntu-24.04
8181
needs:
8282
- changes
8383
steps:
8484
- uses: actions/checkout@v4
8585
- uses: rojopolis/spellcheck-github-actions@0.35.0
8686
unit-tests:
8787
name: Check unit tests
88-
runs-on: ubuntu-latest
88+
runs-on: ubuntu-24.04
8989
needs:
9090
- lint
9191
steps:
@@ -119,7 +119,7 @@ jobs:
119119
integration-tests:
120120
if: needs.changes.outputs.src == 'true'
121121
name: Integration tests
122-
runs-on: ubuntu-22.04
122+
runs-on: ubuntu-24.04
123123
needs:
124124
- changes
125125
steps:
@@ -140,6 +140,7 @@ jobs:
140140
run: integration_tests/run-all.sh all cover
141141
env:
142142
GH_TOKEN: ${{ secrets.GH_TOKEN }}
143+
UBUNTU_VERSION: ${{ 24.04 }}
143144
GOCOVER_MODE: set # Ensure integration tests use the same mode as unit tests
144145
- name: Generate test coverage
145146
shell: bash
@@ -152,7 +153,7 @@ jobs:
152153
lint:
153154
if: needs.changes.outputs.go == 'true'
154155
name: Check linter issues with golangci-lint tool
155-
runs-on: ubuntu-latest
156+
runs-on: ubuntu-24.04
156157
needs:
157158
- changes
158159
steps:
@@ -172,7 +173,7 @@ jobs:
172173
- changes
173174
- unit-tests
174175
- integration-tests
175-
runs-on: ubuntu-22.04
176+
runs-on: ubuntu-24.04
176177
steps:
177178
- uses: actions/checkout@v4
178179
- uses: actions/download-artifact@v4
@@ -220,7 +221,7 @@ jobs:
220221
- spell
221222
- gh-actions
222223
- cover
223-
runs-on: ubuntu-latest
224+
runs-on: ubuntu-24.04
224225
steps:
225226
- name: Decide whether the needed jobs succeeded or failed
226227
uses: re-actors/alls-green@release/v1

Dockerfile

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919
############################
2020
# STEP 1 build cosmovisor
2121
############################
22-
FROM ubuntu:20.04 AS builder
22+
ARG UBUNTU_VERSION=24.04
23+
FROM ubuntu:${UBUNTU_VERSION} AS builder
2324

2425
ARG GO_VERSION
2526
ENV GO_VERSION=1.20
@@ -41,10 +42,13 @@ RUN go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@v1.5.0
4142
############################
4243
# STEP 2 build node image
4344
############################
44-
FROM ubuntu:20.04
45+
ARG UBUNTU_VERSION=24.04
46+
FROM ubuntu:${UBUNTU_VERSION}
4547

4648
COPY --from=builder /go/bin/cosmovisor /usr/bin/
4749

50+
RUN apt-get update && apt-get install -y adduser ca-certificates sudo && update-ca-certificates
51+
4852
# test user
4953
ARG TEST_USER
5054
ENV TEST_USER=${TEST_USER:-dcl}
@@ -56,16 +60,16 @@ ARG TEST_UID
5660
ENV TEST_UID=${TEST_UID:-1000}
5761
#ARG gid=1000
5862
RUN adduser --disabled-password --uid ${TEST_UID} --home /var/lib/${TEST_USER} --gecos 'DCLedger user' ${TEST_USER}
63+
RUN usermod -aG sudo ${TEST_USER} \
64+
&& echo "${TEST_USER} ALL=(ALL:ALL) NOPASSWD:ALL" >>/etc/sudoers
65+
5966
ENV DAEMON_HOME=/var/lib/${TEST_USER}/.dcl
6067
ENV DAEMON_NAME=dcld
6168
ENV DAEMON_ALLOW_DOWNLOAD_BINARIES=true
6269
ENV COSMOVISOR_CUSTOM_PREUPGRADE=cosmovisor_preupgrade.sh
6370
ENV GOCOVERDIR=/var/lib/${TEST_USER}/.dcl/gocover
6471

65-
RUN apt-get update
66-
RUN apt-get install -y ca-certificates
67-
68-
RUN update-ca-certificates
72+
RUN mkdir -p /var/lib/${TEST_USER} && chown -R ${TEST_USER}:${TEST_USER} /var/lib/${TEST_USER}
6973

7074
VOLUME /var/lib/${TEST_USER}
7175

@@ -75,9 +79,9 @@ STOPSIGNAL SIGTERM
7579

7680
USER ${TEST_USER}
7781

78-
COPY integration_tests/node_helper.sh /var/lib/${TEST_USER}/
79-
COPY deployment/ansible/roles/bootstrap/files/cosmovisor_start.sh /var/lib/${TEST_USER}/
80-
COPY deployment/ansible/roles/bootstrap/files/cosmovisor_preupgrade.sh /var/lib/${TEST_USER}/
82+
COPY --chown=${TEST_USER}:${TEST_USER} integration_tests/node_helper.sh /var/lib/${TEST_USER}/
83+
COPY --chown=${TEST_USER}:${TEST_USER} deployment/ansible/roles/bootstrap/files/cosmovisor_start.sh /var/lib/${TEST_USER}/
84+
COPY --chown=${TEST_USER}:${TEST_USER} deployment/ansible/roles/bootstrap/files/cosmovisor_preupgrade.sh /var/lib/${TEST_USER}/
8185

8286
ENV PATH=$PATH:${DAEMON_HOME}/cosmovisor/current/bin
8387

Dockerfile-build

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717
# The resulting image is used only for getting the build artifact from
1818
# a container based on it. Containers based on this image are never run.
1919
################################################################################
20-
FROM ubuntu:20.04 AS builder
20+
ARG UBUNTU_VERSION=24.04
21+
FROM ubuntu:${UBUNTU_VERSION} AS builder
2122

2223
ARG GO_VERSION
2324
ENV GO_VERSION=1.20
@@ -49,4 +50,4 @@ ARG DCL_VERSION
4950
ARG DCL_COMMIT
5051
ARG GOCOVER
5152
ENV GOCOVER=${GOCOVER}
52-
RUN LEDGER_ENABLED=false make
53+
RUN LEDGER_ENABLED=false make

0 commit comments

Comments
 (0)