Add bitbucket codebase for rails workshop.

This commit is contained in:
2023-08-27 11:14:10 +12:00
parent 52d0c5bbc9
commit 6b86df20f7

View File

@ -4,17 +4,19 @@
* Introduction * Introduction
This document captures the setup steps for a 90-minute, hands-on Ruby On Rails workshop on Openshift. This document captures the setup steps for a 90-minute, hands-on [[https://rubyonrails.org/][Ruby On Rails]] workshop on [[https://www.redhat.com/en/technologies/cloud-computing/openshift][Openshift]].
Within the session, participants will: Within the session, participants will:
- Work with a Ruby codebase in Bitbucket. - Work with a Ruby codebase in [[https://bitbucket.org/product/][Bitbucket]].
- Deploy the application on Openshift. - Deploy the application on Openshift.
- Create continuous delivery pipelines with Tekton. - Create continuous delivery pipelines with [[https://tekton.dev/docs/][Tekton]].
* Pre-requisites * Pre-requisites
This guide assumes you have an existing Openshift 4.10+ cluster with cluster admin permissions. This guide assumes you have an existing Openshift 4.10+ cluster with cluster admin permissions.
In my case I have a Red Hat OpenShift on AWS (ROSA) cluster provisioned
* 1 - Preparing the cluster * 1 - Preparing the cluster
1. Log in to the cluster in your terminal with the ~oc~ cli. 1. Log in to the cluster in your terminal with the ~oc~ cli.
@ -48,7 +50,7 @@ to build a new example application in Ruby. Or use kubectl to deploy a simple Ku
Once the namespace is created we can deploy Bitbucket using the official Bitbucket image from Atlassian. Once the namespace is created we can deploy Bitbucket using the official Bitbucket image from Atlassian.
#+begin_src bash :results output #+begin_src bash :results output
oc new-app --image docker.io/atlassian/bitbucket-server --name bitbucket oc --namespace bitbucket new-app --image docker.io/atlassian/bitbucket-server --name bitbucket
#+end_src #+end_src
#+RESULTS: #+RESULTS:
@ -70,7 +72,7 @@ oc new-app --image docker.io/atlassian/bitbucket-server --name bitbucket
Now, let's verify that the Bitbucket pod started successfully. Now, let's verify that the Bitbucket pod started successfully.
#+begin_src bash :results output #+begin_src bash :results output
oc get pods --namespace bitbucket oc --namespace bitbucket get pods
#+end_src #+end_src
@ -81,8 +83,8 @@ oc get pods --namespace bitbucket
As this is running successfully, let's expose it with a ~route~ so that we can access it from our web browser. As this is running successfully, let's expose it with a ~route~ so that we can access it from our web browser.
#+begin_src bash :results output #+begin_src bash :results output
oc create route edge bitbucket --service=bitbucket --port=7990 oc --namespace bitbucket create route edge bitbucket --service=bitbucket --port=7990
oc get route --namespace bitbucket oc --namespace bitbucket get route
#+end_src #+end_src
#+RESULTS: #+RESULTS:
@ -109,20 +111,41 @@ With our Bitbucket server successfully deployed, let's configure it for the work
First step is to create additional users. First step is to create additional users.
#+begin_src bash :results output #+begin_src bash :results none
source .env source .env
for user in 1 2; do for user in {1..30}; do
bitbucket_route=$(oc get route --namespace bitbucket | awk '{print $2}' | tail -n 1) bitbucket_route=$(oc get route --namespace bitbucket | awk '{print $2}' | tail -n 1)
echo curl -v --user "admin:${bitbucket_password}" \ echo curl --user "admin:${bitbucket_password}" \
--request "POST" \ --header "'Content-Type: application/json'" \
--location \ --data ""
--header "'application/x-www-form-urlencoded'" \ "\"https://${bitbucket_route}/rest/api/latest/admin/users?name=user${user}&displayName=user${user}&emailAddress=user${user}%40example.com&password=${bitbucket_user_password}\"" >> users.sh
--data-raw "username=user${user}&fullname=user${user}&email=user${user}%40example.com&password=${bitbucket_user_password}&confirmPassword=${bitbucket_user_password}"
https://${bitbucket_route}/rest/api/latest/admin/users?Create"
name=user${user}&password=${bitbucket_user_password}&displayName=user${user}&emailAddress=user${user}%40example.com" \ cat users.sh
2>&1
done done
chmod +x users.sh && ./users.sh && rm users.sh
#+end_src #+end_src
Each of these users will be forking a copy of a Ruby on Rails codebase, so let's now create that codebase now.
#+begin_src bash :results none
source .env
bitbucket_route=$(oc get route --namespace bitbucket | awk '{print $2}' | tail -n 1)
echo curl --user "admin:${bitbucket_password}" \
--header "'Content-Type: application/json'" \
--data "'{ \"key\": \"MSD\", \"name\": \"Rails Team\", \"description\": \"Rails!\"}'" \
"https://${bitbucket_route}/rest/api/latest/projects" > project.sh
echo curl --user "admin:${bitbucket_password}" \
--header "'Content-Type: application/json'" \
--data "'{\"name\": \"openstreetmap-website\",\"scmId\": \"git\", \"forkable\": true, \"public\": true }'" \
"https://${bitbucket_route}/rest/api/latest/projects/${project_key}/repos" >> project.sh
chmod +x project.sh && ./project.sh && rm project.sh
git clone https://github.com/openstreetmap/openstreetmap-website.git
cd openstreetmap-website
git remote set-url origin "https://admin:${bitbucket_password}@${bitbucket_route}/scm/msd/openstreetmap-website.git"
git push -u origin HEAD:master && cd ../ && rm -rf openstreetmap-website
#+end_src