You need to sign in or sign up before continuing.
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:
variables:
PYTHONPATH: "${CI_PROJECT_DIR}"
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:
tags: ["ubuntu", "vm"] # Match your runner tags
......@@ -16,6 +16,7 @@ variables:
- echo "Docker CLI info:"
- docker version
# ----------------- Lint Stage -----------------
lint:
stage: lint
image: python:3.10
......@@ -33,6 +34,7 @@ lint:
- if: '$CI_COMMIT_TAG'
when: never
# ----------------- Test Stage -----------------
test:
stage: test
image: python:3.10
......@@ -52,15 +54,15 @@ test:
- if: '$CI_COMMIT_TAG'
when: never
# ----------------- Diagnostics Stage -----------------
diag:
stage: diag
image: docker:24.0.9
tags: ["ubuntu","vm"]
script:
- echo "Check socket:"
- echo "Check Docker socket and info..."
- ls -l /var/run || true
- stat /var/run/docker.sock || true
- echo "Docker info:"
- docker version || true
- docker info || true
rules:
......@@ -69,18 +71,20 @@ diag:
- if: '$CI_COMMIT_TAG'
when: never
# ----------------- Build Stage -----------------
build:
stage: build
image: docker:24.0.9
extends: .build_template
before_script:
- echo "Building Docker image for commit: ${CI_COMMIT_SHORT_SHA}"
- echo "Logging in to Docker registry..."
- echo "$DOCKER_TOKEN" | docker login -u "$DOCKER_USERNAME" --password-stdin
script:
- echo "Building image..."
- cd . # Replace '.' if your Dockerfile is in a subfolder
- docker build -t $DOCKERHUB_REPO:$CI_COMMIT_SHORT_SHA .
- echo "Building Docker image for commit: ${CI_COMMIT_SHORT_SHA}"
- docker build \
--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:
- echo "Docker image built successfully!"
rules:
......@@ -90,20 +94,31 @@ build:
- if: '$CI_COMMIT_TAG'
when: never
# ----------------- Deploy Stage -----------------
deploy:
stage: deploy
image: docker:24.0.9
tags: ["ubuntu","vm"]
script:
- echo "Logging in to Docker registry..."
- 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
- 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
docker tag $DOCKERHUB_REPO:$CI_COMMIT_SHORT_SHA $DOCKERHUB_REPO:latest;
docker push $DOCKERHUB_REPO:latest;
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:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: never
......
......@@ -13,9 +13,13 @@ RUN pip install --no-cache-dir -r requirements.txt
# Copy the rest of the application code
COPY . .
# ===== Build-time arguments for secrets =====
ARG REDDIT_CLIENT_ID
ARG REDDIT_CLIENT_SECRET
# Environment variables (can be overridden at runtime)
ENV REDDIT_CLIENT_ID="" \
REDDIT_CLIENT_SECRET="" \
ENV REDDIT_CLIENT_ID=$REDDIT_CLIENT_ID \
REDDIT_CLIENT_SECRET=$REDDIT_CLIENT_SECRET \
SUBREDDITS="worldnews" \
POST_LIMIT=10 \
COMMENT_LIMIT=10 \
......
......@@ -20,7 +20,7 @@ load_dotenv()
# --- Validate environment variables ---
try:
subreddits_env = os.getenv("SUBREDDITS")
subreddits_env = os.getenv("SUBREDDITS", "news")
if not subreddits_env:
raise ValueError("Environment variable SUBREDDITS is missing.")
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