Setup for Programming Exercises with Bamboo, Bitbucket and Jira¶
This page describes how to set up a programming exercise environment based on Bamboo, Bitbucket and Jira.
Therefore, a check is included within the BambooBuildPlanService that ensures that builds are not started in Docker agents if the development setup is present.
Prerequisites:
Content of this document
Docker-Compose¶
Before you start the docker-compose, check if the bamboo version in the
build.gradle
(search for com.atlassian.bamboo:bamboo-specs
) is
equal to the bamboo version number in the Dockerfile of bamboo stored in
src/main/docker/bamboo/Dockerfile
. If the version number is not
equal adjust the version number in the Dockerfile.
Execute the docker-compose file atlassian.yml
stored in
src/main/docker
e.g. with
docker-compose -f src/main/docker/atlassian.yml up -d
Error Handling: It can happen that there is an overload with other
docker networks
ERROR: Pool overlaps with other one on this address space
. Use the
command docker network prune
to resolve this issue.
Make also sure that docker has enough memory (~ 6GB). To adapt it, go to Preferecences -> Resources
Configure Bamboo, Bitbucket and Jira¶
By default, the Jira instance is reachable under localhost:8081
, the
Bamboo instance under localhost:8085
and the Bitbucket instance
under localhost:7990
.
Get evaluation licenses for Atlassian products: Atlassian Licenses
Create an admin user with the same credentials in all 3 applications. Create a sample project in Jira. Also, you can select the evaluation/internal/test/dev setups if you are asked. Select a
Bitbucket (Server)
license if asked. Do not connect Bitbucket with Jira yet.- Execute the shell script
atlassian-setup.sh
in thesrc/main/docker
directory (e.g. withsrc/main/docker/./atlassian-setup.sh
). This script creates groups, users ([STRIKEOUT:and adds them to the created groups] NOT YET) and disabled application links between the 3 applications Enable the created application links between all 3 application (OAuth Impersonate). The links should open automatically after the shell script has finished. If not open them manually:
The script has already created users and groups but you need to manually assign the users into their respective group in Jira. In our test setup, users 1-5 are students, 6-10 are tutors and 11-15 are instructors. The usernames are artemis_test_user_{1-15} and the password is again the username. When you create a course in artemis you have to manually choose the created groups(students, tutors, instructors).
Use the user directories in Jira to synchronize the users in bitbucket and bamboo:
Go to Jira → User management → Jira user server → Add application → Create one application for bitbucket and one for bamboo → add the IP-address
0.0.0.0/0
to IP AddressesGo to Bitbucket and Bamboo → User Directories → Add Directories → Atlassian Crowd → use the URL
http://jira:8080
as Server URL → use the application name and password which you used in the previous step. Also, you should decrease the synchronisation period (e.g. to 2 minutes). Press synchronise after adding the directory, the users and groups should now be available.
In Bamboo create a global variable named SERVER_PLUGIN_SECRET_PASSWORD, the value of this variable will be used as the secret. The value of this variable should be then stored in
src/main/resources/config/application-artemis.yml
as the value ofartemis-authentication-token-value
.Download the bamboo-server-notifaction-plugin and add it to bamboo. Go to Bamboo → Manage apps → Upload app → select the downloaded .jar file → Upload
Add Maven and JDK:
Go to Bamboo → Server capabilities → Add capabilities menu → Capability type
Executable
→ select typeMaven 3.x
→ insertMaven 3
as executable label → insert/artemis
as path.Add capabilities menu → Capability type
JDK
→ insertJDK
as JDK label → insert/usr/lib/jvm/java-15-oracle
as Java home.
Generate a personal access token
While username and password can still be used as a fallback, this option is already marked as deprecated and will be removed in the future.
9.1 Personal access token for Bamboo.
Log in as the admin user and go to Bamboo -> Profile (top right corner) -> Personal access tokens -> Create token
Insert the generated token into the file
application-artemis.yml
in the sectioncontinuous-integration
:
artemis: continuous-integration: user: <username> password: <password> token: #insert the token here
9.2 Personal access token for Bitbucket.
Log in as the admin user and go to Bitbucket -> View Profile (top right corner) -> Manage account -> Personal access tokens -> Create token
Insert the generated token into the file
application-artemis.yml
in the sectionversion-control
:
artemis: version-control: user: <username> password: <password> token: #insert the token here
Disable XSRF checking Although XSRF checking is highly recommended, we currently have to disable it as Artemis does not yet support sending the required headers.
Log in as the admin user go to Bamboo -> Overview -> Security Settings
Edit the settings and disable XSRF checking:
Configure Artemis¶
Modify
src/main/resources/config/application-artemis.yml
repo-clone-path: ./repos/ repo-download-clone-path: ./repos-download/ encryption-password: artemis-encrypt # arbitrary password for encrypting database values user-management: use-external: true external: url: http://localhost:8081 user: <jira-admin-user> password: <jira-admin-password> admin-group-name: instructors internal-admin: username: artemis_admin password: artemis_admin version-control: url: http://localhost:7990 user: <bitbucket-admin-user> password: <bitbuckt-admin-password> token: <bitbucket-admin-token> continuous-integration: url: http://localhost:8085 user: <bamboo-admin-user> password: <bamboo-admin-password> token: <bamboo-admin-token> vcs-application-link-name: LS1 Bitbucket Server empty-commit-necessary: true artemis-authentication-token-value: <artemis-authentication-token-value>
Modify the application-dev.yml
server: port: 8080 # The port of artemis url: http://172.20.0.1:8080 # needs to be an ip // url: http://docker.for.mac.host.internal:8080 # If the above one does not work for mac try this one // url: http://host.docker.internal:8080 # If the above one does not work for windows try this one
In addition, you have to start Artemis with the profiles bamboo
,
bitbucket
and jira
so that the correct adapters will be used,
e.g.:
--spring.profiles.active=dev,bamboo,bitbucket,jira,artemis
Please read Setup Guide for more details.
How to verify the connection works?¶
Artemis → Jira¶
You can login to Artemis with the admin user you created in Jira
Artemis → Bitbucket¶
You can create a programming exercise
Artemis → Bamboo¶
You can create a programming exercise
Bitbucket → Bamboo¶
The build of the students repository gets started after pushing to it
Bitbucket → Artemis¶
When using the code editor, after clicking on Submit, the text Building and testing… should appear.
Bamboo → Artemis¶
The build result is displayed in the code editor.