Skip to content

Instantly share code, notes, and snippets.

View fernandollisboa's full-sized avatar
📚

Fernando Lisboa fernandollisboa

📚
View GitHub Profile

Photo by Jens Freudenau on Unsplash

Continuous Integration and Continuous Delivery (or Deployment) - better known as CI/CD Pipelines - is a pillar of modern software teams. Although it may sound like another buzzword, it’s actually about something very practical: automating the way code moves from your local enviroment to production.

Regardless of stack or project size, CI/CD helps answer key questions:

  • How can we merge code frequently without breaking things?
  • How do we release faster, but with less risk?

In this article we’ll break down the concepts and set up a simple pipeline using GitHub Actions. To illustrate, we’ll use a simple J

Onboarding GLS - July/2025

  • Access M365
  • Access Slack through the M365 account
  • Request access through ConductorOne, within M365 apps:
    • 1Password, Arda Dev, Arda staging, Argo*, Datadog, Figma, Linear, Modern Treasury, Whimsical
      • if Argo doesn't appear, talk to @gui, @chris or @gabe. You'll likely need to be added to the Outlook group
  • Sign to 1Password using email invitation
    • Install chrome extension
  • Install desktop application
name: Publish Docker image to Docker Hub
on:
pull_request: {}
env:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN}}
DOCKER_HUB_REGISTRY: fernandollisboa/checkout-captacao
DOCKER_IMAGE: checkout-captacao
# syntax=docker/dockerfile:1
FROM ruby:3.3.0
# Install nodejs
ENV NODE_VERSION 18.19.0
RUN ARCH=$(uname -m) \
&& if [ "$ARCH" = "aarch64" ]; then \
NODE_PACKAGE_URL="https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-arm64.tar.xz"; \
else \
NODE_PACKAGE_URL="https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.xz"; \
{
"id": "or_wZm04dxFkFL4nz6v",
"code": "EWPOIXI493",
"amount": 500000,
"currency": "BRL",
"closed": true,
"items": [
{
"id": "oi_KeGjYRrCQCPY4bJZ",
"type": "product",

Create Rails Project

  1. Run rails new
    rails new [name] --api -T
  2. Copy your Gemfile
  3. Copy your .gitignore
  4. Copy your .rubocop.yml
  5. Install Rspec
describe('catalog promotions', () => {
beforeEach(() => {
const credentials = ['sylius', 'sylius'];
cy.login(...credentials);
cy.clickInFirst('a[href="/admin/catalog-promotions/"]');
});
// Remove .only and implement others test cases!
it('shows of especify catalog promotion exposes the correct product and discount', () => {
// Select inactive promotions in search tab
cy.get('[id="criteria_state"]').select('Inactive');