diff --git a/.woodpecker/.build.yml b/.woodpecker/.build.yml index 4b87f8b3..516fb206 100644 --- a/.woodpecker/.build.yml +++ b/.woodpecker/.build.yml @@ -5,26 +5,61 @@ matrix: - linux/arm/v7 # These checks already get performed on the feature branches -branches: - exclude: [ main, dev ] platform: ${PLATFORM} pipeline: # The default build isn't needed, as alpine switches to gcc for the compiler anyways debug: image: 'chewingbever/vlang:latest' + pull: true group: 'build' commands: - make debug + when: + event: push prod: image: 'chewingbever/vlang:latest' + pull: true environment: - LDFLAGS=-lz -lbz2 -llzma -lexpat -lzstd -llz4 -static group: 'build' commands: - make prod - # Make sure the binary is actually static + # Make sure the binary is actually statically built - readelf -d pvieter - du -h pvieter - '[ "$(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 diff --git a/.woodpecker/.lint.yml b/.woodpecker/.lint.yml index 1ccd0777..ce000cda 100644 --- a/.woodpecker/.lint.yml +++ b/.woodpecker/.lint.yml @@ -6,12 +6,8 @@ platform: linux/amd64 pipeline: lint: image: 'chewingbever/vlang:latest' + pull: true group: lint commands: - make lint - - vet: - image: 'chewingbever/vlang:latest' - group: lint - commands: - make vet diff --git a/.woodpecker/.release.yml b/.woodpecker/.release.yml new file mode 100644 index 00000000..9da27be7 --- /dev/null +++ b/.woodpecker/.release.yml @@ -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