From c569e02d8ab5ebcbb5a44e10c14799fa097c9bc7 Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Wed, 2 Nov 2022 13:08:03 -0400 Subject: OBS overlays, starting to get publish and edit on res --- roles/publish/tasks/main.yml | 93 ++++++++++++++++++++++++++++++++------------ 1 file changed, 68 insertions(+), 25 deletions(-) (limited to 'roles/publish/tasks/main.yml') 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" -- cgit v1.2.3