Commit 1d94f7d7 authored by Benavides Ontiveros's avatar Benavides Ontiveros
Browse files

add .gitlab-ci.yml

parent 44dc2ca4
Pipeline #12157 failed
...@@ -8,7 +8,7 @@ stages: ...@@ -8,7 +8,7 @@ stages:
variables: variables:
PYTHONPATH: "${CI_PROJECT_DIR}" PYTHONPATH: "${CI_PROJECT_DIR}"
DOCKER_REGISTRY: "docker.io" DOCKER_REGISTRY: "docker.io"
DOCKERHUB_REPO: "$DOCKER_USERNAME/reddit_data_fetcher" # Replace with your new repo name DOCKERHUB_REPO: "$DOCKER_USERNAME/reddit_data_fetcher" # Replace with your repo
.build_template: .build_template:
tags: ["ubuntu", "vm"] # Match your runner tags tags: ["ubuntu", "vm"] # Match your runner tags
...@@ -16,6 +16,7 @@ variables: ...@@ -16,6 +16,7 @@ variables:
- echo "Docker CLI info:" - echo "Docker CLI info:"
- docker version - docker version
# ----------------- Lint Stage -----------------
lint: lint:
stage: lint stage: lint
image: python:3.10 image: python:3.10
...@@ -33,6 +34,7 @@ lint: ...@@ -33,6 +34,7 @@ lint:
- if: '$CI_COMMIT_TAG' - if: '$CI_COMMIT_TAG'
when: never when: never
# ----------------- Test Stage -----------------
test: test:
stage: test stage: test
image: python:3.10 image: python:3.10
...@@ -52,15 +54,15 @@ test: ...@@ -52,15 +54,15 @@ test:
- if: '$CI_COMMIT_TAG' - if: '$CI_COMMIT_TAG'
when: never when: never
# ----------------- Diagnostics Stage -----------------
diag: diag:
stage: diag stage: diag
image: docker:24.0.9 image: docker:24.0.9
tags: ["ubuntu","vm"] tags: ["ubuntu","vm"]
script: script:
- echo "Check socket:" - echo "Check Docker socket and info..."
- ls -l /var/run || true - ls -l /var/run || true
- stat /var/run/docker.sock || true - stat /var/run/docker.sock || true
- echo "Docker info:"
- docker version || true - docker version || true
- docker info || true - docker info || true
rules: rules:
...@@ -69,18 +71,20 @@ diag: ...@@ -69,18 +71,20 @@ diag:
- if: '$CI_COMMIT_TAG' - if: '$CI_COMMIT_TAG'
when: never when: never
# ----------------- Build Stage -----------------
build: build:
stage: build stage: build
image: docker:24.0.9 image: docker:24.0.9
extends: .build_template extends: .build_template
before_script: before_script:
- echo "Building Docker image for commit: ${CI_COMMIT_SHORT_SHA}"
- echo "Logging in to Docker registry..." - echo "Logging in to Docker registry..."
- echo "$DOCKER_TOKEN" | docker login -u "$DOCKER_USERNAME" --password-stdin - echo "$DOCKER_TOKEN" | docker login -u "$DOCKER_USERNAME" --password-stdin
script: script:
- echo "Building image..." - echo "Building Docker image for commit: ${CI_COMMIT_SHORT_SHA}"
- cd . # Replace '.' if your Dockerfile is in a subfolder - docker build \
- docker build -t $DOCKERHUB_REPO:$CI_COMMIT_SHORT_SHA . --build-arg REDDIT_CLIENT_ID="$REDDIT_CLIENT_ID" \
--build-arg REDDIT_CLIENT_SECRET="$REDDIT_CLIENT_SECRET" \
-t $DOCKERHUB_REPO:$CI_COMMIT_SHORT_SHA .
after_script: after_script:
- echo "Docker image built successfully!" - echo "Docker image built successfully!"
rules: rules:
...@@ -90,20 +94,31 @@ build: ...@@ -90,20 +94,31 @@ build:
- if: '$CI_COMMIT_TAG' - if: '$CI_COMMIT_TAG'
when: never when: never
# ----------------- Deploy Stage -----------------
deploy: deploy:
stage: deploy stage: deploy
image: docker:24.0.9 image: docker:24.0.9
tags: ["ubuntu","vm"] tags: ["ubuntu","vm"]
script: script:
- echo "Logging in to Docker registry..."
- echo "$DOCKER_TOKEN" | docker login -u "$DOCKER_USERNAME" --password-stdin - echo "$DOCKER_TOKEN" | docker login -u "$DOCKER_USERNAME" --password-stdin
- echo "Logged into Docker Hub successfully!" - echo "Pushing Docker image to Docker Hub..."
- docker push $DOCKERHUB_REPO:$CI_COMMIT_SHORT_SHA - docker push $DOCKERHUB_REPO:$CI_COMMIT_SHORT_SHA
- echo "Pushed Docker image to Docker Hub successfully!"
# ===== OPTIONAL: update tag for default branch ===== # Push latest tag if on default branch
- if [ "$CI_COMMIT_BRANCH" = "$CI_DEFAULT_BRANCH" ]; then - if [ "$CI_COMMIT_BRANCH" = "$CI_DEFAULT_BRANCH" ]; then
docker tag $DOCKERHUB_REPO:$CI_COMMIT_SHORT_SHA $DOCKERHUB_REPO:latest; docker tag $DOCKERHUB_REPO:$CI_COMMIT_SHORT_SHA $DOCKERHUB_REPO:latest;
docker push $DOCKERHUB_REPO:latest; docker push $DOCKERHUB_REPO:latest;
fi fi
# Optional: Run container to test runtime env variables
- docker run --rm \
-e SUBREDDITS="$SUBREDDITS" \
-e POST_LIMIT="$POST_LIMIT" \
-e COMMENT_LIMIT="$COMMENT_LIMIT" \
-e OUTPUT_DIR="$OUTPUT_DIR" \
$DOCKERHUB_REPO:$CI_COMMIT_SHORT_SHA
rules: rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: never when: never
......
...@@ -13,9 +13,13 @@ RUN pip install --no-cache-dir -r requirements.txt ...@@ -13,9 +13,13 @@ RUN pip install --no-cache-dir -r requirements.txt
# Copy the rest of the application code # Copy the rest of the application code
COPY . . COPY . .
# ===== Build-time arguments for secrets =====
ARG REDDIT_CLIENT_ID
ARG REDDIT_CLIENT_SECRET
# Environment variables (can be overridden at runtime) # Environment variables (can be overridden at runtime)
ENV REDDIT_CLIENT_ID="" \ ENV REDDIT_CLIENT_ID=$REDDIT_CLIENT_ID \
REDDIT_CLIENT_SECRET="" \ REDDIT_CLIENT_SECRET=$REDDIT_CLIENT_SECRET \
SUBREDDITS="worldnews" \ SUBREDDITS="worldnews" \
POST_LIMIT=10 \ POST_LIMIT=10 \
COMMENT_LIMIT=10 \ COMMENT_LIMIT=10 \
......
...@@ -20,7 +20,7 @@ load_dotenv() ...@@ -20,7 +20,7 @@ load_dotenv()
# --- Validate environment variables --- # --- Validate environment variables ---
try: try:
subreddits_env = os.getenv("SUBREDDITS") subreddits_env = os.getenv("SUBREDDITS", "news")
if not subreddits_env: if not subreddits_env:
raise ValueError("Environment variable SUBREDDITS is missing.") raise ValueError("Environment variable SUBREDDITS is missing.")
subreddit_list = [s.strip() for s in subreddits_env.split(",")] subreddit_list = [s.strip() for s in subreddits_env.split(",")]
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment