Si alguna escuchaste el termino de DevOps y aun no conoces como puede impactar de manera positiva tu proceso de desarrollo especialmente si trabajas para una pequeña empresa o tienes tu propia empresa de desarrollo. Déjame te explico que es un flujo de DevOps y como esto puede facilitar tus procesos internos o de tu empresa, al finalizar este tutorial podrás implementar un flujo sencillo utilizando Docker, Docker Hub y Github Actions para poder automatizar tu proceso de publicación por medio de un flujo CI/CD (Integración y distribución continua)
¿Qué es CI/CD y en que me beneficia?
¿Qué es Github Actions?
Antes de iniciar
Primer Paso: configuración de Github
name: Crear Imagen y publicarla
on:
push:
branches: [ master ]
Luego nos enfocaremos en lo siguiente, necesitamos que Github Cree nuestra imagen de Docker, la suba a nuestra cuenta de Docker Hub para luego poder instalarla en nuestro servidor de producción. Si seguimos los pasos necesitaremos dos partes en nuestro flujo, Crear y Publicar. Esto lo lograremos con la función de Jobs, donde le podemos especificar a nuestro archivo de YAML que tiene que realizar varios trabajos uno tras otro o en paralelo.
jobs:
publish:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_PASSWORD }}
logout: true
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v3
with:
images: ejemplo/docker-image
- name: Build and push
id: docker_build
uses: docker/build-push-action@v2
with:
context: .
file: ./Dockerfile
push: true
tags: ejemplo/docker-image:latest
deploy:
runs-on: self-hosted
needs: publish
steps:
- name: Clean Container
run: |
docker stop container || true
docker rm container || true
- name: Copy Files Over
uses: actions/checkout@v2
- name: Login To Docker Hub
run: echo "${{secrets.DOCKER_PASSWORD}}" | docker login -u "${{secrets.DOCKER_USER}}" --password-stdin
- name: Pull New Image
run: docker pull ejemplo/docker-image:latest
- name: Compose
run: docker-compose up -d
Segundo Paso: configuración de nuestro servidor
docker --version
docker-compose -v
sudo adduser newuser
usermod -aG sudo newuser
usermod -aG docker newuser
Tercer Paso: configuración del Self Hosted Runner
sudo su - newuser
./run.sh
Pasos adicionales
sudo ./svc.sh install