From 5c7b9e5360c295ba8e4242265ee36468ad990a67 Mon Sep 17 00:00:00 2001
From: Fortune Iriaye <firiaye@uab.edu>
Date: Wed, 20 Nov 2024 10:46:00 -0600
Subject: [PATCH] Update .gitlab-ci.yml file

---
 .gitlab-ci.yml | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 61 insertions(+)
 create mode 100644 .gitlab-ci.yml

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..5108366
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,61 @@
+default:
+  image: python:3.12-slim
+
+workflow:
+  rules:
+    - if: '$CI_PIPELINE_SOURCE == "web"'
+    - if: '$CI_COMMIT_BRANCH == "main"'
+
+variables:
+  PACKAGE_NAME: "pak"
+  REPO_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi"
+  PIP_CACHE_DIR: "${CI_PROJECT_DIR}/.cache/pip"
+  PIP_INDEX_URL: "https://__token__:${CI_JOB_TOKEN}@gitlab.com/api/v4/projects/${CI_PROJECT_ID}/packages/pypi/simple"
+  PIP_EXTRA_INDEX_URL: "https://pypi.org/simple"
+
+stages:
+  - build
+  - test
+  - publish
+
+build_package:
+  stage: build
+  script:
+    - pip install --upgrade pip
+    - pip install setuptools wheel build
+    - python -m build
+  artifacts:
+    paths:
+      - dist/*
+  cache:
+    paths:
+      - ${PIP_CACHE_DIR}
+
+test_package:
+  stage: test
+  script:
+    - pip install .  
+    - pip install pytest
+    - pytest 
+
+publish_pip:
+  stage: publish
+  script:
+    - pip install twine
+    - twine upload -u gitlab-ci-token -p ${CI_JOB_TOKEN} --repository-url ${REPO_URL} dist/*
+
+build_and_push_docker_image:
+  stage: publish
+  image: docker:latest
+  services:
+    - docker:dind
+  variables:
+    DOCKER_IMAGE_NAME: ${CI_REGISTRY_IMAGE}/${PACKAGE_NAME}
+    DOCKER_TLS_CERTDIR: "/certs"
+  before_script:
+    - echo "${CI_REGISTRY_PASSWORD}" | docker login -u "${CI_REGISTRY_USER}" --password-stdin ${CI_REGISTRY}
+  script:
+    - echo "Building docker image and tagging as latest"
+    - docker pull ${DOCKER_IMAGE_NAME}:latest || true
+    - docker build --build-arg BUILDKIT_INLINE_CACHE=1 --cache-from ${DOCKER_IMAGE_NAME}:latest -t ${DOCKER_IMAGE_NAME}:latest .
+    - docker push ${DOCKER_IMAGE_NAME}:latest
-- 
GitLab