forked from vieter-v/vieter
				
			Merge pull request 'Upload artifacts to S3; first attempt at Gitea releases' (#52) from gitea-releases into dev
Reviewed-on: Chewing_Bever/vieter#52main
						commit
						d357f8ebbf
					
				| 
						 | 
					@ -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
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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
 | 
				
			||||||
		Loading…
	
		Reference in New Issue