Upload artifacts to S3; first attempt at Gitea releases #52

Merged
Jef Roosens merged 16 commits from gitea-releases into dev 2022-01-22 22:27:27 +01:00
3 changed files with 79 additions and 8 deletions

View File

@ -5,26 +5,61 @@ matrix:
- linux/arm/v7 - linux/arm/v7
# These checks already get performed on the feature branches # These checks already get performed on the feature branches
branches:
exclude: [ main, dev ]
platform: ${PLATFORM} platform: ${PLATFORM}
pipeline: pipeline:
# The default build isn't needed, as alpine switches to gcc for the compiler anyways # The default build isn't needed, as alpine switches to gcc for the compiler anyways
debug: debug:
image: 'chewingbever/vlang:latest' image: 'chewingbever/vlang:latest'
pull: true
group: 'build' group: 'build'
commands: commands:
- make debug - make debug
when:
event: push
prod: prod:
image: 'chewingbever/vlang:latest' image: 'chewingbever/vlang:latest'
pull: true
environment: environment:
- LDFLAGS=-lz -lbz2 -llzma -lexpat -lzstd -llz4 -static - LDFLAGS=-lz -lbz2 -llzma -lexpat -lzstd -llz4 -static
group: 'build' group: 'build'
commands: commands:
- make prod - make prod
# Make sure the binary is actually static # Make sure the binary is actually statically built
- readelf -d pvieter - readelf -d pvieter
- du -h pvieter - du -h pvieter
- '[ "$(readelf -d pvieter | grep NEEDED | wc -l)" = 0 ]' - '[ "$(readelf -d pvieter | grep NEEDED | wc -l)" = 0 ]'
# This removes so much, it's amazing
- strip -s pvieter
- du -h pvieter
when:
event: push
upload:
image: 'alpine:latest'
secrets: [ s3_username, s3_password ]
commands:
# We should just add this to the builder image instead
- apk add curl openssl
# https://gist.github.com/JustinTimperio/7c7115f87b775618637d67ac911e595f
- export URL=s3.rustybever.be
- export OBJ_PATH="/vieter/commits/$CI_COMMIT_SHA/vieter-$(echo '${PLATFORM}' | sed 's:/:-:g')"
- export DATE="$(date -R --utc)"
- export CONTENT_TYPE='application/zstd'
- export SIG_STRING="PUT\n\n$CONTENT_TYPE\n$DATE\n$OBJ_PATH"
- export SIGNATURE=`echo -en $SIG_STRING | openssl sha1 -hmac $S3_PASSWORD -binary | base64`
- >
curl
--silent
-XPUT
-T pvieter
-H "Host: $URL"
-H "Date: $DATE"
-H "Content-Type: $CONTENT_TYPE"
-H "Authorization: AWS $S3_USERNAME:$SIGNATURE"
https://$URL$OBJ_PATH
when:
event: push

View File

@ -6,12 +6,8 @@ platform: linux/amd64
pipeline: pipeline:
lint: lint:
image: 'chewingbever/vlang:latest' image: 'chewingbever/vlang:latest'
pull: true
group: lint group: lint
commands: commands:
- make lint - make lint
vet:
image: 'chewingbever/vlang:latest'
group: lint
commands:
- make vet - make vet

View File

@ -0,0 +1,40 @@
# Yeah so this only works on tags so we'll worry about this later
platform: linux/amd64
branches: main
# We need the entire repo in order for the release names to work
skip_clone: true
pipeline:
prepare:
image: 'chewingbever/vlang:latest'
secrets: [ s3_username, s3_password ]
commands:
- git clone "$CI_REPO_REMOTE" .
- git checkout "$CI_COMMIT_BRANCH"
# Write the title to a file that the plugin can then read
- echo "$(git describe --tags --abbrev=0 2> /dev/null || echo '0.0.0')-$(git rev-list --count ^dev)" > title
- cat title
- wget https://dl.min.io/client/mc/release/linux-amd64/mc
- chmod +x mc
- ./mc alias set s3/ https://s3.rustybever.be "$S3_USERNAME" "$S3_PASSWORD"
- ./mc cp -r "s3/vieter/commits/$CI_COMMIT_SHA" assets
release:
image: 'plugins/gitea-release'
secrets:
- gitea_release_api_key
settings:
base_url: https://git.rustybever.be
files: assets/*
checksums:
- md5
- sha256
prerelease: true
# This should get read in as a file
title: title
when:
event: push
depends_on:
- build