Рубрики
Uncategorized

Создайте / тестируйте / разверните свое приложение Go с помощью IBM Cloud Toolchain

Независимо от того, есть ли вы менеджер проекта, часть команды Dev или Flying Solo, всегда есть навигация … Помечено облаком, дежоптом, иди, начинающим.

Независимо от того, независимо от того, есть ли вы менеджер проекта, часть команды Dev или Flying Solo, всегда есть вымогательная проблема инкрементных изменений в вашем проекте. Прошли времена развития водопада — Agile — это «в ходе». Вы бежите две недели спринты и выпускать на регулярной основе. Вы, вероятно, видели много вариантов методов развертывания, множество трубопроводов непрерывной интеграции/непрерывной доставки (CI/CD) и многое другое.

На грани этого это путешествие для получения приложения в вашей локальной системе, развернутой в облако на этапах, используя трубопровод.

Трубопровод позволяет работать над небольшими функциями самостоятельно и развертывать их один за другим, не снимая приложение, или лучше, не позволяя вам применить приложение все в одном, а затем развертывание его в одном большом нажатии. Это позволит вам потерпеть неудачу небольшой и потерпеть неудачу быстро. В ответ, оставив меньше технического долга и позволяя быстрее развитии.

Диаграмма ниже очерчивает целью этого, используя простой пример запроса на тягу

Теперь вы можете увидеть, насколько просто это действительно, в этом блоге я покажу вам, как строить, тестировать и развернуть приложение под одной крышей в течение нескольких минут с использованием IBM Cloud Toolchain. Это правильно .. в считанные минуты.

Но сначала вам понадобятся некоторые предпосылки: 1) IBM Cloud Lite Account — регистрация здесь 2) Аккаунт GitHub 3) Golang установлен на вашей машине

Давайте начнем!

Создайте свое приложение Go и получите его в Github

Шаг 1 — Создайте пустой репозиторий в Github

Перейдите к своему профилю GitHub, нажмите на + В правом верхнем углу и выберите «Новый репозиторий». Дайте ему имя и убедитесь, что это публично. Не стесняйтесь также добавить лицензию .gitignore file и readme.md, если хотите

Шаг 2 — Давайте создадим простой HTTP-сервер Golang с сопровождающим тестом

В терминале клонируют ваш новый репозиторий в $ Home/go/src/github.com

Перейдите в клонированный проект, используя CD Команда и инициировать модули GO с помощью команды Go Mod init (В некоторых случаях вам может потребоваться указать точный путь проекта), а затем откройте его в предпочтительном редакторе (я использую код Visual Studio)

ПРИМЕЧАНИЕ — если у вас уже нет этой папки дерево (GO/SRC/GitHub.com), затем создайте его

Создайте тестовый файл в корне проекта (Main_test.go):

package main

import (
    "net/http"
    "net/http/httptest"
    "testing"
)

func TestHomeRoute(t *testing.T) {
    t.Run("returns message", func(t *testing.T) {
        request, _ := http.NewRequest(http.MethodGet, "/", nil)
        response := httptest.NewRecorder()

        Home(response, request)

        got := response.Body.String()
        want := "This is a toolchain test PR"

        if got != want {
            t.Errorf("got %q, want %q", got, want)
        }
    })
}

Запустите тест и просмотрите его, используя следующую команду в вашем терминале Пройдите тест./...

Теперь пришло время писать достаточно кода для теста, чтобы пройти (это называется TDD — разработка тестирования)

Создайте основной файл в корне проекта (Main.go). Это будет домой для сервера кода

package main

import (
    "fmt"
    "net/http"
)

func main() {
    // Create the route handler listening on '/'
    http.HandleFunc("/", Home)
    fmt.Println("Starting server on port 8080")

    // Start the sever
    http.ListenAndServe(":8080", nil)
}

func Home(w http.ResponseWriter, r *http.Request) {
    // Assign the 'msg' variable with a string value
    msg := "This is a toolchain test PR"

    // Write the response to the byte array - Sprintf formats and returns a string without printing it anywhere
    w.Write([]byte(fmt.Sprintf(msg)))
}

Запустите команду теста Пройдите тест./... и ваш тест должен пройти

Чтобы увидеть это в действии, вы можете запустить программу с Go Run Main.go Команда и навигация на localhost: 8080 В вашем веб-браузере

Чтобы выйти из программы, используйте команды Контроль + C в вашем терминале

Шаг 3 — Нажмите свой код в репозиторий GitHUB

Давайте получим этот код в Github .. Не волнуйтесь, это довольно просто, просто следуйте следующим командам

Git Add. — Эта команда добавит все новые/измененные файлы в постановку, готовые к совершенным

Git Commit -M «Первоначальный коммит» — Эта команда совершает изменения, готовые к толкащему с помощью сообщения, чтобы они могли легко идентифицировать

Git Push Origin Master — Это будет толкает изменения в ветку Master/Main — это нормально для первоначального фиксации, но идет вперед, вы будете использовать функциональные ветви

Awesome — теперь у вас есть простой HTTP-сервер Golang с тестом, который вы можете подтолкнуть к любому облаку, но что, если вы хотели отделить, и другие работают над этим? Что, если вам пришлось добавить дополнительные изменения и автоматизировать развертывание этого? — Ручное развертывание нужна точность, они поглощают много времени и вес на любой цепочке команды!

Давайте использовать IBM Cloud Toolchain для этого. «Что такое IBM Cloud Toolchain? » ты спрашиваешь…

Ну, это довольно просто. Это инструмент, который позволяет объединить действия, называемые этапами. Каждый этап будет иметь «рабочие места», и они позволяют вам выбрать то, что вы хотите сделать с вашим приложением на этом этапе, будь то построение, тестирование или развертывание — черт возьми, почему не все они?

В этом блоге мы запустим тестовую стадию, чтобы обеспечить компилирование кода, а тесты проходят через запрос на тягу. Затем, как только запрос на потянулся на главной производственной ветви, другая сцена будет компилировать код, запустить тесты, а затем автоматически развернуть приложение в Cloud Foundry. Звучит неплохо? — Пойдем!

Создание набора инструментов

Логин или Зарегистрироваться в IBM Облако

Перейдите к разделу DEVOPS в IBM Cloud, используя меню навигации слева

Выберите свой регион, а затем создайте новый набор инструментов

Прокрутите вниз до нижней части и выберите «Создайте свой собственный набор инструментов»

Выберите подходящее имя и выберите правильный регион для набора инструментов

Cool, у вас сейчас есть фонд — добавьте новый инструмент на набор инструментов

Мы хотим иметь интеграцию GitHub, поэтому ищите «GitHub» и выберите инструмент GitHub

Настройте инструмент GitHub, чтобы иметь правильную информацию для вашего репозитория проекта, в качестве примера, мой является

Теперь вы должны увидеть, что инструмент GitHub на панели инструментов имеет галочки и слово «настроен». Это даст ему доступ к информации о репозитории (вам можно попросить подтвердить это на Github)

Далее вам нужно добавить трубопровод. На инструментальном обзоре, как вы сделали с инструментом GitHub, выберите «Добавить инструмент» и искать «Трубопровод». Выберите «Доставка трубопровода»

Настройте трубопровод, придавая ему имя и обеспечение типа трубопровода «Классика», а не «Tekton»

Если вы не использовали трубопровод в IBM Cloud, вы можете увидеть следующую ошибку. Вам просто нужно добавить непрерывную службу доставки, которая включит CI/CD

Ищите непрерывную доставку и выберите «Непрерывную доставку» — вам нужно только сделать это один раз!

Установить услугу. Убедитесь, что регион устанавливается то же самое, что и ваша наборника, дайте ему то же имя, что и вы назвали свой сервис трубопровода. В этом примере это «CI-CD-сервис». После заполнения, создайте его

Теперь вернитесь к вашу насадочную машину и нажмите на саму коробку трубопровода. Вы будете доставлены на пустую страницу. В верхнем правом выберите «Добавить сцену»

Назовите это «Stage Test», и это будет строить код, а затем запустить тесты. Убедитесь, что тип ввода — это репозиторий Git для вашего проекта, ветвь установлена на «Master», и вы хотите, чтобы этот этап запущен «Когда запрос на тягах открыт или обновляется»

После того, как «вход» установлен, перейдите к «заданиям» и создайте 2 задания. 1 X Тест сборки и 1 х. В насущественную инструментал нет Golang Buildpack Golang, поэтому нам нужно использовать документ докера с окружающей средой для нас

Добавьте следующий скрипт в поле «Создать сценарий» на сцене «Build» и измените его в соответствии с вашим проектом. Я позвонил в моем каталоге «GOHTTPSERVER», но вы можете изменить его, чтобы быть названием вашего репозитория/проекта. Этот скрипт просто переместил код из временного каталога на виртуальной машине в дереве каталога, как у вас будет локально на вашем компьютере. Затем он создает двоичный для проверки компилей

#!/bin/bash
pwd
ls -la
cd $HOME
mkdir -p go/src/github.com
mkdir -p go/pkg
mkdir -p go/bin
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
cd $HOME/go/src/github.com
cp -ar /home/pipeline/* /root/go/src/github.com
mv ./* gohttpserver
cd gohttpserver
go build -o serverbinary
chmod -v +x serverbinary
pwd
ls -la
echo code compiled successfully

Перейдите на сцену «Тест» и сделайте то же самое. Скопируйте сценарий с вашего этапа «сборки» и измените конец его, чтобы посмотреть что-то подобное

#!/bin/bash
pwd
ls -la
cd $HOME
mkdir -p go/src/github.com
mkdir -p go/pkg
mkdir -p go/bin
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
cd $HOME/go/src/github.com
cp -ar /home/pipeline/* /root/go/src/github.com
mv ./* gohttpserver
cd gohttpserver
go test ./...
echo test run successful

Это просто управляется тестами в репозитории и не наращивает двоичный

Это этап сборки/тестирования, теперь нам нужно создать этап развертывания. Этот этап будет работать, когда запрос на тягах сливается в основной/ветвь Master

Вернитесь к обзору этапов и клонируйте первый этап, который мы создали, нажав COG на сцене и выбрав «этап клона»

Нажмите на COG на недавно клонированной стадии и нажмите «Настроить». Переименуйте его до «развертывания», и мы хотим, чтобы этот этап был вызван новым коммитством в ветку MASTER/MAIN, а не на новый запрос на тягу. На вкладке «Вход» установите флажок «Когда нажато фиксация»

На разделе «Работа» добавьте новое задание «Развертывание» и заполните детали для вашего проекта. Вы хотите убедиться, что тип Deployer является Cloud Foundry (вы можете выбрать Kubernetes, если вы хотите, но установка будет отличаться). Вам также необходимо создать новую клавишу API для интеграции на работу (показано ниже)

Убедитесь, что выбранный регион совпадает с вашим набором инструментов, а имя приложения совпадает с вашим трубопроводом. Сценарий очень прост и должен быть предварительно заполнен для вас. После завершения, сохранить и выйти

Ваш набор инструментов теперь настроен!

Время для изменения кода … Во-первых, в рамках вашего проекта, оформить заказ новой локальной ветви функции, используя следующую команду в терминале Git Checkout -b test-new-toolchain

Далее измените тестовый файл main_test.go.

А затем изменить соответствующий код в main.go и нажмите код до новой дистанционной ветви, используя команды, видимые ниже

Теперь вы можете открыть запрос на тягу в Github. Убедитесь, что запрос на тягу находится из новой ветви, который вы только что создали, придайте ему значимое название и описание. Затем нажмите «Создать запрос на тягу»

После открытия вы увидите интеграцию IBM Cloud Toolchain. Если вы проверяете сцепные этапы, вы увидите, что он работает на первом этапе, который вы назвали «Stage Test»

После того, как этап тестирования закончится, вы сможете объединить запрос на тягу. Идите вперед и сливайте его. Затем проверьте нашутку, и вы увидите

Как только этап сборки закончится, нажмите на ссылку «Просмотр журналов и истории». Прокрутите до дна, и вы увидите результат сборки и где он развернут в фонаре облака. Перейдите к маршруту в браузере, и вы увидите работу вашего приложения

Если вы проверяете запрос с объединенным потяжетелем, вы увидите сообщение успешного развертывания и тега из набора инструментов

У вас теперь есть CI/CD IBM Cloud Toolchain Up .. Как это было легко?!

Хотя этот блог использует документ Docker для окружающей среды Golang, многие другие проекты могут быть построены с использованием легкодоступных Buildpacks в IBM Cloud (список их можно найти в конфигураторе Stage)

Если у вас есть какие-либо вопросы или хотите увидеть больше контента, как это, не стесняйтесь протянуть!

Github Twitter Instagram Linkedin.

Оригинал: «https://dev.to/liamchampton/build-test-deploy-your-go-app-using-ibm-cloud-toolchain-1onc»