Создайте ZIP-файлы и разверните их как GitHub-Release на AppVeyor

Я не хочу создавать ZIP-файлы на AppVeyor, чтобы публиковать их на GitHub как Release.

В настоящее время в процессе сборки выполняются следующие шаги:

  • Установите Node.js v7
  • Запустите .\Build-All.bat

Bild.bat состоит из следующих шагов:

  • Создать каталог Temp и Build
  • Переместить Source в Temp
  • Установите зависимости с помощью npm install
  • Запустите electron-packager для создания бинарных файлов (см. структуру каталога /Build/)

Структура каталогов:

/Source/
/Build/
  L /DSTEd-darwin-x64/
  L /DSTEd-linux-armv7l/
  L /DSTEd-linux-ia32/
  L /DSTEd-linux-x64/
  L /DSTEd-mas-x64/
  L /DSTEd-win32-ia32/
  L /DSTEd-win32-x64/
/Temp/
/Build.bat

Вот это, что я хочу:

Упакуйте каждый каталог сборки (для примера /Build/DSTEd-win32-x64/) в ZIP-архив, например /Build/DSTEd-win32-x64.zip

Добавить в релиз все ZIP-архивы (/Build/DSTEd-*-*.zip)

Я создал вручную релиз на GitHub для пробы; То есть то, что я хочу: https://github.com/DST-Tools/DSTed/releases/tag/1.0.0

Вот мой appveyor.yml:

version: 1.0.0-{build}

# Set the Node Version
environment:
  matrix:
    - nodejs_version: "7"

# Install scripts. (runs after repo cloning)
install:
  - ps: Install-Product node $env:nodejs_version 
  - npm -g install electron-packager
  - .\Build-All.bat

# Caching
cache:
  - node_modules 

# Deployment Options
deploy:
  tag: $(appveyor_build_version)
  release: 'DSTEd v${appveyor_build_version} - Pre-Release (Preview)'
  description: ' ![Preview](https://github.com/DST-Tools/DSTEd/raw/master/Screenshots/preview.png)  ## Pre-Release v1.0.0 (Preview) Builded binarys for `Windows` (`32bit` & `64bit`), `Linux` (`32bit`, `64bit` & `armv7`) and `Mac OS X` (`darwin` & `mas`, only `64bit`).'
  provider: GitHub
  auth_token:
    secure: b202f536350628ff69af69d08daee9f76a9cff20
  artifact: '**\*.zip'
  draft: false
  prerelease: true
  on:
    branch: master
    appveyor_repo_tag: true

matrix:
  fast_finish: true

build: OFF
test: OFF

person Adrian Preuss    schedule 06.06.2017    source источник


Ответы (2)


Пропущенная часть — это упаковка артефактов. Вы можете перечислить все эти папки как артефакты, и Appveyor заархивирует их для вас. После этого развертывание их «увидит».

Примечание: вы можете удалить часть on/branch:master, потому что в большинстве случаев имя тега заменяет имя ветки во входящем вебхуке. Подробнее см. здесь. В общем, я бы порекомендовал начать с простейшей конфигурации развертывания и добавлять настройки один за другим после того, как сработает базовый.

person Ilya Finkelsheyn    schedule 06.06.2017
comment
есть ли возможность создавать артефакты только на тегах развертывания? В моем случае мне нужно создать установщик только для тегов развертывания, а не для сборки или тестирования. - person kasvith; 07.01.2019

артефакты упаковки очень сложны. В документах вы можете определить фильтры, которые не будут работать правильно.

Я реализовал собственное решение для запуска before_deploy. Перед началом этапа развертывания сценарий упаковывает файлы в виде ZIP-файла и добавляет их в качестве артефакта:

# Deployment Options
before_deploy:
  - node .\Tools\PackageBuild.js
  - ps: Get-ChildItem .\Build\*.zip | % { Push-AppveyorArtifact $_.FullName -FileName $_.Name }

В процессе развертывания мы добавляем все доступные артефакты, чтобы оставить свойство пустым:

deploy:
  [...]
  artifact: #leave blank
person Adrian Preuss    schedule 07.06.2017