ΠΠ΅ΠΏΠ»ΠΎΠΉ Π² Ρloud.ru
Π ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ Π΄Π΅ΠΏΠ»ΠΎΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Container Apps (cloud.ru) Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ GitVerse CI/CD.
Container Apps β ΡΡΠΎ ΡΠ΅ΡΠ²ΠΈΡ ΠΎΡ Ρloud.ru Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² ΠΎΠ±Π»Π°ΠΊΠ΅.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΡΠΌ. Π² Ρloud.ru.
Π ΡΠ°ΠΌΠΊΠ°Ρ GitVerse CI/CD Π΄Π΅ΠΏΠ»ΠΎΠΉ Π² Container Apps ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ GitVerse-ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ.
ΠΡΠΈΠΌΠ΅Ρ workflow
Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ
-
Π‘ΠΎΠ±ΡΠ°Π½Π½ΡΠΉ Docker-ΠΎΠ±ΡΠ°Π·:
- ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΎΠ±ΡΠ°Π· ΡΠΆΠ΅ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π² ΡΠ΅Π΅ΡΡΡΠ΅;
- ΠΏΡΠΈΠΌΠ΅Ρ:
gitverse.ru/actions/gitverse_hello:container_app; - ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ±ΡΠ°ΡΡ ΡΠ΅ΡΠ΅Π·:
.gitverse/workflows/docker/cloud-hosted-runner/push-registries.yaml.
-
ΠΠΎΡΡΡΠΏ ΠΊ Container App:
- ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ΅Π΅ΡΡΡΡ cloud.ru;
- Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠ΅ΠΊΡΠ΅ΡΡ:
CLOUD_RU_REGISTRY,CLOUD_RU_USERNAME,CLOUD_RU_PASSWORD,CLOUD_RU_PROJECT_ID.
-
ΠΠ°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ:
- ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ°ΡΡΠΎΠΌΠ½ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅:
ara-bakiev997/evo-container-app-action@v5; - ΡΡΠ΅Π±ΡΠ΅Ρ Go >=1.23 Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ (ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π·
setup-go).
- ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ°ΡΡΠΎΠΌΠ½ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅:
-
Dockerfile:
- ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ:
./distribution/container_app.Dockerfile; - ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ»ΡΡΠ°ΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Π½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠΉ ΠΏΠΎΡΡΠΎΠ²;
- ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΠΏΠΎΡΡΡ: 8080, 8443 ΠΈ Ρ.Π΄. (ΡΠΎΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ β Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ cloud.ru);
- ΠΏΡΠΈΠΌΠ΅Ρ:
EXPOSE 8080 CMD ["your-app", "--port=8080"] - Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ»ΡΡΠ°Π΅Ρ Π½Π° ΠΏΠΎΡΡΡ, Π½Π΅ Π²Ρ ΠΎΠ΄ΡΡΠ΅ΠΌ Π² ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ β ΠΎΠ½ΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ.
- ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ:
-
Container App:
- ΠΏΡΠΎΠ΅ΠΊΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ, ID ΡΠΊΠ°Π·Π°Π½ Π² ΡΠ΅ΠΊΡΠ΅ΡΠ΅:
CLOUD_RU_PROJECT_ID; - action Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅;
- Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
container-app-gitverse-hello; - ΠΏΠΎΡΡ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ: 8080 (ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ).
- ΠΏΡΠΎΠ΅ΠΊΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ, ID ΡΠΊΠ°Π·Π°Π½ Π² ΡΠ΅ΠΊΡΠ΅ΡΠ΅:
-
ΠΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ:
- ΠΏΠΎΡΠ»Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ Π΄Π΅ΠΏΠ»ΠΎΡ ΠΎΡΠΊΡΠΎΠΉΡΠ΅ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅: 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.