1- name : Deploy docker container
1+ name : Deploy to Production
22on :
33 workflow_dispatch :
44
55permissions :
66 packages : read
77
88jobs :
9- deploy :
9+ deploy_prod :
1010 runs-on : ec2-bice
11+ if : startsWith(github.ref, 'refs/tags')
12+ timeout-minutes : 15
1113 env :
12- GIT_USERNAME : ${{ github.actor }}
13- GIT_PASSWORD : ${{ secrets.GITHUB_TOKEN }}
14- DOCKER_IMAGE_NAME : ghcr.io/${{ github.repository }}
15- IMAGE_REGISTRY : ${{ 'https://ghcr.io' }}
14+ IMAGE_TAG : latest
1615 EXPOSE_PORT : ${{ secrets.EXPOSE_PORT || 8080 }}
1716 PUBLISH_PORT : ${{ secrets.PUBLISH_PORT || 8081 }}
18- NAME_REPO : ${{ github.repository }}
19- IMAGE_TAG : latest
17+ IMAGE_NAME : ghcr.io/${{ github.repository }}
18+ CONTAINER_NAME : ${{ secrets.CONTAINER_NAME || github.event.repository.name }}
19+ IMAGE_REGISTRY_URL : ${{ secrets.IMAGE_REGISTRY_URL || 'https://ghcr.io' }}
20+ IMAGE_REGISTRY_USER : ${{ secrets.IMAGE_REGISTRY_USER || github.actor }}
21+ IMAGE_REGISTRY_PASSWORD : ${{ secrets.IMAGE_REGISTRY_PASSWORD || secrets.GITHUB_TOKEN }}
2022
2123 steps :
22- - name : deploy in Docker
24+ - name : Setup env var TAG image production
25+ run : |
26+ echo "IMAGE_TAG=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
27+
28+ - name : Normalize container name
29+ run : |
30+ SAFE_NAME="${CONTAINER_NAME//-/_}"
31+ SAFE_NAME="$(echo "$SAFE_NAME" | tr 'A-Z' 'a-z')"
32+ echo "CONTAINER_NAME=$SAFE_NAME" >> $GITHUB_ENV
33+
34+ - name : Deploy in Docker
2335 run : |
24- echo $GIT_PASSWORD | docker login $IMAGE_REGISTRY -u $GIT_USERNAME --password-stdin
25- docker rm -f "$NAME_REPO"
26- docker run -d --restart=unless-stopped --name "$NAME_REPO" -p "$PUBLISH_PORT:$EXPOSE_PORT" "$DOCKER_IMAGE_NAME:$IMAGE_TAG"
27- echo "El container $NAME_REPO, se ejecuto correctamente"
36+ echo $IMAGE_REGISTRY_PASSWORD | docker login $IMAGE_REGISTRY_URL -u $IMAGE_REGISTRY_USER --password-stdin
37+ docker rm -f "$CONTAINER_NAME"
38+ docker run -d --restart=unless-stopped --name "$CONTAINER_NAME" -p "$PUBLISH_PORT:$EXPOSE_PORT" "$IMAGE_NAME:$IMAGE_TAG"
39+ if [ "$(docker inspect -f '{{.State.Running}}' $CONTAINER_NAME)" != "true" ]; then
40+ echo "El contenedor $CONTAINER_NAME no inicio como se esperaba "
41+ docker logs $CONTAINER_NAME || true
42+ exit 1
43+ fi
44+ echo "El container $CONTAINER_NAME, inicio correctamente"
0 commit comments