name: Release Build on: push: tags: - v* jobs: # create-release: # runs-on: ubuntu-latest # container: # # image: golang:1.21 # image: ${{ secrets.DOCKERHUB_USERNAME }}/my-build-golang-runner:latest # needs: create-release-branch # steps: # - name: Checkout repository # run: | # git clone https://oauth2:${{ secrets.GITEATOKEN }}@direct-dev.ru/gitea/GiteaAdmin/hello_gitea.git hello_gitea # cd hello_gitea # git checkout ${{ github.ref }} # - name: Setup Go # run: | # # Install jq for JSON parsing # apt-get update && apt-get install -y jq # git --version # go version # jq --version # - name: Build all binaries # run: | # cd hello_gitea # mkdir -p bin # # Build for all platforms # GOOS=linux GOARCH=amd64 go build -o bin/hello-api-linux-amd64 main.go # GOOS=linux GOARCH=arm64 go build -o bin/hello-api-linux-arm64 main.go # GOOS=windows GOARCH=amd64 go build -o bin/hello-api-windows-amd64.exe main.go # GOOS=darwin GOARCH=amd64 go build -o bin/hello-api-darwin-amd64 main.go # GOOS=darwin GOARCH=arm64 go build -o bin/hello-api-darwin-arm64 main.go # # Create archives # cd bin # tar -czf hello-api-linux-amd64.tar.gz hello-api-linux-amd64 # tar -czf hello-api-linux-arm64.tar.gz hello-api-linux-arm64 # tar -czf hello-api-windows-amd64.tar.gz hello-api-windows-amd64.exe # tar -czf hello-api-darwin-amd64.tar.gz hello-api-darwin-amd64 # tar -czf hello-api-darwin-arm64.tar.gz hello-api-darwin-arm64 # ls -la # - name: Create Release # run: | # cd hello_gitea # # Create release using Gitea API # curl -X POST \ # -H "Authorization: token ${{ secrets.GITEATOKEN }}" \ # -H "Content-Type: application/json" \ # -d '{ # "tag_name": "${{ github.ref_name }}", # "name": "Release ${{ github.ref_name }}", # "body": "Automated release with multi-platform binaries and Docker image", # "draft": false, # "prerelease": false # }' \ # "https://direct-dev.ru/gitea/api/v1/repos/GiteaAdmin/hello_gitea/releases" # # Upload assets # RELEASE_ID=$(curl -s -H "Authorization: token ${{ secrets.GITEATOKEN }}" \ # "https://direct-dev.ru/gitea/api/v1/repos/GiteaAdmin/hello_gitea/releases/tags/${{ github.ref_name }}" | \ # jq -r '.id') # # Upload all binaries # for file in bin/*.tar.gz; do # echo "Uploading $file..." # curl -X POST \ # -H "Authorization: token ${{ secrets.GITEATOKEN }}" \ # -H "Content-Type: application/octet-stream" \ # --data-binary @$file \ # "https://direct-dev.ru/gitea/api/v1/repos/GiteaAdmin/hello_gitea/releases/$RELEASE_ID/assets?name=$(basename $file)" # done # create-docker-image: # runs-on: ubuntu-latest # container: # image: docker:28.3.2-dind # needs: create-release # steps: # - name: Checkout repository # run: | # # Install git # apk add --no-cache git # echo "=== GitHub Variables ===" # echo "github.ref = ${{ github.ref }}" # echo "github.ref_name = ${{ github.ref_name }}" # echo "github.sha = ${{ github.sha }}" # echo "github.repository = ${{ github.repository }}" # echo "========================" # git clone https://oauth2:${{ secrets.GITEATOKEN }}@direct-dev.ru/gitea/GiteaAdmin/hello_gitea.git hello_gitea # cd hello_gitea # git checkout ${{ github.ref }} # - name: Setup Docker Buildx # run: | # # Docker is already installed in docker:dind image # docker --version # # Setup Docker Buildx for multi-platform builds # docker buildx create --use # docker buildx inspect --bootstrap # - name: Login to Docker Hub # run: | # echo ${{ secrets.DOCKERHUB_TOKEN }} | docker login -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin # - name: Build multi-platform Docker images # run: | # cd hello_gitea # # Build multi-platform images using buildx # docker buildx build \ # --platform linux/amd64,linux/arm64 \ # --tag ${{ secrets.DOCKERHUB_USERNAME }}/hello-api:${{ github.ref_name }} \ # --tag ${{ secrets.DOCKERHUB_USERNAME }}/hello-api:latest \ # --push \ # . create-release-branch: runs-on: ubuntu-latest container: image: docker:28.3.2-dind # needs: create-docker-image steps: - name: Create Release Branch run: | echo "=== GitHub Variables ===" echo "github.ref = ${{ github.ref }}" echo "github.ref_name = ${{ github.ref_name }}" echo "github.sha = ${{ github.sha }}" echo "github.repository = ${{ github.repository }}" echo "========================" # Clone repository echo "Cloning repository..." git clone https://oauth2:${{ secrets.GITEATOKEN }}@direct-dev.ru/gitea/GiteaAdmin/hello_gitea.git hello_gitea cd hello_gitea # Configure git echo "Configuring git..." git config user.email "info@direct-dev.ru" git config user.name "Direct-Dev-Robot" # Check if release branch exists echo "Checking if release branch exists..." if git ls-remote --heads origin release | grep -q release; then echo "Release branch exists, checking out..." git checkout release echo "release branch exists - pulling release branch..." git pull origin release else echo "release branch does not exist - creating new release branch..." git checkout -b release fi # Reset to the tag commit echo "Resetting to the tag commit ${{ github.ref_name }} ..." git reset --hard ${{ github.ref_name }} # Push changes to release branch echo "Pushing changes to release branch..." git push origin release --force