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
mas apakah script python di atas ini, sesuai dengan Submission Pertama Dicoding yang di suruh buat CI menggunakan Jenkins dan python
BalasHapus