Собираем аддоны в CI

Собираем аддоны в CI 1.0

Нет прав для скачивания
OneDev - очень легковесный селф-хостед Git-сервер с Kanban-доской и CI/CD. Я свой инстанс кручу на виртуалке с 1ГБ ОЗУ и 2 ядрах.
Как и в любом другом CI, тут можно собирать XenForo-аддоны:
1652115423744.png

. Для тех, кому интересно: дополнение из этого репозитория будет опубликовано "позже", когда я созрею причесать его. Пока кто хочет - может взять его, скачать и поиграться.
Осторожно, есть некоторые баги, из-за которых его тут до сих пор и нет!

Билды прячутся в артефактах (/projects/X/builds/Y/artifacts):
1652115715479.png

Пример конфига под спойлером:
Хотя тут "секреты" и присутствуют, как в том же Тревисе, они полностью "маскируются" в логе. Для меня было неприятно видеть звёздочки вместо идентификатора аддона, потому все параметры я прописал прямо в YAML-файле.
Не забудьте заменить в нём (через массовую замену):
  • Ссылку на дистрибутив XenForo (http://10.100.200.217/xf/xf_2.2.9.zip).
  • Идентификатор дополнения (SModders/UserStyleOptions).
Код:
version: 16
services:
- name: mysql
  image: mysql:5.7
  arguments: --ignore-db-dir=lost+found
  envVars:
  - name: MYSQL_USER
    value: xenforo
  - name: MYSQL_PASSWORD
    value: xenforo
  - name: MYSQL_DATABASE
    value: xenforo
  - name: MYSQL_ALLOW_EMPTY_PASSWORD
    value: 'yes'
  readinessCheckCommand: mysql -uxenforo -pxenforo -e 'select 1'
  cpuRequirement: 1000
  memoryRequirement: 384
jobs:
- name: Build Add-On
  steps:
  - !CheckoutStep
    name: Checkout add-on code
    cloneCredential: !DefaultCredential {}
    withLfs: false
    withSubmodules: false
    checkoutPath: _addon
    condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL
  - !CommandStep
    name: Download and unzip XenForo package
    runInContainer: true
    image: alpine:latest
    interpreter: !DefaultInterpreter
      commands:
      - apk add --no-cache --no-progress --quiet curl unzip
      - ''
      - '# XF'
      - echo "Downloading XenForo package..."
      - curl -4 -q --output package.zip "http://10.100.200.217/xf/xf_2.2.9.zip"
      - echo "Unzipping..."
      - unzip -q package.zip
      - rm package.zip
      - ''
      - echo "OK"
      - mv upload xf
    useTTY: true
    condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL
  - !CommandStep
    name: Install XenForo, addon and build them
    runInContainer: true
    image: php:7.4-cli-alpine3.15
    interpreter: !DefaultInterpreter
      commands:
      - '# XenForo dependencies'
      - echo "Installing PHP build dependencies..."
      - apk add --no-cache --no-progress --quiet libzip libzip-dev libpng-dev libjpeg-turbo-dev
        libwebp-dev libxpm-dev freetype-dev
      - apk add --no-cache --no-progress --quiet $PHPIZE_DEPS
      - ''
      - echo "Configuring..."
      - docker-php-ext-configure gd --with-jpeg --with-xpm --with-freetype --with-webp
      - docker-php-ext-configure zip --with-zlib-dir=/usr
      - ''
      - echo "Installing..."
      - docker-php-ext-install mysqli gd zip
      - ''
      - echo "OK, moving to XF directory..."
      - cd xf
      - ''
      - '# Prepare config'
      - echo "Writing config..."
      - cd src
      - echo "<?php" > config.php
      - echo "\$config['db']['host'] = 'mysql';" >> config.php
      - echo "\$config['db']['port'] = 3306;" >> config.php
      - echo "\$config['db']['username'] = 'xenforo';" >> config.php
      - echo "\$config['db']['password'] = 'xenforo';" >> config.php
      - echo "\$config['db']['dbname'] = 'xenforo';" >> config.php
      - echo "\$config['debug'] = true;" >> config.php
      - echo "\$config['development']['enabled'] = true;" >> config.php
      - cd ..
      - ''
      - '# Install everything'
      - echo "Installing XenForo..."
      - php cmd.php xf:install -q --clear --user=OneDev --password=OneDev --email
        ci@@git.crazyhackgut.ru --title=OneDev --url=http://localhost --skip-statistics
        --clear
      - ''
      - '# Install add-on'
      - echo "Installing build add-on..."
      - mkdir -p src/addons/SModders/UserStyleOptions
      - mv ../_addon/* src/addons/SModders/UserStyleOptions/
      - ''
      - php cmd.php xf-addon:install -f -n SModders/UserStyleOptions
      - php cmd.php xf-dev:import -n -a SModders/UserStyleOptions
      - php cmd.php xf-addon:build-release SModders/UserStyleOptions
    useTTY: true
    condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL
  - !PublishArtifactStep
    name: Publish build (if success)
    sourcePath: xf/src/addons/SModders/UserStyleOptions/_releases
    artifacts: '*.zip'
    condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL
  triggers:
  - !BranchUpdateTrigger
    branches: master
    paths: addon.json
  - !BranchUpdateTrigger
    branches: master
    paths: .onedev-buildspec.yml
  requiredServices:
  - mysql
  retryCondition: never
  maxRetries: 3
  retryDelay: 30
  cpuRequirement: 500
  memoryRequirement: 256
  timeout: 3600
Назад
Сверху Снизу