Travis에서 Bintray로 배포하여 자동으로 버전을 설정하고 업로드
travisCI + Bintray로 자동 배포를 시도한 메모
도움이 될 것입니다, 감사합니다.
그러나 Travis가 제공하는 샘플 절차 htps : // / cs. t 등 ぃ s - 해. 코 m / 우세 r /에서 p ぉ y 면 t / 병 t 등 y / 인 경우 버전 번호는 JSON에 수동으로 작성해야합니다.
매번 수작업은 죄송합니다 ... 인간의 욕망은 질리지 않습니다.
그래서 sed에서 버전 번호와 릴리스 날짜를 travis 빌드 후 다시 작성한 .json을 만들어 bintray에 업로드하는 방법을 생각해 보았습니다.
tinyobjloader에서 사용해 보았습니다.
절차
먼저 Binray에서 프로젝트와 패키지 디렉토리를 만듭니다.
그런 다음 bintray json 템플릿 (.bintray.in)을 준비합니다.
{
/* Bintray package information.
In case the package already exists on Bintray, only the name, repo and subject
fields are mandatory. */
"package": {
"name": "releases", // Bintray package name
"repo": "tinyobjloader", // Bintray repository name
"subject": "syoyo" // Bintray subject (user or organization)
},
/* Package version information.
In case the version already exists on Bintray, only the name fields is mandatory. */
"version": {
"name": "@VERSION@",
"desc": "@VERSION@",
"released": "@DATE@",
"vcs_tag": "@VERSION@",
"gpgSign": false
},
/* Configure the files you would like to upload to Bintray and their upload path.
You can define one or more groups of patterns.
Each group contains three patterns:
includePattern: Pattern in the form of Ruby regular expression, indicating the path of files to be uploaded to Bintray.
excludePattern: Optional. Pattern in the form of Ruby regular expression, indicating the path of files to be removed from the list of files specified by the includePattern.
uploadPattern: Upload path on Bintray. The path can contain symbols in the form of $1, $2,... that are replaced with capturing groups defined in the include pattern.
Note: Regular expressions defined as part of the includePattern property must be wrapped with brackets. */
"files":
[ {"includePattern": "dist/(.*)", "uploadPattern": "$1"} ],
"publish": true
}
@VERSION@
, @DATE@
를 빌드 날짜와 git tag (Travis의 경우 TRAVIS_TAG로 가져올 수 있음)로 바꾸는 스크립트 (./tools/travis_postbuild.sh
)를 준비하십시오.#!/bin/bash
DATEVAL=`date +%Y-%m-%d`
VERSIONVAL=master
# Use tag as version
if [ $TRAVIS_TAG ]; then
VERSIONVAL=$TRAVIS_TAG
fi
# MacOSX sed(BSD sed) は inplace(-i) が使えないことに注意!
sed -e s%@DATE@%${DATEVAL}% .bintray.in > .bintray.tmp
sed -e s%@VERSION@%${VERSIONVAL}% .bintray.tmp > .bintray.json
참고! Bintray는 날짜 형식을 제한합니다.
Bintray가 지원하는 날짜 형식에 맞춰야합니다.
이것을 travis
before_deploy
에서 실행하여 .bintray.json을 만들 수 있습니다.before_deploy:
- echo "Creating description file for bintray."
- ./tools/travis_postbuild.sh
deploy:
- provider: bintray
file: ".bintray.json"
user: "syoyo"
key:
secure: XXXXXXXX
all_branches: true
on:
repo: syoyo/tinyobjloader
condition: -n "$DEPLOY_BUILD"
tags: true
skip_cleanup: true
tinyobjloader는 build matrix를 사용하기 때문에
condition
를 붙이지 않으면 모든 빌드에서 bintray에 업로드하려고합니다.또한 태그를 빌드 할 때만 배포하십시오 (
all_branches: true
, tags: true
).github commit
그런 다음 git으로 태그를 치고 github에 푸시하면됩니다.
Voala! 각 tag 이름별로 파일을 bintray에 업로드 할 수있었습니다!
문제점
Travis 에서의 bintray 배포 가능 기능(deploy provider = bintray)이라면, 이미 bintray 에 파일이 업로드되어 있는 경우는 갱신(덮어쓰기)에 실패합니다. 치면 릴리스를 다시 시도 할 때 Bintray에서 파일을 한 번 삭제해야합니다.
.json 설정 파일에서는 파일 덮어쓰기와 같은 파라미터가 없기 때문에, 결국은 Curl(REST API) 베이스로의 운용이 좋을지도 모릅니다. 참고예는 이쪽.
Reference
이 문제에 관하여(Travis에서 Bintray로 배포하여 자동으로 버전을 설정하고 업로드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/syoyo/items/e018214265fdc02c39c0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)