From a81bf453af600ebf46a0744501046c7bf20f64df Mon Sep 17 00:00:00 2001 From: Conor Finn Date: Wed, 7 Jun 2023 14:41:54 +0100 Subject: [PATCH] Refactor installation into different files RE #62 --- .../ansible/roles/agent/tasks/java11.yml | 17 ++++ .../ansible/roles/agent/tasks/mac-sdk.yml | 34 ++++++++ .../ansible/roles/agent/tasks/main.yml | 77 ++++--------------- .../roles/agent/tasks/start-jenkins-agent.yml | 16 ++++ 4 files changed, 81 insertions(+), 63 deletions(-) create mode 100644 macOS/jenkins-node/ansible/roles/agent/tasks/java11.yml create mode 100644 macOS/jenkins-node/ansible/roles/agent/tasks/mac-sdk.yml create mode 100644 macOS/jenkins-node/ansible/roles/agent/tasks/start-jenkins-agent.yml diff --git a/macOS/jenkins-node/ansible/roles/agent/tasks/java11.yml b/macOS/jenkins-node/ansible/roles/agent/tasks/java11.yml new file mode 100644 index 0000000..6aa04be --- /dev/null +++ b/macOS/jenkins-node/ansible/roles/agent/tasks/java11.yml @@ -0,0 +1,17 @@ +# Set up Java 11 Installation. + +- name: Install Java 11. + community.general.homebrew: + name: java11 + state: present + +- name: Symlink Java 11. + shell: ln -sfn /opt/homebrew/opt/openjdk@11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-11.jdk + become: true + become_user: root + +- name: Ensure that the java install has been added to the path. + ansible.builtin.lineinfile: + path: ~/.zshrc + line: export PATH="/opt/homebrew/opt/openjdk@11/bin:$PATH" + create: true diff --git a/macOS/jenkins-node/ansible/roles/agent/tasks/mac-sdk.yml b/macOS/jenkins-node/ansible/roles/agent/tasks/mac-sdk.yml new file mode 100644 index 0000000..ad77bee --- /dev/null +++ b/macOS/jenkins-node/ansible/roles/agent/tasks/mac-sdk.yml @@ -0,0 +1,34 @@ +# Download and set up the Mac OSX SDK ready for Conda to use. + +- name: Install gnu-tar. + community.general.homebrew: + name: gnu-tar + state: present + +- name: Ensure that gnu-tar has been added to the path + ansible.builtin.lineinfile: + path: ~/.zshenv + line: export PATH="/opt/homebrew/opt/gnu-tar/libexec/gnubin:$PATH" + create: true + +- name: Download the Mac SDK. + ansible.builtin.get_url: + url: https://github.com/phracker/MacOSX-SDKs/releases/download/11.3/MacOSX10.10.sdk.tar.xz + dest: ~/ + mode: '777' + force: true + +- name: Unarchive the Mac SDK. + ansible.builtin.unarchive: + src: ~/MacOSX10.10.sdk.tar.xz + dest: ~/ + remote_src: yes + +- name: Move the Mac SDK into opt + shell: mv /Users/mantidbuilder/MacOSX10.10.sdk /opt + become: true + +- name: Remove the downloaded Mac SDK Tarball. + ansible.builtin.file: + path: ~/MacOSX10.10.sdk.tar.xz + state: absent diff --git a/macOS/jenkins-node/ansible/roles/agent/tasks/main.yml b/macOS/jenkins-node/ansible/roles/agent/tasks/main.yml index a9956cd..04d2dca 100644 --- a/macOS/jenkins-node/ansible/roles/agent/tasks/main.yml +++ b/macOS/jenkins-node/ansible/roles/agent/tasks/main.yml @@ -26,54 +26,17 @@ name: git state: latest -- name: Install gnu-tar. - community.general.homebrew: - name: gnu-tar - state: present - -- name: Ensure that gnu-tar has been added to the path - ansible.builtin.lineinfile: - path: ~/.zshenv - line: export PATH="/opt/homebrew/opt/gnu-tar/libexec/gnubin:$PATH" - create: true - -- name: Install Java 11. - community.general.homebrew: - name: java11 - state: present - -- name: Symlink Java 11. - shell: ln -sfn /opt/homebrew/opt/openjdk@11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-11.jdk - become: true - become_user: root - -- name: Ensure that the java install has been added to the path. - ansible.builtin.lineinfile: - path: ~/.zshrc - line: export PATH="/opt/homebrew/opt/openjdk@11/bin:$PATH" - create: true - -- name: Download the Mac SDK. - ansible.builtin.get_url: - url: https://github.com/phracker/MacOSX-SDKs/releases/download/11.3/MacOSX10.10.sdk.tar.xz - dest: ~/ - mode: '777' - force: true - -- name: Unarchive the Mac SDK. - ansible.builtin.unarchive: - src: ~/MacOSX10.10.sdk.tar.xz - dest: ~/ - remote_src: yes - -- name: Move the Mac SDK into opt - shell: mv /Users/mantidbuilder/MacOSX10.10.sdk /opt - become: true - -- name: Remove the downloaded Mac SDK's Tarball. - ansible.builtin.file: - path: ~/MacOSX10.10.sdk.tar.xz - state: absent +- name: Install and Set up Java 11 + include_tasks: java11.yml + +- name: Check for the MacOSX SDK + stat: + path: /opt/MacOSX10.10.sdk + register: sdk_stats + +- name: Download and Install MacOSX SDK + include_tasks: mac-sdk.yml + when: not sdk_stats.stat.exists # Configure macOS Settings. @@ -85,22 +48,10 @@ # Test and start the agent. Note: Connection will only begin consistently every 5th minute if changes are made. -- name: Download jenkins slave script. - shell: curl -o $HOME/jenkins-slave.sh https://raw.githubusercontent.com/mantidproject/mantid/main/buildconfig/Jenkins/jenkins-slave.sh - -- name: Make the slave script executable. - shell: chmod 777 $HOME/jenkins-slave.sh - -- name: Check the Jenkins agent connection script. - script: ./check-connection.sh {{ agent_name }} {{ agent_secret }} - -- name: Setup a chrontab entry to run the agent script every 5th minute. - ansible.builtin.cron: - name: "Run slave script" - minute: "*/5" - job: "$HOME/jenkins-slave.sh {{ agent_name }} {{ agent_secret }}" +- name: Start the jenkins agent + include_tasks: start-jenkins-agent.yml -# Tidy up the evironment. +# Tidy up the environment. - name: Remove user from sudoers on new macs. shell: /Applications/Privileges.app/Contents/Resources/PrivilegesCLI --remove diff --git a/macOS/jenkins-node/ansible/roles/agent/tasks/start-jenkins-agent.yml b/macOS/jenkins-node/ansible/roles/agent/tasks/start-jenkins-agent.yml new file mode 100644 index 0000000..fd487d3 --- /dev/null +++ b/macOS/jenkins-node/ansible/roles/agent/tasks/start-jenkins-agent.yml @@ -0,0 +1,16 @@ +# Test and start the agent. Note: Connection will only begin consistently every 5th minute if changes are made. + +- name: Download jenkins slave script. + shell: curl -o $HOME/jenkins-slave.sh https://raw.githubusercontent.com/mantidproject/mantid/main/buildconfig/Jenkins/jenkins-slave.sh + +- name: Make the slave script executable. + shell: chmod 777 $HOME/jenkins-slave.sh + +- name: Check the Jenkins agent connection script. + script: ./check-connection.sh {{ agent_name }} {{ agent_secret }} + +- name: Setup a chrontab entry to run the agent script every 5th minute. + ansible.builtin.cron: + name: "Run slave script" + minute: "*/5" + job: "$HOME/jenkins-slave.sh {{ agent_name }} {{ agent_secret }}"