Compare commits
2 Commits
v1.0.30
...
builder-1.
Author | SHA1 | Date | |
---|---|---|---|
9da418648c | |||
7a33e815af |
@@ -34,7 +34,7 @@ jobs:
|
|||||||
docker --version
|
docker --version
|
||||||
# Setup Docker Buildx for multi-platform builds
|
# Setup Docker Buildx for multi-platform builds
|
||||||
echo "setup buildx"
|
echo "setup buildx"
|
||||||
docker buildx create --use
|
docker buildx create --name builder-builx --use
|
||||||
docker buildx inspect --bootstrap
|
docker buildx inspect --bootstrap
|
||||||
|
|
||||||
- name: Login to Docker Hub
|
- name: Login to Docker Hub
|
||||||
@@ -52,4 +52,8 @@ jobs:
|
|||||||
--tag ${{ secrets.DOCKERHUB_USERNAME }}/my-build-golang-runner:latest \
|
--tag ${{ secrets.DOCKERHUB_USERNAME }}/my-build-golang-runner:latest \
|
||||||
--push \
|
--push \
|
||||||
-f Dockerfile.builder \
|
-f Dockerfile.builder \
|
||||||
.
|
.
|
||||||
|
|
||||||
|
- name: Remove buildx
|
||||||
|
run: |
|
||||||
|
docker buildx rm builder-builx
|
@@ -9,8 +9,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
container:
|
container:
|
||||||
# image: golang:1.21
|
# image: golang:1.21
|
||||||
image: ${{ secrets.DOCKERHUB_USERNAME }}/my-build-golang-runner:latest
|
image: ${{ secrets.DOCKERHUB_USERNAME }}/my-build-golang-runner:latest
|
||||||
needs: create-release-branch
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
run: |
|
run: |
|
||||||
@@ -31,6 +30,13 @@ jobs:
|
|||||||
cd hello_gitea
|
cd hello_gitea
|
||||||
mkdir -p bin
|
mkdir -p bin
|
||||||
|
|
||||||
|
# Build for all platforms
|
||||||
|
quick-build linux amd64
|
||||||
|
quick-build linux arm64
|
||||||
|
quick-build windows amd64
|
||||||
|
quick-build darwin amd64
|
||||||
|
quick-build darwin arm64
|
||||||
|
|
||||||
# Build for all platforms
|
# Build for all platforms
|
||||||
GOOS=linux GOARCH=amd64 go build -o bin/hello-api-linux-amd64 main.go
|
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=linux GOARCH=arm64 go build -o bin/hello-api-linux-arm64 main.go
|
||||||
|
@@ -9,5 +9,24 @@ RUN apt-get update && \
|
|||||||
jq && \
|
jq && \
|
||||||
rm -rf /var/lib/apt/lists/*
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# Создаем рабочую директорию
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# Копируем файлы зависимостей
|
||||||
|
COPY go.mod go.sum ./
|
||||||
|
|
||||||
|
# Предварительно загружаем все зависимости
|
||||||
|
RUN go mod download && go mod verify
|
||||||
|
|
||||||
|
# Создаем скрипт для быстрой сборки
|
||||||
|
COPY scripts/quick-build.sh /usr/local/bin/quick-build
|
||||||
|
|
||||||
|
# делаем скрипт исполняемым
|
||||||
|
RUN chmod +x /usr/local/bin/quick-build
|
||||||
|
|
||||||
|
# Устанавливаем переменные окружения
|
||||||
|
ENV GOPATH=/go
|
||||||
|
ENV PATH=$PATH:/go/bin:/usr/local/bin
|
||||||
|
|
||||||
# (Опционально) Можно добавить команду по умолчанию
|
# (Опционально) Можно добавить команду по умолчанию
|
||||||
CMD ["bash"]
|
CMD ["bash"]
|
@@ -245,8 +245,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
container:
|
container:
|
||||||
# image: golang:1.21
|
# image: golang:1.21
|
||||||
image: ${{ secrets.DOCKERHUB_USERNAME }}/my-build-golang-runner:latest
|
image: ${{ secrets.DOCKERHUB_USERNAME }}/my-build-golang-runner:latest
|
||||||
needs: create-release-branch
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
run: |
|
run: |
|
||||||
@@ -418,14 +417,14 @@ jobs:
|
|||||||
|
|
||||||
1 **create-release:**
|
1 **create-release:**
|
||||||
|
|
||||||
- Запускается первым
|
- Эта таска запускается первой и не требует никаких зависимых тасков выполненными
|
||||||
- Использует контейнер собранный на базе golang:1.24 для сборки бинарников (image: ${{ secrets.DOCKERHUB_USERNAME }}/my-build-golang-runner:latest)
|
- Использует контейнер собранный на базе golang:1.24 для сборки бинарников (image: ${{ secrets.DOCKERHUB_USERNAME }}/my-build-golang-runner:latest)
|
||||||
- Собирает бинарники для всех платформ (Linux, Windows, macOS)
|
- Собирает бинарники для всех платформ (Linux, Windows, macOS)
|
||||||
- Создает архивы с бинарниками
|
- Создает архивы с бинарниками
|
||||||
- Создает релиз с именем текущей версии через Gitea API
|
- Создает релиз с именем текущей версии через Gitea API
|
||||||
- Загружает бинарники как assets релиза
|
- Загружает бинарники как assets релиза
|
||||||
|
|
||||||
для работы данного job используется кастомный образ - если бы мы использовали просто golang:1.24, то при каждом запуске данного job необходимо было бы скачивать jq и устанавливаться в контейнере (возможно со временем что то еще потребовалось бы)
|
для работы данного job используется кастомный образ - если бы мы использовали просто golang:1.24, то при каждом запуске данного job необходимо было бы скачивать jq и устанавливаться в контейнере (возможно со временем, что-то еще потребовалось бы ...)
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Setup Go container
|
- name: Setup Go container
|
||||||
@@ -507,7 +506,7 @@ jobs:
|
|||||||
docker --version
|
docker --version
|
||||||
# Setup Docker Buildx for multi-platform builds
|
# Setup Docker Buildx for multi-platform builds
|
||||||
echo "setup buildx"
|
echo "setup buildx"
|
||||||
docker buildx create --use
|
docker buildx create --name builder-builx --use
|
||||||
docker buildx inspect --bootstrap
|
docker buildx inspect --bootstrap
|
||||||
|
|
||||||
- name: Login to Docker Hub
|
- name: Login to Docker Hub
|
||||||
@@ -526,6 +525,10 @@ jobs:
|
|||||||
--push \
|
--push \
|
||||||
-f Dockerfile.builder \
|
-f Dockerfile.builder \
|
||||||
.
|
.
|
||||||
|
|
||||||
|
- name: Remove buildx
|
||||||
|
run: |
|
||||||
|
docker buildx rm builder-builx
|
||||||
```
|
```
|
||||||
|
|
||||||
эта задача будет запущена на ранере при пуше тега с префиксом `builder-`
|
эта задача будет запущена на ранере при пуше тега с префиксом `builder-`
|
||||||
|
8
main.go
8
main.go
@@ -1,13 +1,14 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
)
|
)
|
||||||
|
|
||||||
const version = "1.0.30"
|
const version = "1.0.31"
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
// Set Gin mode
|
// Set Gin mode
|
||||||
@@ -83,5 +84,8 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Start server
|
// Start server
|
||||||
r.Run(":" + port)
|
err := r.Run(":" + port)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
2
makefile
2
makefile
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
BIN_DIR=bin
|
BIN_DIR=bin
|
||||||
APP_NAME=hello-api
|
APP_NAME=hello-api
|
||||||
VERSION=1.0.30
|
VERSION=1.0.31
|
||||||
|
|
||||||
build:
|
build:
|
||||||
mkdir -p $(BIN_DIR)
|
mkdir -p $(BIN_DIR)
|
||||||
|
19
scripts/quick-build.sh
Normal file
19
scripts/quick-build.sh
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ ! -f go.mod ]; then
|
||||||
|
echo "go.mod not found in current directory"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Проверяем, изменились ли зависимости
|
||||||
|
if [ ! -f go.sum ] || ! go mod verify >/dev/null 2>&1; then
|
||||||
|
echo "Dependencies changed, downloading..."
|
||||||
|
go mod download
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Собираем для указанной платформы
|
||||||
|
if [ -n "$1" ] && [ -n "$2" ]; then
|
||||||
|
GOOS=$1 GOARCH=$2 go build -o "hello-api-$1-$2" main.go
|
||||||
|
else
|
||||||
|
go build -o hello-api main.go
|
||||||
|
fi
|
Reference in New Issue
Block a user