@@ -43,7 +43,7 @@ inputs:
4343 options :
4444 - libvirt
4545 - virtualbox
46- type : string
46+ type : choice
4747 provision_commands :
4848 default : >-
4949 echo 'AcceptEnv *' >> /etc/ssh/sshd_config;
8888 env :
8989 DEBIAN_FRONTEND : noninteractive
9090 run : |
91+ if [ "${ImageOS}" = "ubuntu24" ]; then
92+ # Ubuntu 24.04 no longer provides Vagrant, install from Hashicorp
93+ sudo bash -c 'curl --silent https://apt.releases.hashicorp.com/gpg | gpg --dearmor > /usr/share/keyrings/hashicorp-archive-keyring.gpg'
94+ sudo bash -c 'echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com '$(lsb_release -cs)' main" > /etc/apt/sources.list.d/hashicorp.list'
95+ fi
9196 sudo apt-get update
9297 sudo apt-get --yes install \
9398 vagrant
99+ if [ "${ImageOS}" = "ubuntu24" ]; then
100+ # Vagrant from Hashicorp installs a bash wrapper
101+ sudo ln --force --symbolic /opt/vagrant/bin/vagrant /usr/bin/vagrant
102+ fi
94103 shell : bash
95104 if : runner.os == 'Linux'
96105
@@ -100,7 +109,8 @@ runs:
100109 run : |
101110 sudo apt-get --yes install \
102111 libvirt-daemon-system \
103- qemu
112+ libvirt-dev \
113+ qemu-system
104114 sudo setfacl -m user:$USER:rw /var/run/libvirt/libvirt-sock
105115 shell : bash
106116 if : runner.os == 'Linux' && env.PROVIDER == 'libvirt'
@@ -203,21 +213,25 @@ runs:
203213
204214 - name : Generate /bin/bash override script
205215 run : |
206- echo "#!/bin/bash" | sudo tee /usr/local/bin/bash
207- echo "SCRIPT=\$(mktemp)" | sudo tee -a /usr/local/bin/bash
208- echo "echo \"#!/usr/bin/env bash\" >> \${SCRIPT}" | sudo tee -a /usr/local/bin/bash
209- echo "echo \"cd \${PWD}\" >> \${SCRIPT}" | sudo tee -a /usr/local/bin/bash
210- echo "echo \"set -euxo pipefail\" >> \${SCRIPT}" | sudo tee -a /usr/local/bin/bash
211- echo "echo \"bash \$@\" >> \${SCRIPT}" | sudo tee -a /usr/local/bin/bash
212- echo "mv \${SCRIPT} ${{ runner.temp }}/command.sh" | sudo tee -a /usr/local/bin/bash
213- echo "chmod a+x ${{ runner.temp }}/command.sh" | sudo tee -a /usr/local/bin/bash
214- echo "rsync --archive --delete ${{ github.workspace }}/ vagrantbox:${{ github.workspace }}/" | sudo tee -a /usr/local/bin/bash
215- echo "rsync --archive --delete ${{ runner.temp }}/ vagrantbox:${{ runner.temp }}/" | sudo tee -a /usr/local/bin/bash
216- echo "vagrant ssh --command \"${{ runner.temp }}/command.sh\"" | sudo tee -a /usr/local/bin/bash
217- echo "EXIT_STATUS=\$?" | sudo tee -a /usr/local/bin/bash
218- echo "rsync --archive --delete vagrantbox:${{ github.workspace }}/ ${{ github.workspace }}/" | sudo tee -a /usr/local/bin/bash
219- echo "rsync --archive --delete vagrantbox:${{ runner.temp }}/ ${{ runner.temp }}/" | sudo tee -a /usr/local/bin/bash
220- echo "exit \${EXIT_STATUS}" | sudo tee -a /usr/local/bin/bash
216+ cat > bash <<EOF
217+ #!/bin/bash
218+ set -euxo pipefail
219+ SCRIPT=\$(mktemp)
220+ echo "#!/usr/bin/env bash" >> \${SCRIPT}
221+ echo "cd \${PWD}" >> \${SCRIPT}
222+ echo "set -euxo pipefail" >> \${SCRIPT}
223+ echo "bash \$@" >> \${SCRIPT}
224+ mv \${SCRIPT} ${{ runner.temp }}/command.sh
225+ chmod a+x ${{ runner.temp }}/command.sh
226+ rsync --archive --delete ${{ github.workspace }}/ vagrantbox:${{ github.workspace }}/
227+ rsync --archive --delete ${{ runner.temp }}/ vagrantbox:${{ runner.temp }}/
228+ vagrant ssh --command "${{ runner.temp }}/command.sh"
229+ EXIT_STATUS=\$?
230+ rsync --archive --delete vagrantbox:${{ github.workspace }}/ ${{ github.workspace }}/
231+ rsync --archive --delete vagrantbox:${{ runner.temp }}/ ${{ runner.temp }}/
232+ exit \${EXIT_STATUS}
233+ EOF
234+ sudo mv bash /usr/local/bin/bash
221235 sudo chmod +x /usr/local/bin/bash
222236 shell : bash
223237
@@ -227,7 +241,7 @@ runs:
227241 with :
228242 post : >-
229243 if [ ! -f ${{ inputs.vagrant_box_descriptor }} ]; then
230- vagrant ssh --command "${{ inputs.pre_package_commands }}";
231- vagrant package --output ${{ inputs.vagrant_box_descriptor }};
244+ vagrant ssh --command "${{ inputs.pre_package_commands }}";
245+ vagrant package --output ${{ inputs.vagrant_box_descriptor }};
232246 fi
233247 post-shell : /bin/bash
0 commit comments