Ruby Gems
Las gemas deben ser publicadas en rubygems.org. Las publicaremos con nuestro usuario personal pero debemos agregar como owner al usuario de platanus.
1
# Agregar un owner a una gem
2
gem owner GEM_NAME --add [email protected]
Copied!

Configuración en Circle CI

Para 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:

Agregar el script en .circleci/setup-rubygems.sh

1
mkdir ~/.gem
2
echo -e "---\r\n:rubygems_api_key: $RUBYGEMS_API_KEY" > ~/.gem/credentials
3
chmod 0600 /home/circleci/.gem/credentials
Copied!
Para poder utilizar la api key de rubygems al hacer el deploy.

Agregar el job "deploy" en .circleci/config.yml

1
deploy:
2
executor: main-executor
3
steps:
4
- setup
5
- run:
6
name: Setup rubygems
7
command: bash .circleci/setup-rubygems.sh
8
- run:
9
name: Publish to rubygems
10
command: |
11
gem build power_api.gemspec
12
version_tag=$(git describe --tags)
13
gem push power_api-${version_tag#v}.gem
Copied!
Esto:
    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.

Agregar el job deploy al workflow

1
workflows:
2
version: 2
3
main:
4
jobs:
5
- lint:
6
context: org-global
7
- test:
8
matrix:
9
parameters:
10
ruby-version: ["2.6", "2.7"]
11
- deploy:
12
context: org-global
13
filters:
14
tags:
15
only: /.*/
16
branches:
17
ignore: /.*/
Copied!
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_KEY que necesitamos para hacer el deploy.

Publicación

Una vez configurado CircleCI en la gema tenemos que:
    1.
    Cambiar VERSION en lib/my_new_gem/version.rb para que apunte a la nueva verisón.
    2.
    Cambiar el título Unreleased a la versión nueva en el CHANGELOG.md.
    3.
    Correr bundle install.
    4.
    Hacer commit (directo en master) de un nuevo release. Por ejemplo: Releasing v0.1.0.
    5.
    Crear el tag. Por ejemplo: git tag v0.1.0.
    6.
    Hacer push del tag. Por ejemplo: git push origin v0.1.0.
¡Listo!
Última actualización 1d ago