diff --git a/Makefile b/Makefile index 02319d0a8..edd9f4ea5 100644 --- a/Makefile +++ b/Makefile @@ -32,8 +32,13 @@ TRAVIS_PACKER_BUILD ?= travis-packer-build UNZIP ?= unzip %: %.yml $(META_FILES) + $(PACKER) --version $(PACKER) build -only=$(BUILDER) <(bin/yml2json < $<) +%-debug: %.yml $(META_FILES) + $(PACKER) --version + $(PACKER) build -only=$(BUILDER) -debug <(bin/yml2json < $<) + .PHONY: all all: $(META_FILES) $(PHP_PACKAGES_FILE) $(SYSTEM_INFO_COMMANDS_FILES) diff --git a/ci-onion.yml b/ci-windows-1803.yml similarity index 63% rename from ci-onion.yml rename to ci-windows-1803.yml index 32fc04d90..112c96e9a 100644 --- a/ci-onion.yml +++ b/ci-windows-1803.yml @@ -1,9 +1,11 @@ --- -description: Travis CI onion build env template +description: Travis CI Windows 1803 Core (for containers) build env template variables: gce_account_file: "{{ env `GCE_ACCOUNT_FILE` }}" gce_project_id: "{{ env `GCE_PROJECT_ID` }}" - image_name: travis-ci-onion-2016-{{ timestamp }}-<%= git_desc %> + gce_image_family: "windows-1803-core-for-containers" + image_name: travis-ci-windows-1803-containers-{{ timestamp }}-<%= git_desc %> + dist_name: 1803-containers travis_cookbooks_branch: "{{ env `TRAVIS_COOKBOOKS_BRANCH` }}" travis_cookbooks_edge_branch: master travis_cookbooks_sha: "{{ env `TRAVIS_COOKBOOKS_SHA` }}" @@ -12,32 +14,31 @@ builders: - type: googlecompute name: googlecompute communicator: winrm - winrm_username: packer_user + winrm_username: travis winrm_use_ssl: true winrm_insecure: true - image_description: Travis CI Onion + image_description: Travis CI Windows 1803 Core (for containers) account_file: "{{ user `gce_account_file` }}" project_id: "{{ user `gce_project_id` }}" - source_image: windows-server-2016-dc-v20180911 + source_image: "{{ user `gce_image_family` }}" zone: us-central1-a image_name: "{{ user `image_name` }}" machine_type: n1-standard-4 - disk_size: 50 + disk_size: 70 metadata: - windows-startup-script-cmd: "winrm quickconfig -quiet & net user /add packer_user & net localgroup administrators packer_user /add & winrm set winrm/config/service/auth @{Basic=\"true\"} & powershell -Command \"& {Set-ExecutionPolicy AllSigned -Force}\"" + windows-startup-script-cmd: "winrm quickconfig -quiet & net user /add travis & net localgroup administrators travis /add & winrm set winrm/config/service/auth @{Basic=\"true\"} & powershell -Command \"& {Set-ExecutionPolicy AllSigned -Force}\"" tags: - ci - - onion + - windows + - windows-1803 - travis-ci-packer-templates + state_timeout: 10m provisioners: - type: file source: tmp/git-meta destination: c:/windows/temp/ - type: file - source: packer-assets/windows-server-2016-normal-purge.txt - destination: c:/windows/temp/purge.txt -- type: file - source: packer-assets/windows-server-2016-ci-onion-packages.txt + source: packer-assets/windows-server-1803-packages.txt destination: c:/windows/temp/packages.txt - type: file source: packer-scripts/Run-BashScript.ps1 @@ -58,19 +59,7 @@ provisioners: - PACKER_ENV_DIR=/c/.packer-env - TRAVIS_COOKBOOKS_BRANCH={{ user `travis_cookbooks_branch` }} - TRAVIS_COOKBOOKS_SHA={{ user `travis_cookbooks_sha` }} - execute_command: "{{ .Vars }} c:/windows/temp/Run-BashScript.ps1 -bashscript '{{ .Path }}'" -# TODO: use chef to do things (???) -# - type: chef-solo -# guest_os_type: windows -# config_template: chef-solo.rb.tmpl -# cookbook_paths: -# - cookbooks -# remote_cookbook_paths: -# - c:/windows/temp/chef-stuff/travis-cookbooks/cookbooks -# - c:/windows/temp/chef-stuff/travis-cookbooks/community-cookbooks -# json: {} -# run_list: -# - recipe[travis_ci_onion] + execute_command: powershell -executionpolicy bypass "& { if (Test-Path variable:global:ProgressPreference){$ProgressPreference='SilentlyContinue'};. {{.Vars}}; & c:/windows/temp/Run-BashScript.ps1 -bashscript '{{.Path}}'; exit $LastExitCode }" - type: powershell scripts: # TODO: write job board data via chef @@ -79,10 +68,15 @@ provisioners: environment_vars: - "IMAGE_METADATA_TARBALL=/c/windows/temp/image-metadata-{{ user `image_name` }}.tar.bz2" - JOB_BOARD_REGISTER_FILE=/c/travis-job-board-register.yml + - JOB_BOARD_IMAGE_DIST={{ user `dist_name` }} - PACKER_ENV_DIR=/c/.packer-env - SYSTEM_INFO_JSON=/c/travis_system_info.json - TMPDIR=/c/windows/temp - execute_command: "{{ .Vars }} c:/windows/temp/Run-BashScript.ps1 -bashscript '{{ .Path }}'" + - NODE_ATTRIBUTES_YML=/c/.node-attributes.yml + - RSPEC_JSON_DIR=/c/Users/travis + - DPKG_MANIFEST_JSON=/c/.dpkg-manifest.json + - BIN_LIB_CHECKSUMS=/c/.bin-lib.SHA256SUMS + execute_command: powershell -executionpolicy bypass "& { if (Test-Path variable:global:ProgressPreference){$ProgressPreference='SilentlyContinue'};. {{.Vars}}; & c:/windows/temp/Run-BashScript.ps1 -bashscript '{{.Path}}'; exit $LastExitCode }" - type: file source: "c:/windows/temp/image-metadata-{{ user `image_name` }}.tar.bz2" destination: tmp/image-metadata-{{ user `image_name` }}.tar.bz2 diff --git a/cookbooks/travis_ci_onion/README.md b/cookbooks/travis_ci_onion/README.md deleted file mode 100644 index ba76ada53..000000000 --- a/cookbooks/travis_ci_onion/README.md +++ /dev/null @@ -1,4 +0,0 @@ -travis_ci_onion Cookbook -======================== - -A wrapper cookbook for the onion CI image. diff --git a/cookbooks/travis_ci_opal/attributes/default.rb b/cookbooks/travis_ci_opal/attributes/default.rb index 4043a61de..0b297ca3e 100644 --- a/cookbooks/travis_ci_opal/attributes/default.rb +++ b/cookbooks/travis_ci_opal/attributes/default.rb @@ -146,6 +146,7 @@ haxe julia perl + perl6 r rust ] diff --git a/cookbooks/travis_ci_sardonyx/attributes/default.rb b/cookbooks/travis_ci_sardonyx/attributes/default.rb index 3c070cd84..778d2a57d 100644 --- a/cookbooks/travis_ci_sardonyx/attributes/default.rb +++ b/cookbooks/travis_ci_sardonyx/attributes/default.rb @@ -14,9 +14,9 @@ '/var/tmp/sardonyx-system-info-commands.yml' php_aliases = { - '5.6' => '5.6.36', - '7.1' => '7.1.19', - '7.2' => '7.2.7' + '5.6' => '5.6.40', + '7.1' => '7.1.27', + '7.2' => '7.2.15' } override['travis_build_environment']['php_versions'] = php_aliases.values override['travis_build_environment']['php_default_version'] = php_aliases['7.2'] diff --git a/cookbooks/travis_ci_onion/.rspec b/cookbooks/travis_ci_windows_1803/.rspec similarity index 100% rename from cookbooks/travis_ci_onion/.rspec rename to cookbooks/travis_ci_windows_1803/.rspec diff --git a/cookbooks/travis_ci_windows_1803/README.md b/cookbooks/travis_ci_windows_1803/README.md new file mode 100644 index 000000000..e7ea09b10 --- /dev/null +++ b/cookbooks/travis_ci_windows_1803/README.md @@ -0,0 +1,4 @@ +travis_ci_windows_1803 Cookbook +======================== + +A wrapper cookbook for the Windows 1803 CI image. diff --git a/cookbooks/travis_ci_onion/attributes/default.rb b/cookbooks/travis_ci_windows_1803/attributes/default.rb similarity index 99% rename from cookbooks/travis_ci_onion/attributes/default.rb rename to cookbooks/travis_ci_windows_1803/attributes/default.rb index 502fa2c0e..e361aa8bc 100644 --- a/cookbooks/travis_ci_onion/attributes/default.rb +++ b/cookbooks/travis_ci_windows_1803/attributes/default.rb @@ -62,7 +62,7 @@ ruby_interpreter ] override['travis_packer_templates']['job_board']['languages'] = %w[ - __onion__ + __windows_1803__ bash minimal sh diff --git a/cookbooks/travis_ci_onion/metadata.rb b/cookbooks/travis_ci_windows_1803/metadata.rb similarity index 77% rename from cookbooks/travis_ci_onion/metadata.rb rename to cookbooks/travis_ci_windows_1803/metadata.rb index 89731a989..2ae03ab16 100644 --- a/cookbooks/travis_ci_onion/metadata.rb +++ b/cookbooks/travis_ci_windows_1803/metadata.rb @@ -1,10 +1,10 @@ # frozen_string_literal: true -name 'travis_ci_onion' +name 'travis_ci_windows_1803' maintainer 'Travis CI GmbH' -maintainer_email 'contact+travis-ci-onion-cookbook@travis-ci.org' +maintainer_email 'contact+travis-ci-windows-cookbook@travis-ci.org' license 'MIT' -description 'Installs/Configures travis_ci_onion' +description 'Installs/Configures travis_ci_windows_1803' long_description IO.read(File.join(File.dirname(__FILE__), 'README.md')) version '0.1.0' source_url 'https://github.com/travis-ci/packer-templates' diff --git a/cookbooks/travis_ci_onion/recipes/default.rb b/cookbooks/travis_ci_windows_1803/recipes/default.rb similarity index 97% rename from cookbooks/travis_ci_onion/recipes/default.rb rename to cookbooks/travis_ci_windows_1803/recipes/default.rb index 6cee12093..69f548352 100644 --- a/cookbooks/travis_ci_onion/recipes/default.rb +++ b/cookbooks/travis_ci_windows_1803/recipes/default.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -# Cookbook Name:: travis_ci_onion +# Cookbook Name:: travis_ci_2019 # Recipe:: default # # Copyright 2017, Travis CI GmbH diff --git a/packer-assets/windows-server-1803-packages.txt b/packer-assets/windows-server-1803-packages.txt new file mode 100644 index 000000000..6be622247 --- /dev/null +++ b/packer-assets/windows-server-1803-packages.txt @@ -0,0 +1,21 @@ +7zip.install +cmake.install --installargs 'ADD_CMAKE_TO_PATH=System' +curl +git.install +gnuwin32-make.portable +hashdeep +jq +llvm +mingw +rsync +ruby +wget +winscp +visualstudio2017buildtools --package-parameters "--quiet --wait --norestart --locale en-US --allWorkloads --includeRecommended --includeOptional --add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Component.VC.ATL --add Microsoft.VisualStudio.Component.VC.ATLMFC" +visualstudio2017-workload-netcorebuildtools +visualstudio2017-workload-vctools +visualstudio2017-workload-webbuildtools +windows-sdk-10.1 +microsoft-build-tools +vcredist2017 +wsl diff --git a/packer-assets/windows-server-2016-normal-purge.txt b/packer-assets/windows-server-1803-purge.txt similarity index 100% rename from packer-assets/windows-server-2016-normal-purge.txt rename to packer-assets/windows-server-1803-purge.txt diff --git a/packer-assets/windows-server-2016-ci-onion-packages.txt b/packer-assets/windows-server-2016-ci-onion-packages.txt deleted file mode 100644 index 8b9f49c57..000000000 --- a/packer-assets/windows-server-2016-ci-onion-packages.txt +++ /dev/null @@ -1,23 +0,0 @@ -7zip.install -ant -chromedriver -cmake -curl -firefox -git.install -gradle -jdk10 -jdk8 -jq -lein -maven -mysql -phantomjs -postgresql -python -python2 -ruby -sbt -visualstudio2017buildtools -wget -yarn diff --git a/packer-scripts/Bootstrap-Windows.ps1 b/packer-scripts/Bootstrap-Windows.ps1 index e845c14fd..4dbdfc77e 100644 --- a/packer-scripts/Bootstrap-Windows.ps1 +++ b/packer-scripts/Bootstrap-Windows.ps1 @@ -3,14 +3,17 @@ Set-StrictMode -Version 1.0 function Main { Install-Chocolatey Install-Packages - Create-TravisUser + Clean-Up + #Create-TravisUser Create-StubFiles } function Install-Chocolatey { $webClient = New-Object System.Net.WebClient $installScript = $webClient.DownloadString('https://chocolatey.org/install.ps1') - iex "$installScript" + + invoke-expression "$installScript" + choco feature enable -n allowGlobalConfirmation } @@ -19,11 +22,17 @@ function Install-Packages { | Select-String -NotMatch "^(#.*|)$") { $package = $package.Line.Trim() if ($package -ne "") { - choco install $package + invoke-expression "choco install $package" } } } +function Clean-Up { + choco install choco-cleaner + & C:\ProgramData\chocolatey\bin\choco-cleaner.ps1 + choco uninstall choco-cleaner +} + function Create-TravisUser { $randChars = (35..122) | Get-Random -Count 32 $pwPlain = -join ($randChars | % {[char]$_}) diff --git a/packer-scripts/create-windows-job-board-data b/packer-scripts/create-windows-job-board-data index 55b4555d3..c7f81bede 100755 --- a/packer-scripts/create-windows-job-board-data +++ b/packer-scripts/create-windows-job-board-data @@ -15,12 +15,47 @@ languages: features: - dotnet tags: - dist: server-2016 + dist: $JOB_BOARD_IMAGE_DIST os: windows packer_chef_time: "${nowtime}" + language_default: true + language_none: true language_powershell: true + language_sh: true + language_bash: true + language_shell: true + language_script: true + language_node_js: true + language_javascript: true + language_go: true + language_rust: true + language_ruby: true + language_python: true + language_php: true + language_d: true + language_r: true + language_dart: true + language_haxe: true + language_perl: true + language_julia: true + language_elixir: true + language_erlang: true + language_crystal: true + language_haskell: true + language_java: true + language_pure_java: true + language_clojurescript: true + language_groovy: true + language_kotlin: true + language_scala: true + language_java: true + language_c: true + language_cplusplus: true + language_c++: true + language_cpp: true + language_csharp: true feature_dotnet: true -tags_string: "dist:server-2016,os:windows,packer_chef_time:${nowtime},language_powershell:true,feature_dotnet:true" +tags_string: "dist:$JOB_BOARD_IMAGE_DIST,os:windows,packer_chef_time:${nowtime},language_default:true,language_none:true,language_powershell:true,language_sh:true,language_bash:true,language_shell:true,language_script:true,language_node_js:true,language_javascript:true,language_go:true,language_rust:true,language_ruby:true,language_python:true,language_php:true,language_d:true,language_r:true,language_dart:true,language_haxe:true,language_perl:true,language_julia:true,language_elixir:true,language_erlang:true,language_crystal:true,language_haskell:true,language_java:true,language_pure_java:true,language_clojurescript:true,language_groovy:true,language_kotlin:true,language_scala:true,language_java:true,language_c:true,language_cplusplus:true,language_c++:true,language_cpp:true,language_csharp:true,feature_dotnet:true" EOF } diff --git a/packer-scripts/run-serverspecs b/packer-scripts/run-serverspecs index 357bd8c34..0840c185e 100755 --- a/packer-scripts/run-serverspecs +++ b/packer-scripts/run-serverspecs @@ -61,7 +61,7 @@ __install_chefdk() { >/etc/apt/sources.list.d/chef-stable.list __run_retry 2 30 apt-get update -y - __run_retry 2 30 apt-get install -y chefdk + __run_retry 2 30 apt-get install -y chefdk=3.10.1-1 } __run_retry() { diff --git a/packer-scripts/tfw-bootstrap b/packer-scripts/tfw-bootstrap index 52e14efde..8c9eac06e 100644 --- a/packer-scripts/tfw-bootstrap +++ b/packer-scripts/tfw-bootstrap @@ -9,7 +9,7 @@ main() { apt-get install -yqq curl curl -sSL \ -o "${TMPDIR}/tfw" \ - 'https://raw.githubusercontent.com/travis-ci/tfw/master/tfw' + 'https://raw.githubusercontent.com/travis-ci/tfw/master/bin/tfw' chmod +x "${TMPDIR}/tfw" mv -v "${TMPDIR}/tfw" "${USRLOCALDIR}/bin/tfw" diff --git a/tfw.yml b/tfw.yml index a35649b1b..4bf6c1e65 100644 --- a/tfw.yml +++ b/tfw.yml @@ -30,7 +30,7 @@ builders: image_description: Travis Tiny Floating Whale account_file: "{{ user `gce_account_file` }}" project_id: "{{ user `gce_project_id` }}" - source_image: ubuntu-1604-xenial-v20181023 + source_image: ubuntu-1604-xenial-v20190807 zone: us-central1-a image_name: "{{ user `gce_image_name` }}" machine_type: n1-standard-4 @@ -72,7 +72,6 @@ provisioners: scripts: - packer-scripts/packer-env-dump - packer-scripts/tfw-bootstrap - - packer-scripts/ensure-travis-user - packer-scripts/purge - packer-scripts/install-ubuntu-mainline-kernel - packer-scripts/cleanup