Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
software-project-WS25
Reddit Team
Commits
1d94f7d7
You need to sign in or sign up before continuing.
Commit
1d94f7d7
authored
Nov 28, 2025
by
Benavides Ontiveros
Browse files
add .gitlab-ci.yml
parent
44dc2ca4
Pipeline
#12157
failed
Changes
3
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
.gitlab-ci.yml
View file @
1d94f7d7
...
...
@@ -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: upd
ate tag
for
default branch
=====
#
Push l
ate
st
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
...
...
Dockerfile
View file @
1d94f7d7
...
...
@@ -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 \
...
...
app.py
View file @
1d94f7d7
...
...
@@ -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
(
","
)]
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment