summaryrefslogtreecommitdiffstats
path: root/roles/publish/tasks/main.yml
diff options
context:
space:
mode:
Diffstat (limited to 'roles/publish/tasks/main.yml')
-rw-r--r--roles/publish/tasks/main.yml93
1 files changed, 68 insertions, 25 deletions
diff --git a/roles/publish/tasks/main.yml b/roles/publish/tasks/main.yml
index 28566a5..ddee975 100644
--- a/roles/publish/tasks/main.yml
+++ b/roles/publish/tasks/main.yml
@@ -1,66 +1,106 @@
---
-- name: Set up SSH directory
- ansible.builtin.file:
- path: "/home/{{ emacsconf_user }}/.ssh"
- state: directory
- mode: '0700'
+- name: Set up user
+ include_role:
+ name: user
- name: Install SSH key for EmacsConf wiki
ansible.builtin.get_url:
url: https://emacsconf.org/id_rsa_anon_git_emacsconf
dest: "/home/{{ emacsconf_user }}/.ssh/id_rsa_anon_git_emacsconf"
+ owner: "{{ emacsconf_user }}"
+ group: "{{ emacsconf_group }}"
mode: '0600'
-- name: Install the SSH key for orga
- template:
- src: id_rsa
- dest: "/home/{{ emacsconf_user }}/.ssh/id_rsa"
+- name: Check SSH config for line
+ blockinfile:
+ path: /home/{{ emacsconf_user }}/.ssh/config
mode: '0600'
-- name: Change ownership of SSH directory
- file:
- path: "/home/{{ emacsconf_user }}/.ssh"
- recurse: true
owner: "{{ emacsconf_user }}"
-
+ group: "{{ emacsconf_group }}"
+ create: yes
+ block: |
+ Host anon-emacsconf
+ Hostname git.emacsconf.org
+ Port 22
+ User anon
+ IdentityFile ~/.ssh/id_rsa_anon_git_emacsconf
+- name: Install the SSH key for orga
+ copy:
+ src: "{{ item }}"
+ dest: "/home/{{ emacsconf_user }}/.ssh"
+ owner: "{{ emacsconf_user }}"
+ group: "{{ emacsconf_group }}"
+ mode: '0600'
+ loop:
+ - id_rsa
+ - id_rsa.pub
+- name: Check if local Emacs already exists
+ stat:
+ path: "/usr/local/bin/emacs"
+ register: emacs
- name: Set up Emacs
+ become: yes
include: emacs.yml
+ when: not emacs.stat.exists
+- name: Configure git
+ template:
+ src: git-config
+ dest: "~{{ emacsconf_user }}/.gitconfig"
+ owner: "{{ emacsconf_user }}"
+ group: "{{ emacsconf_group }}"
- name: Ensure configuration directory exists
file:
path: "{{ emacs_config_dir }}"
+ owner: "{{ emacsconf_user }}"
+ group: "{{ emacsconf_group }}"
state: directory
- name: Set up Emacs configuration for non-interactive publishing
template:
src: emacsconf-config.el
dest: "{{ emacs_config_dir }}/emacsconf-config.el"
-
+ owner: "{{ emacsconf_user }}"
+ group: "{{ emacsconf_group }}"
- name: Check if Emacs base configuration already exists
- become: true
lineinfile:
dest: "{{ emacs_config_dir }}/init.el"
state: present
regexp: "emacsconf-config"
- line: "(load-file \"emacsconf-config.el\")"
+ line: "(load-file \"{{ emacs_config_dir }}/emacsconf-config.el\")"
+ owner: "{{ emacsconf_user }}"
+ group: "{{ emacsconf_group }}"
create: yes
+- name: Set up compile-media
+ become_user: "{{ emacsconf_user }}"
+ git:
+ repo: https://github.com/sachac/compile-media.git
+ dest: "~{{ emacsconf_user }}/compile-media"
- name: Set up or update repositories
- become: false
+ become_user: "{{ emacsconf_user }}"
tags: publish
block:
- name: Check out wiki repository
ansible.builtin.git:
- repo: git://git.emacsconf.org/emacsconf-wiki
+ repo: git@anon-emacsconf:/emacsconf-wiki
dest: "{{ emacsconf_edit_wiki_dir }}"
+ key_file: "~{{ emacsconf_user }}/.ssh/id_rsa_anon_git_emacsconf"
register: wiki_clone
failed_when:
- wiki_clone.failed
- not 'Local modifications exist in repository' in wiki_clone.msg
- not 'Failed to checkout branch' in wiki_clone.msg
+ - name: Configure git to use
+ shell: git config core.sshCommand "ssh -i ~{{ emacsconf_user }}/.ssh/id_rsa_anon_git_emacsconf -F /dev/null"
+ args:
+ chdir: "{{ emacsconf_edit_wiki_dir }}"
- name: Check out emacsconf-el
ansible.builtin.git:
repo: git@git.emacsconf.org:pub/emacsconf-el
+ key_file: "~{{ emacsconf_user }}/.ssh/id_rsa"
dest: "{{ emacsconf_el_dir }}"
register: elisp
failed_when:
- elisp.failed
- not 'Local modifications exist in repository' in elisp.msg
- not 'Failed to checkout branch' in elisp.msg
+ debugger: on_failed
- name: Check out emacsconf-2022-private
ansible.builtin.git:
repo: git@git.emacsconf.org:emacsconf-2022-private
@@ -75,20 +115,23 @@
path: "{{ item }}"
owner: "{{ emacsconf_user }}"
recurse: true
- with_items:
- - "{{ emacsconf_config_dir }}"
+ loop:
+ - "{{ emacs_config_dir }}"
- "{{ emacsconf_el_dir }}"
- "{{ emacsconf_private_dir }}"
- "{{ emacsconf_edit_wiki_dir }}"
- name: Publish
- tags: publish
+ tags: publish, publish-only
block:
- name: Publish the schedule
- command: emacs -l "{{ emacsconf_config_dir }}/emacsconf-config.el" --batch --exec '(emacsconf-generate-main-schedule)'
- when: (force_publish|d(false)) or ((private.changed or elisp.changed) and slug is not defined)
+ command: emacs -l "{{ emacs_config_dir }}/emacsconf-config.el" --batch --exec '(emacsconf-publish-schedule)'
+ when: ((publish|d("")) == "schedule") or (((private is defined and private.changed) or (elisp is defined and elisp.changed)) and slug is not defined)
- name: Update a specific talk's nav page
tags: publish-talk
- command: emacs -l "{{ emacsconf_config_dir }}/emacsconf-config.el" --batch --exec '(emacsconf-with-talk-heading "{{ slug }}" (emacsconf-update-talk))'
+ command: emacs -l "{{ emacs_config_dir }}/emacsconf-config.el" --batch --exec '(emacsconf-with-talk-heading "{{ slug }}" (emacsconf-update-talk))'
when: slug is defined
- name: Commit the wiki and push
shell: cd {{ emacsconf_edit_wiki_dir }}; git commit -m 'Update from ansible' -a; git push
+ - name: Publish the backstage index
+ command: emacs -l "{{ emacs_config_dir }}/emacsconf-config.el" --batch --exec '(emacsconf-publish-backstage-index)'
+ when: (publish|d("")) == "backstage"