Created
April 20, 2018 07:32
-
-
Save ktsakalozos/415518c873c721b85749e92b8b1ef822 to your computer and use it in GitHub Desktop.
Scripts for ASP.NET delivery to K8s
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
mkdir -p ~/workspace/dotnet | |
cd ~/workspace/dotnet | |
dotnet new razor -o HelloWorldAspNetCore | |
cd HelloWorldAspNetCore | |
dotnet run | |
dotnet publish -c Release | |
cd ~/workspace/dotnet/HelloWorldAspNetCore/ | |
cat ./Dockerfile | |
FROM gcr.io/google-appengine/aspnetcore:2.0 | |
ADD ./bin/Release/netcoreapp2.0/publish/ /app | |
ENV ASPNETCORE_URLS=http://*:${PORT} | |
WORKDIR /app | |
ENTRYPOINT [ "dotnet", "HelloWorldAspNetCore.dll"] | |
docker build -t kjackal/hello-dotnet:v1 . | |
docker run -p 8080:8080 kjackal/hello-dotnet:v1 | |
################################### GH repo ########################################### | |
cd ~/workspace/dotnet/HelloWorldAspNetCore | |
wget https://raw.githubusercontent.com/OmniSharp/generator-aspnet/master/templates/gitignore.txt | |
mv gitignore.txt .gitignore | |
git init; git add . ; git commit -m "Initial commit"; git remote add origin git+ssh://[email protected]/ktsakalozos/HelloWorldAspNetCore.git | |
git push -u origin master | |
################################## DH ################################################# | |
docker login | |
docker push kjackal/hello-dotnet:v1 | |
################################### Prep Jenkins K8s ################################## | |
juju deploy jenkins; juju expose jenkins | |
juju config jenkins password='your_secure_password' | |
juju run --unit jenkins/0 -- 'sudo echo "jenkins ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers' | |
juju scp kubernetes-master/0:config . | |
juju scp config jenkins/0:/var/tmp/config | |
juju run --application kubernetes-worker -- open-port 31576 | |
################################### Jenkins Jobs ####################################### | |
echo "Installing kubectl" | |
sudo snap install kubectl --classic | |
echo "Installing dotnet" | |
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg | |
sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg | |
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-xenial-prod xenial main" > /etc/apt/sources.list.d/dotnetdev.list' | |
sudo apt-get install apt-transport-https -y | |
sudo apt-get update | |
sudo apt-get install dotnet-sdk-2.1.4 -y | |
echo "Installing docker" | |
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common -y | |
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - | |
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | |
sudo apt-get update | |
sudo apt-get install docker-ce -y | |
sudo /snap/bin/kubectl --kubeconfig=/var/tmp/config run hello-dotnet --image=kjackal/hello-dotnet:v1 --port=8080 --record | |
echo "apiVersion: v1 | |
kind: Service | |
metadata: | |
name: hello-dotnet | |
spec: | |
type: NodePort | |
ports: | |
- port: 8080 | |
nodePort: 31576 | |
name: http | |
selector: | |
run: hello-dotnet" > /tmp/expose.yaml | |
sudo /snap/bin/kubectl --kubeconfig=/var/tmp/config apply -f /tmp/expose.yaml | |
#!/bin/bash | |
REPO="https://github.com/ktsakalozos/HelloWorldAspNetCore.git" | |
rm -rf ./HelloWorldAspNetCore | |
git clone $REPO | |
cd HelloWorldAspNetCore | |
# Initialise tags list | |
if [ ! -f /var/tmp/known-tags ]; then | |
git tag > /var/tmp/known-tags | |
echo "Initialising. List of preexisting git tags:" | |
cat /var/tmp/known-tags | |
exit 1 | |
fi | |
mv /var/tmp/known-tags /var/tmp/know-tags.old | |
git tag > /var/tmp/known-tags | |
diff /var/tmp/known-tags /var/tmp/know-tags.old | |
if [ $? == '0' ]; then | |
echo "No new git tags detected." | |
exit 2 | |
fi | |
# We have new tags | |
last_tag=$(grep -v -f /var/tmp/know-tags.old /var/tmp/known-tags | tail -n 1) | |
git checkout tags/${last_tag} | |
echo "Buidling ${last_tag}" | |
dotnet publish -c Release | |
sudo docker login -u kjackal -p <replace_with_docker_password> | |
sudo docker build -t kjackal/hello-dotnet:${last_tag} . | |
sudo docker push kjackal/hello-dotnet:${last_tag} | |
sudo /snap/bin/kubectl --kubeconfig=/var/tmp/config set image deployment/hello-dotnet hello-dotnet=kjackal/hello-dotnet:${last_tag} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment