[CI] read STORED_VERSION_FILE if available
This commit is contained in:
		
							parent
							
								
									206d0b3886
								
							
						
					
					
						commit
						af74085ebf
					
				
					 6 changed files with 41 additions and 11 deletions
				
			
		| 
						 | 
					@ -130,7 +130,7 @@ runs:
 | 
				
			||||||
          binary="${{ inputs.binary-name }}-${{ inputs.tag-version }}-linux"
 | 
					          binary="${{ inputs.binary-name }}-${{ inputs.tag-version }}-linux"
 | 
				
			||||||
          docker cp forgejo-$arch:${{ inputs.binary-path }} $binary-$arch
 | 
					          docker cp forgejo-$arch:${{ inputs.binary-path }} $binary-$arch
 | 
				
			||||||
          chmod +x $binary-$arch
 | 
					          chmod +x $binary-$arch
 | 
				
			||||||
          # the displayed version is converted with - sometime changed into +, deal with it
 | 
					          # the displayed version has a + instead of the first -, deal with it
 | 
				
			||||||
          pattern=$(echo "${{ inputs.tag-version }}" | tr - .)
 | 
					          pattern=$(echo "${{ inputs.tag-version }}" | tr - .)
 | 
				
			||||||
          if ! ./$binary-$arch --version | grep "$pattern" ; then
 | 
					          if ! ./$binary-$arch --version | grep "$pattern" ; then
 | 
				
			||||||
            echo "ERROR: expected version pattern $pattern not found in the output of $binary-$arch --version"
 | 
					            echo "ERROR: expected version pattern $pattern not found in the output of $binary-$arch --version"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										3
									
								
								.forgejo/testdata/build-release/Dockerfile
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								.forgejo/testdata/build-release/Dockerfile
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,3 @@
 | 
				
			||||||
 | 
					FROM public.ecr.aws/docker/library/alpine:3.18
 | 
				
			||||||
 | 
					RUN mkdir -p /app/gitea
 | 
				
			||||||
 | 
					RUN ( echo '#!/bin/sh' ; echo "echo forgejo v1.2.3" ) > /app/gitea/gitea ; chmod +x /app/gitea/gitea
 | 
				
			||||||
							
								
								
									
										5
									
								
								.forgejo/testdata/build-release/Makefile
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								.forgejo/testdata/build-release/Makefile
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,5 @@
 | 
				
			||||||
 | 
					VERSION ?= $(shell cat VERSION 2>/dev/null)
 | 
				
			||||||
 | 
					sources-tarbal:
 | 
				
			||||||
 | 
						mkdir -p dist/release
 | 
				
			||||||
 | 
						echo $(VERSION) > VERSION
 | 
				
			||||||
 | 
						sources=forgejo-src-$(VERSION).tar.gz ; tar --transform 's|^./|forgejo-src-$(VERSION)/|' -czf dist/release/forgejo-src-$(VERSION).tar.gz . ; cd dist/release ; shasum -a 256 $$sources > $$sources.sha256
 | 
				
			||||||
| 
						 | 
					@ -49,17 +49,11 @@ jobs:
 | 
				
			||||||
          #
 | 
					          #
 | 
				
			||||||
          # Create a new project with a fake forgejo and the release workflow only
 | 
					          # Create a new project with a fake forgejo and the release workflow only
 | 
				
			||||||
          #
 | 
					          #
 | 
				
			||||||
 | 
					          cp -a .forgejo/testdata/build-release/* $dir
 | 
				
			||||||
          mkdir -p $dir/.forgejo/workflows
 | 
					          mkdir -p $dir/.forgejo/workflows
 | 
				
			||||||
          cp .forgejo/workflows/build-release.yml $dir/.forgejo/workflows
 | 
					          cp .forgejo/workflows/build-release.yml $dir/.forgejo/workflows
 | 
				
			||||||
          cp -a .forgejo/actions $dir/.forgejo/actions
 | 
					          cp -a .forgejo/actions $dir/.forgejo/actions
 | 
				
			||||||
          cat > $dir/Dockerfile <<EOF
 | 
					 | 
				
			||||||
          FROM docker.io/library/alpine:3.18
 | 
					 | 
				
			||||||
          RUN mkdir -p /app/gitea
 | 
					 | 
				
			||||||
          RUN ( echo '#!/bin/sh' ; echo "echo forgejo v$version" ) > /app/gitea/gitea ; chmod +x /app/gitea/gitea
 | 
					 | 
				
			||||||
          EOF
 | 
					 | 
				
			||||||
          cp $dir/Dockerfile $dir/Dockerfile.rootless
 | 
					          cp $dir/Dockerfile $dir/Dockerfile.rootless
 | 
				
			||||||
          sources=forgejo-src-$version.tar.gz
 | 
					 | 
				
			||||||
          ( echo 'sources-tarbal:' ; echo -e '\tmkdir -p dist/release ; cd dist/release ; sources=forgejo-src-$(VERSION).tar.gz ; echo sources > $$sources ; shasum -a 256 $$sources > $$sources.sha256' ) > $dir/Makefile
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
          forgejo-test-helper.sh push $dir $url root forgejo |& tee $dir/pushed
 | 
					          forgejo-test-helper.sh push $dir $url root forgejo |& tee $dir/pushed
 | 
				
			||||||
          eval $(grep '^sha=' < $dir/pushed)
 | 
					          eval $(grep '^sha=' < $dir/pushed)
 | 
				
			||||||
| 
						 | 
					@ -96,6 +90,7 @@ jobs:
 | 
				
			||||||
            done
 | 
					            done
 | 
				
			||||||
          done
 | 
					          done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          sources=forgejo-src-$version.tar.gz
 | 
				
			||||||
          curl --fail -L -sS $url/root/forgejo/releases/download/v$version/$sources > $sources
 | 
					          curl --fail -L -sS $url/root/forgejo/releases/download/v$version/$sources > $sources
 | 
				
			||||||
          curl --fail -L -sS $url/root/forgejo/releases/download/v$version/$sources.sha256 > $sources.sha256
 | 
					          curl --fail -L -sS $url/root/forgejo/releases/download/v$version/$sources.sha256 > $sources.sha256
 | 
				
			||||||
          shasum -a 256 --check $sources.sha256
 | 
					          shasum -a 256 --check $sources.sha256
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -66,10 +66,31 @@ jobs:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      - name: Build sources
 | 
					      - name: Build sources
 | 
				
			||||||
        run: |
 | 
					        run: |
 | 
				
			||||||
 | 
					          set -x
 | 
				
			||||||
          apt-get -qq install -y make
 | 
					          apt-get -qq install -y make
 | 
				
			||||||
          make VERSION=${{ steps.tag-version.outputs.value }} sources-tarbal
 | 
					          version=${{ steps.tag-version.outputs.value }}
 | 
				
			||||||
 | 
					          make VERSION=$version sources-tarbal
 | 
				
			||||||
          mv dist/release release
 | 
					          mv dist/release release
 | 
				
			||||||
          find release | grep tar.gz # sanity check to fail fast
 | 
					
 | 
				
			||||||
 | 
					          #
 | 
				
			||||||
 | 
					          # Sanity check to verify that the source tarbal knows the
 | 
				
			||||||
 | 
					          # version and is able to rebuild itself from it.
 | 
				
			||||||
 | 
					          #
 | 
				
			||||||
 | 
					          # When in sources the version is determined with git.
 | 
				
			||||||
 | 
					          # When in the tarbal the version is determined from a VERSION file.
 | 
				
			||||||
 | 
					          #
 | 
				
			||||||
 | 
					          (
 | 
				
			||||||
 | 
					            tmp=$(mktemp -d)
 | 
				
			||||||
 | 
					            tar --directory $tmp -zxvf release/*$version*.tar.gz
 | 
				
			||||||
 | 
					            cd $tmp/*
 | 
				
			||||||
 | 
					            make sources-tarbal
 | 
				
			||||||
 | 
					            tarbal=$(echo dist/release/*$version*.tar.gz)
 | 
				
			||||||
 | 
					            if ! test -f $tarbal ; then
 | 
				
			||||||
 | 
					              echo $tarbal does not exist
 | 
				
			||||||
 | 
					              find dist release
 | 
				
			||||||
 | 
					              exit 1
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					          )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      - name: build container & release (when TOKEN secret is not set)
 | 
					      - name: build container & release (when TOKEN secret is not set)
 | 
				
			||||||
        if: ${{ secrets.TOKEN == '' }}
 | 
					        if: ${{ secrets.TOKEN == '' }}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										8
									
								
								Makefile
									
										
									
									
									
								
							
							
						
						
									
										8
									
								
								Makefile
									
										
									
									
									
								
							| 
						 | 
					@ -79,7 +79,13 @@ endif
 | 
				
			||||||
STORED_VERSION_FILE := VERSION
 | 
					STORED_VERSION_FILE := VERSION
 | 
				
			||||||
HUGO_VERSION ?= 0.111.3
 | 
					HUGO_VERSION ?= 0.111.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GITEA_VERSION ?= $(shell git describe --tags --always | sed 's/-/+/' | sed 's/^v//')
 | 
					
 | 
				
			||||||
 | 
					STORED_VERSION=$(shell cat $(STORED_VERSION_FILE) 2>/dev/null)
 | 
				
			||||||
 | 
					ifneq ($(STORED_VERSION),)
 | 
				
			||||||
 | 
					  GITEA_VERSION ?= $(STORED_VERSION)
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					  GITEA_VERSION ?= $(shell git describe --tags --always | sed 's/-/+/' | sed 's/^v//')
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
VERSION = ${GITEA_VERSION}
 | 
					VERSION = ${GITEA_VERSION}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LDFLAGS := $(LDFLAGS) -X "main.MakeVersion=$(MAKE_VERSION)" -X "main.Version=$(GITEA_VERSION)" -X "main.Tags=$(TAGS)"
 | 
					LDFLAGS := $(LDFLAGS) -X "main.MakeVersion=$(MAKE_VERSION)" -X "main.Version=$(GITEA_VERSION)" -X "main.Tags=$(TAGS)"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue