M .builds/c-enabled.yml => .builds/c-enabled.yml +49 -2
@@ 6,6 6,10 @@ packages:
- protobuf-compiler
- cmake
- build-essential
+ - unzip
+secrets:
+ - 7dde4219-0783-4581-a67d-c94749de3600 # ~/.s3-cache-key-id
+ - 0e5b3530-6f19-4f30-9b73-9339dd382e46 # ~/.s3-cache-key-secret
sources:
- https://git.srht.bigb.es/~bigbes/tarantool-protobuf
environment:
@@ 14,6 18,9 @@ environment:
GO_VERSION: "1.26.3"
PATH: /home/build/.local/go/bin:/home/build/.local/bin:/home/build/go/bin:/usr/local/bin:/usr/bin:/bin
PB_ENABLE_C: "1"
+ AWS_DEFAULT_REGION: garage
+ AWS_ENDPOINT_URL: https://s3.bigb.es
+ S3_BUCKET: docker-cache
submitter:
git.sr.ht:
enabled: true
@@ 21,10 28,50 @@ submitter:
- refs/heads/master
- "refs/tags/*"
tasks:
+ - install_awscli: |
+ curl -sSL "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" \
+ -o /tmp/awscliv2.zip
+ unzip -q /tmp/awscliv2.zip -d /tmp
+ sudo /tmp/aws/install
+ aws --version
+ - aws_credentials: |
+ mkdir -p ~/.aws
+ cat > ~/.aws/config <<EOF
+ [default]
+ region = $AWS_DEFAULT_REGION
+ s3 =
+ addressing_style = path
+ signature_version = s3v4
+ EOF
+ echo 'export AWS_REQUEST_CHECKSUM_CALCULATION=when_required' >> ~/.buildenv
+ echo 'export AWS_RESPONSE_CHECKSUM_VALIDATION=when_required' >> ~/.buildenv
+ set +x
+ export AWS_ACCESS_KEY_ID=$(tr -d '[:space:]' < ~/.s3-cache-key-id)
+ export AWS_SECRET_ACCESS_KEY=$(tr -d '[:space:]' < ~/.s3-cache-key-secret)
+ {
+ printf 'export AWS_ACCESS_KEY_ID=%q\n' "$AWS_ACCESS_KEY_ID"
+ printf 'export AWS_SECRET_ACCESS_KEY=%q\n' "$AWS_SECRET_ACCESS_KEY"
+ } >> ~/.buildenv
+ set -x
+ aws --endpoint-url="$AWS_ENDPOINT_URL" s3 ls "s3://$S3_BUCKET/" >/dev/null
- install_go: |
+ GO_TARBALL="go${GO_VERSION}.linux-amd64.tar.gz"
+ GO_KEY="golang/$GO_TARBALL"
+ GO_URI="s3://$S3_BUCKET/$GO_KEY"
mkdir -p ~/.local
- curl -sSL "https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz" \
- | tar -xz -C ~/.local
+ if aws --endpoint-url="$AWS_ENDPOINT_URL" s3api head-object \
+ --bucket "$S3_BUCKET" --key "$GO_KEY" >/dev/null 2>&1; then
+ echo "Cache HIT — pulling Go from S3"
+ aws --endpoint-url="$AWS_ENDPOINT_URL" s3 cp "$GO_URI" - \
+ | tar -xz -C ~/.local
+ else
+ echo "Cache MISS — downloading from go.dev and caching"
+ curl -sSL --retry 3 --retry-delay 5 --max-time 300 \
+ "https://go.dev/dl/$GO_TARBALL" -o "/tmp/$GO_TARBALL"
+ tar -xz -C ~/.local -f "/tmp/$GO_TARBALL"
+ aws --endpoint-url="$AWS_ENDPOINT_URL" s3 cp "/tmp/$GO_TARBALL" "$GO_URI"
+ rm "/tmp/$GO_TARBALL"
+ fi
go version
- install_tarantool: |
curl -L https://tarantool.io/release/3/installer.sh | sudo bash
M .builds/conformance.yml => .builds/conformance.yml +16 -2
@@ 69,9 69,23 @@ tasks:
set -x
aws --endpoint-url="$AWS_ENDPOINT_URL" s3 ls "s3://$S3_BUCKET/" >/dev/null
- install_go: |
+ GO_TARBALL="go${GO_VERSION}.linux-amd64.tar.gz"
+ GO_KEY="golang/$GO_TARBALL"
+ GO_URI="s3://$S3_BUCKET/$GO_KEY"
mkdir -p ~/.local
- curl -sSL "https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz" \
- | tar -xz -C ~/.local
+ if aws --endpoint-url="$AWS_ENDPOINT_URL" s3api head-object \
+ --bucket "$S3_BUCKET" --key "$GO_KEY" >/dev/null 2>&1; then
+ echo "Cache HIT — pulling Go from S3"
+ aws --endpoint-url="$AWS_ENDPOINT_URL" s3 cp "$GO_URI" - \
+ | tar -xz -C ~/.local
+ else
+ echo "Cache MISS — downloading from go.dev and caching"
+ curl -sSL --retry 3 --retry-delay 5 --max-time 300 \
+ "https://go.dev/dl/$GO_TARBALL" -o "/tmp/$GO_TARBALL"
+ tar -xz -C ~/.local -f "/tmp/$GO_TARBALL"
+ aws --endpoint-url="$AWS_ENDPOINT_URL" s3 cp "/tmp/$GO_TARBALL" "$GO_URI"
+ rm "/tmp/$GO_TARBALL"
+ fi
go version
- install_tarantool: |
curl -L https://tarantool.io/release/3/installer.sh | sudo bash
M .builds/pure-lua.yml => .builds/pure-lua.yml +49 -2
@@ 6,6 6,10 @@ packages:
- protobuf-compiler
- cmake
- build-essential
+ - unzip
+secrets:
+ - 7dde4219-0783-4581-a67d-c94749de3600 # ~/.s3-cache-key-id
+ - 0e5b3530-6f19-4f30-9b73-9339dd382e46 # ~/.s3-cache-key-secret
sources:
- https://git.srht.bigb.es/~bigbes/tarantool-protobuf
environment:
@@ 13,6 17,9 @@ environment:
GOROOT: /home/build/.local/go
GO_VERSION: "1.26.3"
PATH: /home/build/.local/go/bin:/home/build/.local/bin:/home/build/go/bin:/usr/local/bin:/usr/bin:/bin
+ AWS_DEFAULT_REGION: garage
+ AWS_ENDPOINT_URL: https://s3.bigb.es
+ S3_BUCKET: docker-cache
submitter:
git.sr.ht:
enabled: true
@@ 20,10 27,50 @@ submitter:
- refs/heads/master
- "refs/tags/*"
tasks:
+ - install_awscli: |
+ curl -sSL "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" \
+ -o /tmp/awscliv2.zip
+ unzip -q /tmp/awscliv2.zip -d /tmp
+ sudo /tmp/aws/install
+ aws --version
+ - aws_credentials: |
+ mkdir -p ~/.aws
+ cat > ~/.aws/config <<EOF
+ [default]
+ region = $AWS_DEFAULT_REGION
+ s3 =
+ addressing_style = path
+ signature_version = s3v4
+ EOF
+ echo 'export AWS_REQUEST_CHECKSUM_CALCULATION=when_required' >> ~/.buildenv
+ echo 'export AWS_RESPONSE_CHECKSUM_VALIDATION=when_required' >> ~/.buildenv
+ set +x
+ export AWS_ACCESS_KEY_ID=$(tr -d '[:space:]' < ~/.s3-cache-key-id)
+ export AWS_SECRET_ACCESS_KEY=$(tr -d '[:space:]' < ~/.s3-cache-key-secret)
+ {
+ printf 'export AWS_ACCESS_KEY_ID=%q\n' "$AWS_ACCESS_KEY_ID"
+ printf 'export AWS_SECRET_ACCESS_KEY=%q\n' "$AWS_SECRET_ACCESS_KEY"
+ } >> ~/.buildenv
+ set -x
+ aws --endpoint-url="$AWS_ENDPOINT_URL" s3 ls "s3://$S3_BUCKET/" >/dev/null
- install_go: |
+ GO_TARBALL="go${GO_VERSION}.linux-amd64.tar.gz"
+ GO_KEY="golang/$GO_TARBALL"
+ GO_URI="s3://$S3_BUCKET/$GO_KEY"
mkdir -p ~/.local
- curl -sSL "https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz" \
- | tar -xz -C ~/.local
+ if aws --endpoint-url="$AWS_ENDPOINT_URL" s3api head-object \
+ --bucket "$S3_BUCKET" --key "$GO_KEY" >/dev/null 2>&1; then
+ echo "Cache HIT — pulling Go from S3"
+ aws --endpoint-url="$AWS_ENDPOINT_URL" s3 cp "$GO_URI" - \
+ | tar -xz -C ~/.local
+ else
+ echo "Cache MISS — downloading from go.dev and caching"
+ curl -sSL --retry 3 --retry-delay 5 --max-time 300 \
+ "https://go.dev/dl/$GO_TARBALL" -o "/tmp/$GO_TARBALL"
+ tar -xz -C ~/.local -f "/tmp/$GO_TARBALL"
+ aws --endpoint-url="$AWS_ENDPOINT_URL" s3 cp "/tmp/$GO_TARBALL" "$GO_URI"
+ rm "/tmp/$GO_TARBALL"
+ fi
go version
- install_tarantool: |
curl -L https://tarantool.io/release/3/installer.sh | sudo bash