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

Tugas Koneksi Antar Materi Modul 3.1 - Jefri Adi Setiawan, S.Pd

Tugas Koneksi Antar Materi Modul 3.1 Pengambilan Keputusan berdasarkan Nilai-nilai Kebajikan sebagai Pemimpin Jefri Adi Setiawan, S.Pd SMP N...