Binary (exe/elf)
Esta seção descreve como preparar e realizar o deploy de um executável escrito em GO
no orquestrador. Para que a publicação seja bem-sucedida, os seguintes arquivos devem estar presentes:
Warning
o arquivo main.exe
gerado após o processo de build deve ser compactado para publicação.
Exemplo de Script
Configuração de pastas
mkdir go-api-request
cd go-api-request
Inicializar módulo
go mod init go-api-request
Código de exemplo
Agora vamos fazer uma simples automação que realiza requisições de API.
// main.go
package main
import (
"encoding/json"
"fmt"
"log"
"net/http"
)
type Post struct {
UserID int `json:"userId"`
ID int `json:"id"`
Title string `json:"title"`
Body string `json:"body"`
}
func main() {
// URL da API
url := "https://jsonplaceholder.typicode.com/posts"
// Realiza a requisição GET para a API
resp, err := http.Get(url)
if err != nil {
log.Fatalf("Erro ao fazer a requisição: %v", err)
}
defer resp.Body.Close()
// Verifica o status da resposta
if resp.StatusCode != http.StatusOK {
log.Fatalf("Erro: Status code %d", resp.StatusCode)
}
// Decodifica o JSON da resposta
var posts []Post
if err := json.NewDecoder(resp.Body).Decode(&posts); err != nil {
log.Fatalf("Erro ao decodificar a resposta JSON: %v", err)
}
// Exibe os dados no terminal
fmt.Println("Posts recebidos da API:")
for _, post := range posts {
fmt.Printf("ID: %d\n", post.ID)
fmt.Printf("Título: %s\n", post.Title)
fmt.Printf("Corpo: %s\n", post.Body)
fmt.Println("--------------")
}
}
Executando o script
# atualiza dependências
go mod tidy
# executa script
go run main.go
Build do executável
Agora é necessário compilar o projeto conforme arquitetura deseja para realizar o deploy do executável.
Note
Utilize WSL/Linux para rodar os comandos de build.
Windows
GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -ldflags="-s -w" -o main.exe main.go
Linux
@GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o main cmd/*.go
Publicação
Siga as instruções na seção Publicar Bot para publicar seu projeto no formato .zip
.
Última modificação em