Las gemas deben ser publicadas en rubygems.org. Las publicaremos con nuestro usuario personal pero debemos agregar como owner al usuario de platanus.
# Agregar un owner a una gem
gem owner GEM_NAME --add rubygems@platan.usPara hacer el deploy usando CircleCI, necesitamos agregar el archivo de configuración en la gema. Puedes ver un ejemplo de configuración aquí, pero en resumen lo que se hizo fue:
mkdir ~/.gem
echo -e "---\\r\\n:rubygems_api_key: $RUBYGEMS_API_KEY" > ~/.gem/credentials
chmod 0600 /home/circleci/.gem/credentials
Para poder utilizar la api key de rubygems al hacer el deploy.
deploy:
executor: main-executor
steps:
- setup
- run:
name: Setup rubygems
command: bash .circleci/setup-rubygems.sh
- run:
name: Publish to rubygems
command: |
gem build power_api.gemspec
version_tag=$(git describe --tags)
gem push power_api-${version_tag#v}.gemEsto:
-
Ejecuta el setup básico del proyecto.
-
Ejecuta el script para copiar la api key en un archivo que se utilizará para el deploy de la gema.
-
Crea el archivo .gem
-
Crea la nueva versión en rubygems.
workflows:
version: 2
main:
jobs:
- lint:
context: org-global
- test:
matrix:
parameters:
ruby-version: ["2.6", "2.7"]
- deploy:
context: org-global
filters:
tags:
only: /.*/
branches:
ignore: /.*/Lo que se hace aquí es ejecutar el job deploy siempre que se cree un nuevo tag en github.
org-global es un contexto que tiene definido la variable de entorno
RUBYGEMS_API_KEYque necesitamos para hacer el deploy.
Una vez configurado CircleCI en la gema tenemos que:
-
Cambiar
VERSIONenlib/my_new_gem/version.rbpara que apunte a la nueva versión. -
Cambiar el título
Unreleaseda la versión nueva en elCHANGELOG.md. -
Correr
bundle install. -
Hacer commit (directo en master) de un nuevo release. Por ejemplo:
Releasing v0.1.0. -
Crear el tag. Por ejemplo:
git tag v0.1.0. -
Hacer push del tag. Por ejemplo:
git push origin v0.1.0.
¡Listo!