Senin, 25 September 2023

SOURCE CODE CICD JENKINS PYTHON STREAMLIT DICODING CODING CAMP 2023

video youtube


Dockerfile

# app/Dockerfile

FROM python:3.9-slim

WORKDIR /app

RUN apt-get update && apt-get install -y \
    build-essential \
    curl \
    software-properties-common \
    git \
    && rm -rf /var/lib/apt/lists/*

COPY app.py /app

RUN pip install streamlit==0.52.2

RUN pip list

RUN pip install protobuf==3.20.0

RUN pip install click==7.1.2

EXPOSE 8501

ENTRYPOINT ["streamlit", "run"]

CMD ["app.py"]

 

Jenkinsfile

pipeline{
    agent any
    stages{
        stage('Build'){
            steps{
                sh 'ls -al'
                }
        }
        stage('Test 1'){
            steps{
                sh 'docker build -t streamlit .'
            }
        }
        stage('Test 2'){
            parallel{
                stage('start'){
                    steps{
                        sh 'docker rm streamlit2'
                        sh './start.sh'
                        }            
                }
                stage('stop'){
                    steps{
                        input message: 'apakah cukup ?'
                        sh './stop.sh'
                        }
                }

            }
        }

    }

}

app.py

import streamlit as st


st.title('aplikasi sederhana dengan streamlit')

st.write('dibuat oleh jefri adi setiawan')
bangun_datar=['silahkan pilih','persegi','segitiga','persegi panjang']

pilih=st.selectbox('',bangun_datar)



if pilih=='persegi':
    st.subheader('Luas Persegi')
    sisi=st.number_input('masukkan panjang sisi (cm)')
    proses=st.button('cari luas persegi')
    if proses:
        luas=sisi**2
        st.write(f'luas persegi adalah {luas} cm^2')

if pilih=='segitiga':
    st.subheader('Luas Segitiga')
    alas=st.number_input('masukkan panjang alas(cm)')
    tinggi=st.number_input('masukkan tinggi(cm)')
    proses=st.button('cari luas segitiga')
    if proses:
        luas=0.5*alas*tinggi
        st.write(f'luas segitiga adalah {luas} cm2')

if pilih=='persegi panjang':
    st.subheader('Luas Persegi Panjang')
    panjang=st.number_input('masukkan panjang (cm)')
    lebar=st.number_input('masukkan lebar (cm)')
    proses=st.button('cari luas persegi panjang')
    if proses:
        luas=panjang*lebar
        st.write(f'luas persegi panjang adalah {luas} cm2')

start.sh

#!/bin/bash

docker run --name streamlit2 -p 8501:8501 streamlit

stop.sh

#!/bin/bash

docker stop streamlit2

 

jenkins-docker

docker run \
      --name jenkins-docker \
      --detach \
      --privileged \
      --network jenkins \
      --network-alias docker \
      --env DOCKER_TLS_CERTDIR=/certs \
      --volume jenkins-docker-certs:/certs/client \
      --volume jenkins-data:/var/jenkins_home \
      --publish 2376:2376 \
      --publish 3000:3000 \
      --publish 8501:8501 \
      --restart always \
      docker:dind \
      --storage-driver overlay2

1 komentar:

  1. mas apakah script python di atas ini, sesuai dengan Submission Pertama Dicoding yang di suruh buat CI menggunakan Jenkins dan python

    BalasHapus

Platform Digital yang Menunjang Pembelajaran, Menurut Pengalaman Saya

Perkembangan teknologi informasi yang sangat pesat sekarang ini memberikan dampak yang signifikan dalam dunia pendidikan. Ibarat dua sisi ma...