diff --git a/ansible/ci.yml b/ansible/ci.yml index 49b503a3..bb9defca 100644 --- a/ansible/ci.yml +++ b/ansible/ci.yml @@ -4,6 +4,12 @@ - common - lxd_host +- hosts: dub-registry.ci.lxd + vars: + - dub_registry_http_port: 8080 + roles: + - dub_registry_mirror + - hosts: jenkins.ci.lxd vars: - jenkins_http_port: 8080 @@ -76,3 +82,6 @@ ci2.dawg.eu: | mode http server s1 jenkins.ci.lxd:8080 + code-mirror.dlang.io: | + mode http + server s1 dub-registry.ci.lxd:8005 diff --git a/ansible/inventory b/ansible/inventory index 38d2aad4..91113e39 100644 --- a/ansible/inventory +++ b/ansible/inventory @@ -9,6 +9,7 @@ ci_containers jenkins.ci.lxd runner-01.ci.lxd runner-02.ci.lxd +dub-registry.ci.lxd [ci_containers:vars] # ssh proxy into container (running ssh itself) diff --git a/ansible/roles/dub_registry_mirror/files/dub-registry-mirror.service b/ansible/roles/dub_registry_mirror/files/dub-registry-mirror.service new file mode 100644 index 00000000..4780ea1e --- /dev/null +++ b/ansible/roles/dub_registry_mirror/files/dub-registry-mirror.service @@ -0,0 +1,14 @@ +[Unit] +Description=dub-registry mirror +After=network.target remote-fs.target nss-lookup.target + +[Service] +Type=simple +Group=dub-registry +User=dub-registry +ExecStart=/home/dub-registry/dub-registry/dub-registry --mirror=https://code.dlang.org +WorkingDirectory=/home/dub-registry/dub-registry +Restart=on-failure + +[Install] +WantedBy=multi-user.target diff --git a/ansible/roles/dub_registry_mirror/files/dub-registry.patch b/ansible/roles/dub_registry_mirror/files/dub-registry.patch new file mode 100644 index 00000000..06365ed9 --- /dev/null +++ b/ansible/roles/dub_registry_mirror/files/dub-registry.patch @@ -0,0 +1,13 @@ +diff --git a/source/app.d b/source/app.d +index f93da61..00e1e42 100644 +--- a/source/app.d ++++ b/source/app.d +@@ -106,7 +106,7 @@ shared static this() + // start the web server + auto settings = new HTTPServerSettings; + settings.hostName = hostname; +- settings.bindAddresses = ["127.0.0.1"]; ++ settings.bindAddresses = ["0.0.0.0"]; + settings.port = 8005; + settings.sessionStore = new MemorySessionStore; + diff --git a/ansible/roles/dub_registry_mirror/handlers/main.yml b/ansible/roles/dub_registry_mirror/handlers/main.yml new file mode 100644 index 00000000..f80e98ad --- /dev/null +++ b/ansible/roles/dub_registry_mirror/handlers/main.yml @@ -0,0 +1,7 @@ +--- +- name: systemctl daemon-reload + command: systemctl daemon-reload +- name: enable dub-registry-mirror + service: { name: dub-registry-mirror, enabled: yes } +- name: restart dub-registry-mirror + service: { name: dub-registry-mirror, enabled: yes, state: restarted } diff --git a/ansible/roles/dub_registry_mirror/tasks/main.yml b/ansible/roles/dub_registry_mirror/tasks/main.yml new file mode 100644 index 00000000..71837eda --- /dev/null +++ b/ansible/roles/dub_registry_mirror/tasks/main.yml @@ -0,0 +1,35 @@ +--- +- name: install dependencies + apt: { name: "{{ item }}", install_recommends: no, update_cache: yes, cache_valid_time: 3600 } + with_items: [mongodb-server, libevent-dev, libssl-dev, patch] +- name: install dmd + apt: + deb: 'http://downloads.dlang.org/releases/2.x/2.074.1/dmd_2.074.1-0_amd64.deb' + install_recommends: no + update_cache: yes + cache_valid_time: 3600 +- name: create registry user + user: { name: dub-registry } +- name: get dub-registry + unarchive: + remote_src: yes + src: 'https://github.com/dlang/dub-registry/archive/v2.1.0.tar.gz' + dest: /home/dub-registry/ + owner: dub-registry + group: dub-registry +- name: symlink dub-registry + file: { dest: /home/dub-registry/dub-registry, src: /home/dub-registry/dub-registry-2.1.0, state: link } +- name: patch dub-registry bind address + patch: { src: dub-registry.patch, dest: /home/dub-registry/dub-registry/source/app.d } +- name: build dub-registry + command: dub build + args: + chdir: /home/dub-registry/dub-registry + become_user: dub-registry + register: build + changed_when: not build.stdout | search('dub-registry.*up to date') + tags: rebuild + notify: restart dub-registry-mirror +- name: install service file + copy: { src: dub-registry-mirror.service, dest: /etc/systemd/system/ } + notify: [systemctl daemon-reload, enable dub-registry-mirror, restart dub-registry-mirror] diff --git a/ansible/roles/haproxy/tasks/main.yml b/ansible/roles/haproxy/tasks/main.yml index 7e4841af..03fafde5 100644 --- a/ansible/roles/haproxy/tasks/main.yml +++ b/ansible/roles/haproxy/tasks/main.yml @@ -44,7 +44,7 @@ http-request set-header X-Forwarded-Proto https {% for domain in backends.keys() -%} use_backend {{ domain }} if { ssl_fc_sni -i {{ domain }} } - {%- endfor %} + {% endfor %} {% for domain, backend in backends.iteritems() -%} backend {{ domain }} diff --git a/pipeline.groovy b/pipeline.groovy index 596b6023..43bdd0a4 100644 --- a/pipeline.groovy +++ b/pipeline.groovy @@ -162,7 +162,7 @@ def testDownstreamProject (name) { case 'rejectedsoftware/vibe.d': // use DC=dmd to workaround https://github.com/dlang/dub/pull/966 - sh 'sed -i \'/# test building with Meson/,//d\' ./travis-ci.sh' // strip meson tests + sh 'sed -i \'/# test building with Meson/,//d\' travis-ci.sh' // strip meson tests sh 'DC=dmd VIBED_DRIVER=libevent BUILD_EXAMPLE=1 RUN_TEST=1 ./travis-ci.sh' sh 'DC=dmd VIBED_DRIVER=libasync BUILD_EXAMPLE=0 RUN_TEST=0 ./travis-ci.sh' break; @@ -170,7 +170,8 @@ def testDownstreamProject (name) { case 'dlang/dub': sh ''' rm test/issue884-init-defer-file-creation.sh # FIXME - jq '.versions["vibe-d"]="0.7.31"' < dub.selections.json | sponge dub.selections.json + sed -i \'s| defaultRegistryURL = .*;| defaultRegistryURL = "https://code-mirror.dlang.io/";|\' source/dub/dub.d + jq \'.versions["vibe-d"]="0.7.31"\' < dub.selections.json | sponge dub.selections.json dub fetch ddox --version=0.16.0 ''' sh 'DC=$DC ./travis-ci.sh' @@ -260,7 +261,12 @@ def runPipeline() { def repos = [ 'dub': { withEnv(["PATH=${env.WORKSPACE}/dmd/src:${env.PATH}"]) { - dir ('dub') { sh "./build.sh" } + dir ('dub') { + sh '''#!/usr/bin/env bash + sed -i \'s| defaultRegistryURL = .*;| defaultRegistryURL = "https://code-mirror.dlang.io/";|\' source/dub/dub.d + ./build.sh + ''' + } } }, 'tools': {