Π”Π΅ΠΏΠ»ΠΎΠΉ Π² сloud.ru

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ рассмотрСн Π΄Π΅ΠΏΠ»ΠΎΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Container Apps (cloud.ru) с использованиСм GitVerse CI/CD.

Container Apps β€” это сСрвис ΠΎΡ‚ сloud.ru для запуска ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² ΠΎΠ±Π»Π°ΠΊΠ΅.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ см. Π² сloud.ru.

Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… GitVerse CI/CD Π΄Π΅ΠΏΠ»ΠΎΠΉ Π² Container Apps позволяСт Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ процСсс развСртывания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ GitVerse-спСцифичныС инструмСнты ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ workflow

ВрСбования

  1. Π‘ΠΎΠ±Ρ€Π°Π½Π½Ρ‹ΠΉ Docker-ΠΎΠ±Ρ€Π°Π·:

    • оТидаСтся, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π· ΡƒΠΆΠ΅ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π² рССстрС;
    • ΠΏΡ€ΠΈΠΌΠ΅Ρ€: gitverse.ru/actions/gitverse_hello:container_app;
    • ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π·: .gitverse/workflows/docker/cloud-hosted-runner/push-registries.yaml.
  2. Доступ ΠΊ Container App:

    • трСбуСтся доступ ΠΊ рССстру cloud.ru;
    • Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ сСкрСты: CLOUD_RU_REGISTRY, CLOUD_RU_USERNAME, CLOUD_RU_PASSWORD, CLOUD_RU_PROJECT_ID.
  3. Зависимости:

    • ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ кастомноС дСйствиС: ara-bakiev997/evo-container-app-action@v5;
    • Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Go >=1.23 для Ρ€Π°Π±ΠΎΡ‚Ρ‹ (устанавливаСтся Ρ‡Π΅Ρ€Π΅Π· setup-go).
  4. Dockerfile:

    • ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ: ./distribution/container_app.Dockerfile;
    • ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ ΠΏΠΎΡ€Ρ‚ΠΎΠ²;
    • ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ ΠΏΠΎΡ€Ρ‚Ρ‹: 8080, 8443 ΠΈ Ρ‚.Π΄. (Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ список β€” Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ cloud.ru);
    • ΠΏΡ€ΠΈΠΌΠ΅Ρ€:
      EXPOSE 8080
      CMD ["your-app", "--port=8080"]
    • Ссли ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ»ΡƒΡˆΠ°Π΅Ρ‚ Π½Π° ΠΏΠΎΡ€Ρ‚Ρƒ, Π½Π΅ входящСм Π² Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹ΠΉ список β€” ΠΎΠ½ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ доступно.
  5. Container App:

    • ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ, ID ΡƒΠΊΠ°Π·Π°Π½ Π² сСкрСтС: CLOUD_RU_PROJECT_ID;
    • action автоматичСски создаСт ΠΈΠ»ΠΈ обновляСт ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅;
    • Π½Π°Π·Π²Π°Π½ΠΈΠ΅ прилоТСния: container-app-gitverse-hello;
    • ΠΏΠΎΡ€Ρ‚ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ: 8080 (соотвСтствуСт трСбованиям ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹).
  6. Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ:

    • послС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ дСплоя ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅: https://container-app-gitverse-hello.containerapps.ru;
    • Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΎΡ‚Π²Π΅Ρ‚ ΠΎΡ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ³ΠΎ прилоТСния.

Workflow

name: Π”Π΅ΠΏΠ»ΠΎΠΉ прилоТСния Π² Container Apps (cloud.ru)
on:
  workflow_dispatch:
 
jobs:
  # Π‘Π±ΠΎΡ€ΠΊΠ° ΠΈ публикация ΠΎΠ±Ρ€Π°Π·Π° для container-app
  build-push-image:
    name: Π‘Π±ΠΎΡ€ΠΊΠ° ΠΈ публикация Docker-ΠΎΠ±Ρ€Π°Π·Π°
    runs-on: ubuntu-latest
 
    steps:
      - name: ΠšΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ
        uses: actions/checkout@v4
 
      - name: Π’Ρ…ΠΎΠ΄ Π² рССстр cloud.ru
        uses: docker/login-action@v3
        with:
          registry: ${{ secrets.CLOUD_RU_REGISTRY }}
          username: ${{ secrets.CLOUD_RU_USERNAME }}
          password: ${{ secrets.CLOUD_RU_PASSWORD }}
 
      - name: Π‘ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π· Ρ‡Π΅Ρ€Π΅Π· Kaniko
        run: |
          echo "πŸ“¦ Π‘Π±ΠΎΡ€ΠΊΠ° ΠΈ публикация ΠΎΠ±Ρ€Π°Π·Π°..."
          /kaniko/executor \
            --context=./distribution \
            --dockerfile=./distribution/container-app.Dockerfile \
            --destination=${{ secrets.CLOUD_RU_REGISTRY }}/gitverse_hello:container_app
 
  # Π”Π΅ΠΏΠ»ΠΎΠΉ Π² Container App
  up-container-app:
    name: Π”Π΅ΠΏΠ»ΠΎΠΉ Π² Container App
    needs: build-push-image
    runs-on: ubuntu-latest
 
    steps:
      - name: Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Go (>=1.23)
        uses: actions/setup-go@v4
        with:
          go-version: '>=1.23'
 
      - name: Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Container App
        uses: actions/evo-container-app-action@v1
        with:
          client_id: ${{ secrets.CLOUD_RU_USERNAME }}
          client_secret: ${{ secrets.CLOUD_RU_PASSWORD }}
          registry_uri: ${{ secrets.CLOUD_RU_REGISTRY }}
          image_name: gitverse_hello
          tag_name: container_app
          project_id: ${{ secrets.CLOUD_RU_PROJECT_ID }}
          name: container-app-gitverse-hello
          port: 8080

ОписаниС шагов workflow

1. ΠšΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ рСпозитория.

  • ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ стандартный action actions/checkout@v4 для получСния исходного ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

2. Π’Ρ…ΠΎΠ΄ Π² рССстр cloud.ru.

  • ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ action docker/login-action@v3 для Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² рССстрС cloud.ru;
  • ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ сСкрСты CLOUD_RU_REGISTRY, CLOUD_RU_USERNAME, CLOUD_RU_PASSWORD.

3. Π‘Π±ΠΎΡ€ΠΊΠ° ΠΈ публикация ΠΎΠ±Ρ€Π°Π·Π° Ρ‡Π΅Ρ€Π΅Π· Kaniko.

  • выполняСтся сборка Docker-ΠΎΠ±Ρ€Π°Π·Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Kaniko;
  • ΠΎΠ±Ρ€Π°Π· публикуСтся Π² рССстрС cloud.ru с Ρ‚Π΅Π³ΠΎΠΌ container_app.

4. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ прилоТСния Π² Container App.

  • ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ кастомноС дСйствиС actions/evo-container-app-action@v1;
  • устанавливаСтся Go вСрсии >=1.23;
  • настраиваСтся ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Container App с использованиСм сСкрСтов;
  • создаСтся ΠΈΠ»ΠΈ обновляСтся ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ container-app-gitverse-hello Π½Π° ΠΏΠΎΡ€Ρ‚Ρƒ 8080.

Π’Ρ‹ нашли Ρ‡Ρ‚ΠΎ искали?