Skip to content

Commit

Permalink
👌 IMPROVE: Update to GH Actions (#4)
Browse files Browse the repository at this point in the history
  • Loading branch information
chrisjsewell authored Mar 25, 2021
1 parent c3ff18d commit d3d776f
Show file tree
Hide file tree
Showing 15 changed files with 235 additions and 100 deletions.
5 changes: 5 additions & 0 deletions .ansible-lint
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# use `# noqa xxx` at the end of a line, to ignore a particular error
# or add to the warn_list, to ignore for the whole project
warn_list:
- '208' # File permissions unset or incorrect
- '503' # Tasks that run when changed should likely be handlers
72 changes: 72 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
name: CI

on:
push:
branches: [master]
tags:
- 'v*'
pull_request:

env:
galaxy-name: "marvel-nccr.yambo"

jobs:

pre-commit:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v1
with:
python-version: 3.8
- uses: pre-commit/action@v2.0.0

molecule:

strategy:
matrix:
distro: [ubuntu1604, ubuntu1804, ubuntu2004]
fail-fast: false

runs-on: ubuntu-latest

steps:

- uses: actions/checkout@v2
with:
path: ${{ env.galaxy-name }}

- name: Set up Python 3.8
uses: actions/setup-python@v2
with:
python-version: 3.8

- name: Upgrade pip
run: |
pip install --upgrade pip
pip --version
- name: Install requirements
run: |
pip install wheel
pip install -r requirements.txt
working-directory: ${{ env.galaxy-name }}

- name: Run molecule
run: molecule test
working-directory: ${{ env.galaxy-name }}
env:
MOLECULE_DISTRO: ${{ matrix.distro }}

release:
name: Publish to ansible-galaxy
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')
needs: [pre-commit, molecule]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: robertdebock/galaxy-action@1.0.3
with:
galaxy_api_key: ${{ secrets.GALAXY_API_KEY }}
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
*.swp
.DS_Store
.galaxy_install_info
.vscode/
.tox/
19 changes: 19 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# For use with pre-commit.
# See usage instructions at https://pre-commit.com
repos:

- repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks
rev: v1.5.0
hooks:
- id: pretty-format-yaml
args: [--autofix, --indent, "2", --preserve-quotes]

- repo: https://github.com/adrienverge/yamllint
rev: v1.25.0
hooks:
- id: yamllint

- repo: https://github.com/ansible/ansible-lint
rev: v4.3.5
hooks:
- id: ansible-lint
36 changes: 0 additions & 36 deletions .travis.yml

This file was deleted.

6 changes: 0 additions & 6 deletions .yamllint

This file was deleted.

9 changes: 9 additions & 0 deletions .yamllint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
extends: default
rules:
document-start: disable
line-length:
max: 200
level: warning
indentation:
spaces: 2
indent-sequences: false
52 changes: 49 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
[![CI](https://github.com/marvel-nccr/ansible-role-yambo/workflows/CI/badge.svg)](https://github.com/marvel-nccr/ansible-role-yambo/actions)
[![Ansible Role](https://img.shields.io/ansible/role/25529.svg)](https://galaxy.ansible.com/marvel-nccr/yambo)
[![Release](https://img.shields.io/github/tag/marvel-nccr/ansible-role-yambo.svg)](https://github.com/marvel-nccr/ansible-role-yambo/releases)

# Ansible Role: marvel-nccr.yambo

An ansible role that installs [yambo](http://www.yambo-code.org/) on Ubuntu.
Expand All @@ -12,12 +16,54 @@ See `defaults/main.yml`

## Example Playbook

```yaml
- hosts: servers
roles:
- role: marvel-nccr.yambo
```
## Development and testing
This role uses [Molecule](https://molecule.readthedocs.io/en/latest/#) and [Docker](https://www.docker.com/) for tests.
After installing [Docker](https://www.docker.com/):
Clone the repository into a package named `marvel-nccr.yambo` (the folder must be named the same as the Ansible Galaxy name)

```bash
git clone https://github.com/marvel-nccr/ansible-role-yambo marvel-nccr.yambo
cd marvel-nccr.yambo
```

Then run:

```bash
pip install -r requirements.txt # Installs molecule
molecule test # runs tests
```
- hosts: servers
roles:
- role: marvel-nccr.yambo

or use tox (see `tox.ini`):

```bash
pip install tox
tox
```

## Code style

Code style is formatted and linted with [pre-commit](https://pre-commit.com/).

```bash
pip install pre-commit
pre-commit run -all
```

## Deployment

Deployment to Ansible Galaxy is automated *via* GitHub Actions.
Simply tag a release `vX.Y.Z` to initiate the CI and release workflow.
Note, the release will only complete if the CI tests pass.

## License

MIT
Expand Down
23 changes: 11 additions & 12 deletions defaults/main.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
---
yambo_version: "4.5.2"
yambo_src: yambo-{{ yambo_version }}
yambo_src_archive: "{{ yambo_src }}.tar.gz"
Expand All @@ -7,14 +6,14 @@ yambo_prefix: "/usr/local"
yambo_url: "https://github.com/yambo-code/yambo/archive/{{ yambo_version }}.tar.gz"
yambo_topdir: "{{ yambo_code_folder }}/{{yambo_src}}"
yambo_executables:
- name: yambo
folder: "{{ yambo_prefix }}/bin"
plugin: yambo.yambo
version: "{{ yambo_version }}"
- name: p2y
folder: "{{ yambo_prefix }}/bin"
plugin: yambo.yambo
version: "{{ yambo_version }}"
- name: ypp
folder: "{{ yambo_prefix }}/bin"
version: "{{ yambo_version }}"
- name: yambo
folder: "{{ yambo_prefix }}/bin"
plugin: yambo.yambo
version: "{{ yambo_version }}"
- name: p2y
folder: "{{ yambo_prefix }}/bin"
plugin: yambo.yambo
version: "{{ yambo_version }}"
- name: ypp
folder: "{{ yambo_prefix }}/bin"
version: "{{ yambo_version }}"
15 changes: 7 additions & 8 deletions meta/main.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
---
allow_duplicates: false

galaxy_info:
Expand All @@ -8,11 +7,11 @@ galaxy_info:
license: MIT
min_ansible_version: 2.7
platforms:
- name: Ubuntu
versions:
- xenial
- bionic
- name: Ubuntu
versions:
- xenial
- bionic
galaxy_tags:
- ubuntu
- application
- science
- ubuntu
- application
- science
9 changes: 4 additions & 5 deletions molecule/default/converge.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
---
- hosts: all
become: true

pre_tasks:
- name: Update apt cache.
apt: update_cache=yes cache_valid_time=600
when: ansible_os_family == 'Debian'
- name: Update apt cache.
apt: update_cache=yes cache_valid_time=600
when: ansible_os_family == 'Debian'

roles:
- role: marvel-nccr.yambo
- role: marvel-nccr.yambo
30 changes: 20 additions & 10 deletions molecule/default/molecule.yml
Original file line number Diff line number Diff line change
@@ -1,19 +1,29 @@
---
dependency:
name: galaxy
# requirements_file: molecule/default/requirements.yml
driver:
name: docker
lint: |
set -e
yamllint .
ansible-lint -x ANSIBLE0016
platforms:
- name: instance
image: "${DOCKER_IMAGE:-marvelnccr/ubuntu-docker-base}:${DOCKER_IMAGE_VERSION:-latest}"
command: "${DOCKER_COMMAND:-sleep infinity}"
privileged: true
pre_build_image: true
- name: instance
image: "marvelnccr/docker-${MOLECULE_DISTRO:-ubuntu1804}-ansible:latest"
# by default the container will initialise with systemd as PID1
command: ${MOLECULE_DOCKER_COMMAND:-""}
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
privileged: true
pre_build_image: true
env:
LC_ALL: "en_US.UTF-8"
LANG: "en_US.UTF-8"
provisioner:
name: ansible
# log: true # use for debugging
playbooks:
converge: converge.yml
config_options:
defaults:
# nicer stdout printing
stdout_callback: yaml
bin_ansible_callbacks: true
# add timing to tasks
callback_whitelist: profile_tasks
8 changes: 3 additions & 5 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# for running
ansible~=2.9
ansible~=2.10.0
# for testing
docker
molecule~=3.0
yamllint~=1.17
ansible-lint~=4.1
molecule[docker]~=3.1.0
docker~=4.2
29 changes: 14 additions & 15 deletions tasks/main.yml
Original file line number Diff line number Diff line change
@@ -1,22 +1,21 @@
---
# TODO optimize configure step (fftw, netcdf, hdf5, ...), see
# http://www.yambo-code.org/download/compiling.php
- name: Install required packages
become: true
apt:
name:
- build-essential
- gfortran
- openmpi-common
- openmpi-bin
- libopenmpi-dev
- libfftw3-dev
- libfftw3-bin
- libfftw3-mpi-dev
- liblapack-dev
- libblas-dev
- m4
- wget
- build-essential
- gfortran
- openmpi-common
- openmpi-bin
- libopenmpi-dev
- libfftw3-dev
- libfftw3-bin
- libfftw3-mpi-dev
- liblapack-dev
- libblas-dev
- m4
- wget

# Will only download once
- name: Get Yambo
Expand Down Expand Up @@ -71,6 +70,6 @@
section: "Yambo"
option: "usage"
value: >-
Yambo is compiled and installed in {{ yambo_prefix }}.
Simply run 'yambo'.
Yambo is compiled and installed in {{ yambo_prefix }}.
Simply run 'yambo'.
when: release_notes is defined and release_notes
Loading

0 comments on commit d3d776f

Please sign in to comment.