Исправлен workflow - 10 для сборки и релиза

This commit is contained in:
2025-07-27 14:16:54 +06:00
parent 3734143548
commit c5e580c627
4 changed files with 221 additions and 10 deletions

View File

@@ -0,0 +1,59 @@
name: Release Build
on:
push:
tags:
- v*
jobs:
release:
runs-on: ubuntu-latest
container:
image: golang:1.21
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
run: |
cd hello_gitea
mkdir -p bin
go build -o bin/hello-api-${{ github.ref_name }} main.go
ls -la bin/
- 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",
"draft": false,
"prerelease": false
}' \
"https://direct-dev.ru/gitea/api/v1/repos/GiteaAdmin/hello_gitea/releases"
# Upload asset
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')
curl -X POST \
-H "Authorization: token ${{ secrets.GITEATOKEN }}" \
-H "Content-Type: application/octet-stream" \
--data-binary @bin/hello-api-${{ github.ref_name }} \
"https://direct-dev.ru/gitea/api/v1/repos/GiteaAdmin/hello_gitea/releases/$RELEASE_ID/assets?name=hello-api-${{ github.ref_name }}"

View File

@@ -5,10 +5,28 @@ on:
- v*
jobs:
release:
build-binaries:
runs-on: ubuntu-latest
container:
image: golang:1.21
strategy:
matrix:
include:
- os: linux
arch: amd64
suffix: linux-amd64
- os: linux
arch: arm64
suffix: linux-arm64
- os: windows
arch: amd64
suffix: windows-amd64.exe
- os: darwin
arch: amd64
suffix: darwin-amd64
- os: darwin
arch: arm64
suffix: darwin-arm64
steps:
- name: Checkout repository
run: |
@@ -24,13 +42,96 @@ jobs:
go version
jq --version
- name: Build
- name: Build for ${{ matrix.os }}-${{ matrix.arch }}
run: |
cd hello_gitea
mkdir -p bin
go build -o bin/hello-api-${{ github.ref_name }} main.go
GOOS=${{ matrix.os }} GOARCH=${{ matrix.arch }} go build -o bin/hello-api-${{ matrix.suffix }} main.go
ls -la bin/
- name: Upload artifact
run: |
cd hello_gitea/bin
tar -czf hello-api-${{ matrix.suffix }}.tar.gz hello-api-${{ matrix.suffix }}
echo "Built: hello-api-${{ matrix.suffix }}.tar.gz"
create-docker-image:
runs-on: ubuntu-latest
container:
image: golang:1.21
needs: build-binaries
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 Docker
run: |
# Install Docker CLI
apt-get update && apt-get install -y docker.io
docker --version
- name: Build Docker image
run: |
cd hello_gitea
# Build image using existing Dockerfile
docker build -t hello-api:${{ github.ref_name }} .
docker tag hello-api:${{ github.ref_name }} hello-api:latest
- name: Login to Docker Hub
run: |
echo ${{ secrets.DOCKERHUB_TOKEN }} | docker login -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin
- name: Push to Docker Hub
run: |
cd hello_gitea
docker push ${{ secrets.DOCKERHUB_USERNAME }}/hello-api:${{ github.ref_name }}
docker push ${{ secrets.DOCKERHUB_USERNAME }}/hello-api:latest
create-release:
runs-on: ubuntu-latest
container:
image: golang:1.21
needs: [build-binaries, create-docker-image]
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
@@ -41,19 +142,23 @@ jobs:
-d '{
"tag_name": "${{ github.ref_name }}",
"name": "Release ${{ github.ref_name }}",
"body": "Automated release",
"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 asset
# 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')
curl -X POST \
-H "Authorization: token ${{ secrets.GITEATOKEN }}" \
-H "Content-Type: application/octet-stream" \
--data-binary @bin/hello-api-${{ github.ref_name }} \
"https://direct-dev.ru/gitea/api/v1/repos/GiteaAdmin/hello_gitea/releases/$RELEASE_ID/assets?name=hello-api-${{ github.ref_name }}"
# 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