├── .ansible-lint
├── .ansible-lint-ignore
├── .cspell.json
├── .envrc
├── .github
└── workflows
│ └── ci.yml
├── .gitignore
├── .gitleaks.toml
├── .groovylintrc.json
├── .mega-linter.yml
├── .pre-commit-config.yaml
├── .python-version
├── .travis.yml
├── .vscode
└── settings.json
├── .yamllint
├── Dockerfile
├── LICENSE
├── Pipfile
├── Pipfile.lock
├── README.md
├── ansible.cfg
├── defaults
└── main.yml
├── eclipse.yml
├── files
├── add_pydev_certificate.py
└── bookmarks.xml
├── handlers
└── main.yml
├── hosts
├── meta
├── ansigenome.yml
└── main.yml
├── molecule
└── default
│ ├── Dockerfile.j2
│ ├── INSTALL.rst
│ ├── converge.yml
│ ├── molecule.yml
│ └── tests
│ ├── __pycache__
│ └── test_default.cpython-36.pyc
│ └── test_default.py
├── requirements.yml
├── tasks
├── cleanups.yml
├── config.yml
├── eclipse.yml
├── features.yml
├── install_CentOS.yml
├── install_MacOSX.yml
├── install_Ubuntu.yml
├── lombok.yml
└── main.yml
├── templates
├── Dockerfile.j2
├── build.sh.j2
└── eclipse.desktop.j2
└── tests-TODELETE
├── .travis.yml
├── requirements.yml
└── test.yml
/.ansible-lint:
--------------------------------------------------------------------------------
1 | ---
2 | exclude_paths:
3 | - ./report/
4 | - ./requirements.yml
5 | - ./.travis.yml
6 | - ./playbooks/group_vars/all/vault.yml
7 | - ./docker/
8 | - ./roles/Stouts.python/
9 | - .gitlab-ci.yml
10 | # parseable: true
11 | # quiet: true
12 | # rulesdir:
13 | # - ./rule/directory/
14 | skip_list:
15 | - '602' # See https://github.com/ansible/ansible-lint/issues/457
16 | - '204'
17 | - '503'
18 | - '208' # File permissions not mentioned
19 | - filenotfounderror
20 | - 'fqcn-builtins'
21 | # - skip_this_tag
22 | # - and_this_one_too
23 | # - skip_this_id
24 | # tags:
25 | # - run_this_tag
26 | warn_list: # or 'skip_list' to silence them completely
27 | - yaml # Violations reported by yamllint
28 | - var-spacing # Jinja2 variables and filters should have spaces before and after.
29 | # - syntax-check[specific]
30 | use_default_rules: true
31 | # verbosity: 1
32 |
33 | # Offline mode disables installation of requirements.yml
34 | offline: true
35 |
--------------------------------------------------------------------------------
/.ansible-lint-ignore:
--------------------------------------------------------------------------------
1 | # This file contains ignores rule violations for ansible-lint
2 | .mega-linter.yml yaml[comments]
3 | .pre-commit-config.yaml yaml[comments]
4 | defaults/main.yml jinja[spacing]
5 | defaults/main.yml var-naming[pattern]
6 | eclipse.yml role-name[path]
7 | handlers/main.yml name[casing]
8 | handlers/main.yml no-free-form
9 | molecule/default/converge.yml role-name[path]
10 | molecule/default/molecule.yml yaml[comments]
11 | requirements.yml yaml[comments]
12 | tasks/cleanups.yml ignore-errors
13 | tasks/cleanups.yml name[casing]
14 | tasks/cleanups.yml no-free-form
15 | tasks/config.yml name[casing]
16 | tasks/config.yml no-free-form
17 | tasks/config.yml yaml[comments]
18 | tasks/eclipse.yml deprecated-module
19 | tasks/eclipse.yml ignore-errors
20 | tasks/eclipse.yml literal-compare
21 | tasks/eclipse.yml name[casing]
22 | tasks/eclipse.yml name[missing]
23 | tasks/eclipse.yml no-changed-when
24 | tasks/eclipse.yml no-free-form
25 | tasks/eclipse.yml no-jinja-when
26 | tasks/features.yml command-instead-of-shell
27 | tasks/features.yml ignore-errors
28 | tasks/features.yml name[missing]
29 | tasks/features.yml no-changed-when
30 | tasks/install_CentOS.yml ignore-errors
31 | tasks/install_CentOS.yml name[casing]
32 | tasks/install_CentOS.yml name[missing]
33 | tasks/install_CentOS.yml no-free-form
34 | tasks/install_MacOSX.yml name[missing]
35 | tasks/install_MacOSX.yml no-free-form
36 | tasks/install_Ubuntu.yml ignore-errors
37 | tasks/install_Ubuntu.yml jinja[spacing]
38 | tasks/install_Ubuntu.yml name[casing]
39 | tasks/install_Ubuntu.yml name[missing]
40 | tasks/install_Ubuntu.yml no-free-form
41 | tasks/install_Ubuntu.yml yaml[comments-indentation]
42 | tasks/lombok.yml name[missing]
43 | tasks/lombok.yml no-free-form
44 | tasks/main.yml deprecated-module
45 | tasks/main.yml name[missing]
46 | tasks/main.yml no-free-form
47 | tests-TODELETE/test.yml args[module]
48 | tests-TODELETE/test.yml name[play]
49 | tests-TODELETE/test.yml no-free-form
50 | tests-TODELETE/test.yml role-name[path]
51 |
--------------------------------------------------------------------------------
/.cspell.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "0.1",
3 | "language": "en",
4 | "ignorePaths": [
5 | "**/node_modules/**",
6 | "**/vscode-extension/**",
7 | "**/.git/**",
8 | ".vscode",
9 | "package-lock.json",
10 | "playbooks/files/python/**",
11 | "requirements.txt",
12 | "roles/**",
13 | "report"
14 | ],
15 | "words": [
16 | "Andrieu",
17 | "Alban",
18 | "Nabla",
19 | "albandri",
20 | "albandrieu",
21 | "virtualenv",
22 | "tocstop",
23 | "toc",
24 | "Jenkinsfile",
25 | "graphviz",
26 | "kubernetes",
27 | "skaffold"
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/.envrc:
--------------------------------------------------------------------------------
1 | #
2 | # Commands dependencies
3 | # =====================
4 | #
5 | DIRENV_CMD_DEPENDENCIES="unzip tar mkdir curl chmod rm"
6 | for mandatory_cmd in ${DIRENV_CMD_DEPENDENCIES}; do
7 | if [ -z "$(which ${mandatory_cmd})" ]; then
8 | echo "===> Mandatory command not found: ${mandatory_cmd}"
9 | exit 1
10 | fi
11 | done
12 |
13 | #
14 | # Direnv configuration
15 | # =====================
16 | #
17 |
18 | export DIRENV_TMP_DIR="${PWD}/.direnv"
19 | export DIRENV_BIN_DIR="${DIRENV_TMP_DIR}/bin"
20 | if [ ! -e "${DIRENV_BIN_DIR}" ]; then
21 | mkdir -p "${DIRENV_BIN_DIR}"
22 | fi
23 | export PATH="${DIRENV_BIN_DIR}:${PATH}"
24 |
25 | DIRENV_PYTHON_LIBS_DIR_RELATIVE="$(find ${DIRENV_TMP_DIR} -type d -name site-packages)"
26 | # python package are in venv
27 | if [ ! -e "${DIRENV_PYTHON_LIBS_DIR_RELATIVE}" ]; then
28 | DIRENV_PYTHON_LIBS_DIR_RELATIVE="$(find ${VENV_TMP_DIR} -type d -name site-packages)"
29 | fi
30 | export DIRENV_PYTHON_LIBS_DIR="$(realpath ${DIRENV_PYTHON_LIBS_DIR_RELATIVE})"
31 |
32 | if command -v pyenv >/dev/null 2>&1; then
33 | #
34 | # Python pip requirements
35 | # ==========================
36 | #
37 | for VERSION in $(pyenv versions --bare | egrep '^2.') ; do
38 | pyenv shell ${VERSION} 2>/dev/null ;
39 | pip install py2venv ;
40 | done
41 |
42 | #
43 | # Python pip upgrade
44 | # ==========================
45 | #
46 | # curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
47 | #for VERSION in $(pyenv versions --bare) ; do
48 | # pyenv shell ${VERSION} 2>/dev/null ;
49 | # pip install --upgrade pip ;
50 | #done
51 | fi
52 |
53 | #
54 | # Other configuration
55 | # =====================
56 | #
57 |
58 | #sudo apt install openjdk-17-dbg
59 | #sudo update-java-alternatives -s java-1.17.0-openjdk-amd64
60 |
61 | #
62 | # Node configuration
63 | # =====================
64 | #
65 |
66 | export NODE_VERSIONS=${NODE_VERSIONS:-"v20.15.0"}
67 |
68 | if [ -f ".nvmrc" ] ; then
69 | #
70 | # Nvm installation
71 | # ==========================
72 | #
73 | # curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
74 | NVM_VERSION=${NVM_VERSION:-"v0.39.7"}
75 | NVM_PKG_URL="https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh"
76 | if [ ! -e "${HOME}/.nvm/nvm.sh" ]; then
77 | echo "===> Getting nvm:${NVM_VERSION} (can take a while to execute)"
78 | curl -s -L "${NVM_PKG_URL}" | bash
79 | echo "nvm install ${NODE_VERSIONS}"
80 | nvm install ${NODE_VERSIONS} || true
81 | fi
82 |
83 | source "${HOME}/.nvm/nvm.sh"
84 | nvm use ${NODE_VERSIONS}
85 | fi
86 |
87 | #layout_node
88 |
89 | # Or a specific version
90 | use_nvm ${NODE_VERSIONS}
91 |
92 | export PATH="./node_modules/.bin:${PATH}"
93 |
94 | #
95 | # Python configuration
96 | # =====================
97 | #
98 |
99 | export PYTHON_VERSION=${PYTHON_VERSION:-"3.11.6"}
100 |
101 | #
102 | # Python pyenv installation
103 | # ==========================
104 | #
105 | PYENV_PKG_URL="https://pyenv.run"
106 | if [ ! -e "${HOME}/.pyenv/bin/pyenv" ]; then
107 | echo "===> Getting pyenv (can take a while to execute)"
108 | curl -s -L "${PYENV_PKG_URL}" | bash
109 | echo "===> Run : pyenv init"
110 | echo "===> Run : pyenv local ${PYTHON_VERSION}"
111 | fi
112 |
113 | #
114 | # Python 2 requirements
115 | # ==========================
116 | #
117 | if command -v pyenv; then
118 | for VERSION in $(pyenv versions --bare | egrep '^2.') ; do
119 | pyenv shell ${VERSION} ;
120 | pip install py2venv ;
121 | done
122 | fi
123 |
124 | export VENV_TMP_DIR="${PWD}/.venv"
125 | export VENV_BIN_DIR="${VENV_TMP_DIR}/bin"
126 |
127 | # check if python version is set in current dir
128 | # .python-version will be created by : pyenv local ${PYTHON_VERSION}
129 | if [ -f ".python-version" ] ; then
130 | if [ ! -d "${VENV_TMP_DIR}" ] ; then
131 | echo "Installing virtualenv for $(cat .python-version)"
132 | # if we didn't install `py2venv` for python 2.x, we would need to use
133 | # `virtualenv`, which you would have to install separately.
134 | python -m venv ${VENV_TMP_DIR}
135 | fi
136 | echo "Activating $(cat .python-version) virtualenv"
137 | source ${VENV_BIN_DIR}/activate
138 | # announce python version and show the path of the current python in ${PATH}
139 | echo "Virtualenv has been activated for $(cat .python-version)"
140 | # echo "$(which python)"
141 | fi
142 |
143 | if command -v pyenv >/dev/null 2>&1; then
144 | # layout pyenv ${PYTHON_VERSION}
145 | layout pyenv
146 | elif command -v conda >/dev/null 2>&1; then
147 | layout_anaconda
148 | else
149 | layout_python3
150 | fi
151 |
152 | # if pyenv and venv
153 | if [ -f ".python-version" ] ; then
154 | #
155 | # Python pipenv installation
156 | # ==========================
157 | #
158 | # python -m pip install pipenv==2023.7.23
159 | PIPENV_VERSION=${PIPENV_VERSION:-"2023.7.23"}
160 | if [ ! -e "${VENV_BIN_DIR}/pipenv" ]; then
161 | echo "===> Getting pipenv:${PIPENV_VERSION} (can take a while to execute)"
162 | python -m pip install pipenv=="${PIPENV_VERSION}"
163 | fi
164 |
165 | #
166 | # Python 3 requirements
167 | # ==========================
168 | #
169 | echo "python -m pipenv install --dev --site-packages --clear"
170 | python -m pipenv install --dev --site-packages --ignore-pipfile 2>/dev/null
171 |
172 | #
173 | # Below install what you do not have already in Pipfile.lock or requirements.txt
174 | # ==========================
175 |
176 | #
177 | # Python pre-commit installation
178 | # ==========================
179 | #
180 | # python -m pip install pre-commit==3.7.1
181 | PRECOMMIT_VERSION=${PRECOMMIT_VERSION:-"3.7.1"}
182 | if [ ! -e "${VENV_BIN_DIR}/pre-commit" ]; then
183 | echo "===> Getting pre-commit:${PRECOMMIT_VERSION} (can take a while to execute)"
184 | python -m pip install pre-commit=="${PRECOMMIT_VERSION}" # nosemgrep
185 | fi
186 |
187 | #pre-commit install 2>/dev/null || true
188 |
189 | #
190 | # Ansible CLI installation
191 | # ==========================
192 | #
193 | # python -m pip install --user https://github.com/ansible/ansible/archive/stable-2.17.tar.gz
194 | ANSIBLE_VERSION=${ANSIBLE_VERSION:-"2.17"}
195 | ANSIBLE_PKG_URL="https://github.com/ansible/ansible/archive/stable-${ANSIBLE_VERSION}.tar.gz"
196 | if [ ! -e "${VENV_BIN_DIR}/ansible" ]; then
197 | echo "===> Getting ansible:${ANSIBLE_VERSION} (can take a while to execute)"
198 | python -m pip install "${ANSIBLE_PKG_URL}"
199 | fi
200 |
201 | #
202 | # Ansible configuration
203 | # =====================
204 | #
205 | # export ANSIBLE_LIBRARY="${PWD}/plugins/modules:${ANSIBLE_LIBRARY}"
206 | unset ANSIBLE_LIBRARY
207 | #export ANSIBLE_SSH_ARGS="-F ${PWD}/ssh.cfg"
208 | #export ANSIBLE_INVENTORY="hosts"
209 | export ANSIBLE_COLLECTIONS_PATHS="${DIRENV_TMP_DIR}"
210 |
211 | fi
212 |
213 | #
214 | # Environment configuration
215 | # =========================
216 | #
217 | #
218 | DOTENV_ADDONS=".env .env.secrets"
219 | for addon in ${DOTENV_ADDONS}; do
220 | if [ -e "${PWD}/${addon}" ]; then
221 | dotenv ${PWD}/${addon}
222 | fi
223 | done
224 |
225 | ENV_ADDONS=".env.local"
226 | for addon in ${ENV_ADDONS}; do
227 | if [ -e "${PWD}/${addon}" ]; then
228 | source ${PWD}/${addon}
229 | fi
230 | done
231 |
232 | # See https://github.com/direnv/direnv/wiki/PS1
233 | unset PS1
234 |
--------------------------------------------------------------------------------
/.github/workflows/ci.yml:
--------------------------------------------------------------------------------
1 | ---
2 | name: CI
3 | on:
4 | pull_request:
5 | push:
6 | branches:
7 | - master
8 | schedule:
9 | - cron: 30 5 * * 0
10 |
11 | defaults:
12 | run:
13 | working-directory: alban.andrieu.workstation
14 |
15 | jobs:
16 |
17 | lint:
18 | name: Lint
19 | runs-on: ubuntu-latest
20 | steps:
21 | - name: Check out the codebase.
22 | uses: actions/checkout@v4
23 | with:
24 | path: alban.andrieu.workstation
25 |
26 | - name: Set up Python 3.
27 | uses: actions/setup-python@v5
28 | with:
29 | python-version: 3.x
30 | cache: pip
31 | # cache-dependency-path: '**/requirements-dev.txt'
32 | check-latest: true
33 |
34 | # - name: Install dependencies
35 | # run: pip install -r requirements-dev.txt
36 |
37 | - name: Install test dependencies.
38 | run: pip3 install yamllint
39 |
40 | - name: Lint code.
41 | run: |
42 | yamllint .
43 |
44 | molecule:
45 | name: Molecule
46 | runs-on: ubuntu-latest
47 | strategy:
48 | matrix:
49 | include:
50 | - distro: ubuntu2404
51 | playbook: converge.yml
52 | # - distro: debian12
53 | # playbook: converge.yml
54 |
55 | steps:
56 | - name: Check out the codebase.
57 | uses: actions/checkout@v4
58 | with:
59 | path: alban.andrieu.workstation
60 |
61 | - name: Set up Python 3.
62 | uses: actions/setup-python@v5
63 | with:
64 | python-version: 3.x
65 | cache: pip
66 | # cache-dependency-path: '**/requirements-dev.txt'
67 | check-latest: true
68 |
69 | - name: Install test dependencies.
70 | run: pip3 install ansible molecule molecule-plugins[docker] docker
71 |
72 | # - name: Run Molecule tests.
73 | # run: molecule test
74 | # env:
75 | # PY_COLORS: '1'
76 | # ANSIBLE_FORCE_COLOR: '1'
77 | # MOLECULE_DISTRO: ${{ matrix.distro }}
78 | # MOLECULE_PLAYBOOK: ${{ matrix.playbook }}
79 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | .project
3 | .settings/
4 | docker-dockerfilelint.json
5 | docker-hadolint.json
6 | pylint-junit-result.xml
7 | docker-dive.csv
8 |
9 | # Byte-compiled / optimized / DLL files
10 | __pycache__/
11 | *.py[cod]
12 | *$py.class
13 |
14 | # C extensions
15 | *.so
16 |
17 | # Distribution / packaging
18 | .Python
19 | build/
20 | develop-eggs/
21 | dist/
22 | downloads/
23 | eggs/
24 | .eggs/
25 | lib/
26 | lib64/
27 | parts/
28 | sdist/
29 | var/
30 | wheels/
31 | *.egg-info/
32 | .installed.cfg
33 | *.egg
34 | MANIFEST
35 |
36 | # PyInstaller
37 | # Usually these files are written by a python script from a template
38 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
39 | *.manifest
40 | *.spec
41 |
42 | # Installer logs
43 | pip-log.txt
44 | pip-delete-this-directory.txt
45 |
46 | # Unit test / coverage reports
47 | htmlcov/
48 | .tox/
49 | .coverage
50 | .coverage.*
51 | .cache
52 | nosetests.xml
53 | coverage.xml
54 | *.cover
55 | .hypothesis/
56 | .pytest_cache/
57 |
58 | # Translations
59 | *.mo
60 | *.pot
61 |
62 | # Django stuff:
63 | *.log
64 | local_settings.py
65 | db.sqlite3
66 |
67 | # Flask stuff:
68 | instance/
69 | .webassets-cache
70 |
71 | # Scrapy stuff:
72 | .scrapy
73 |
74 | # Sphinx documentation
75 | docs/_build/
76 |
77 | # PyBuilder
78 | target/
79 |
80 | # Jupyter Notebook
81 | .ipynb_checkpoints
82 |
83 | # pyenv
84 | #.python-version
85 |
86 | # celery beat schedule file
87 | celerybeat-schedule
88 |
89 | # SageMath parsed files
90 | *.sage.py
91 |
92 | # Environments
93 | .env
94 | .venv
95 | .direnv
96 | env/
97 | venv/
98 | ENV/
99 | env.bak/
100 | venv.bak/
101 | .direnv/
102 |
103 | # Spyder project settings
104 | .spyderproject
105 | .spyproject
106 |
107 | # Rope project settings
108 | .ropeproject
109 |
110 | # mkdocs documentation
111 | /site
112 |
113 | # mypy
114 | .mypy_cache/
115 |
116 | # sonar
117 | .scannerwork/
118 | .ssh/
119 |
120 | *.log
121 | hooks
122 |
123 | roles/alban.andrieu.*
124 | roles/albanandrieu.*
125 | roles/Stouts.*
126 | roles/andrewrothstein.*
127 | roles/angstwad.docker-ubuntu
128 | roles/elliotweiser.osx-command-line-tools
129 | roles/geerlingguy.*
130 | roles/ansible-role-nodejs/
131 | roles/ansible-swapfile/
132 | roles/ansiblebit.oracle-java/
133 | roles/chrome/
134 | roles/common/
135 | roles/devbox.chrome/
136 | roles/docker/
137 | roles/idealista-java/
138 | roles/locale/
139 | roles/mac-dev-playbook/
140 | roles/maven/
141 | roles/nexus/
142 | roles/nodejs/
143 | roles/opencl/
144 | roles/python/
145 | roles/repo-epel/
146 | roles/repo-remi/
147 | roles/security/
148 | roles/ssl.ca-certificate/
149 | roles/ssl.certificate/
150 | roles/vagrant/
151 | roles/yarn/
152 | roles/zabbix/
153 | roles/anxs.perl/
154 | roles/jermon.ansible-role-cpan/
155 | roles/dj-wasabi.zabbix-agent/
156 |
157 | # To avoid adding encrypted files with git add -u or -a
158 | .idea/*
159 |
160 | # ara temporary and autogenerated files
161 | .ara
162 | out/
163 | target/
164 |
165 | # Mobile Tools for Java (J2ME)
166 | .mtj.tmp/
167 |
168 | # Package Files #
169 | *.jar
170 | *.war
171 | *.ear
172 |
173 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
174 | hs_err_pid*
175 |
176 | # ansible
177 | *.retry
178 | .galaxy_install_info
179 | ansible.key
180 | vault.passwd
181 |
--------------------------------------------------------------------------------
/.gitleaks.toml:
--------------------------------------------------------------------------------
1 | # This is the default gitleaks configuration file.
2 | # Rules and allowlists are defined within this file.
3 | # Rules instruct gitleaks on what should be considered a secret.
4 | # Allowlists instruct gitleaks on what is allowed, i.e. not a secret.
5 | title = "gitleaks config"
6 |
7 | [allowlist]
8 | description = "global allow lists"
9 | regexes = [
10 | '''219-09-9999''',
11 | '''078-05-1120''',
12 | '''(9[0-9]{2}|666)-\d{2}-\d{4}''',
13 | '''#nosec''',
14 | '''allow:gitleaks''',
15 | ]
16 | paths = [
17 | '''gitleaks.toml''',
18 | '''(.*?)(jpg|gif|doc|docx|zip|xls|pdf|bin|svg|socket|vsidx|v2|suo|wsuo|.dll|pdb|exe)$''',
19 | '''(go.mod|go.sum|go.work|go.work.sum)$''',
20 | '''gradle.lockfile''',
21 | '''node_modules''',
22 | '''package-lock.json''',
23 | '''yarn.lock''',
24 | '''pnpm-lock.yaml''',
25 | '''megalinter-reports/''',
26 | '''.venv/''',
27 | '''.direnv/''',
28 | '''.tox/''',
29 | '''environment.yml''',
30 | '''env/home/pass/''',
31 | '''env/home/dotfiles/''',
32 | '''target/''',
33 | '''(.*?)(uml)$''',
34 | '''andromda/cartridges/andromda-database-cartridge/src/generated/''',
35 | '''andromda/cartridges/andromda-ejb3-cartridge/src/main/resources/META-INF/andromda/cartridge.xml''',
36 | ]
37 |
38 | [[rules]]
39 | description = "Adobe Client ID (Oauth Web)"
40 | id = "adobe-client-id"
41 | regex = '''(?i)(?:adobe)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([a-f0-9]{32})(?:['|\"|\n|\r|\s|\x60]|$)'''
42 | secretGroup = 1
43 | keywords = [
44 | "adobe",
45 | ]
46 |
47 | [[rules]]
48 | description = "Adobe Client Secret"
49 | id = "adobe-client-secret"
50 | regex = '''(?i)\b((p8e-)(?i)[a-z0-9]{32})(?:['|\"|\n|\r|\s|\x60]|$)'''
51 | keywords = [
52 | "p8e-",
53 | ]
54 |
55 | [[rules]]
56 | description = "Age secret key"
57 | id = "age secret key"
58 | regex = '''AGE-SECRET-KEY-1[QPZRY9X8GF2TVDW0S3JN54KHCE6MUA7L]{58}'''
59 | keywords = [
60 | "age-secret-key-1",
61 | ]
62 |
63 | [[rules]]
64 | description = "Alibaba AccessKey ID"
65 | id = "alibaba-access-key-id"
66 | regex = '''(?i)\b((LTAI)(?i)[a-z0-9]{20})(?:['|\"|\n|\r|\s|\x60]|$)'''
67 | keywords = [
68 | "ltai",
69 | ]
70 |
71 | [[rules]]
72 | description = "Alibaba Secret Key"
73 | id = "alibaba-secret-key"
74 | regex = '''(?i)(?:alibaba)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([a-z0-9]{30})(?:['|\"|\n|\r|\s|\x60]|$)'''
75 | secretGroup = 1
76 | keywords = [
77 | "alibaba",
78 | ]
79 |
80 | [[rules]]
81 | description = "Asana Client ID"
82 | id = "asana-client-id"
83 | regex = '''(?i)(?:asana)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([0-9]{16})(?:['|\"|\n|\r|\s|\x60]|$)'''
84 | secretGroup = 1
85 | keywords = [
86 | "asana",
87 | ]
88 |
89 | [[rules]]
90 | description = "Asana Client Secret"
91 | id = "asana-client-secret"
92 | regex = '''(?i)(?:asana)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([a-z0-9]{32})(?:['|\"|\n|\r|\s|\x60]|$)'''
93 | secretGroup = 1
94 | keywords = [
95 | "asana",
96 | ]
97 |
98 | [[rules]]
99 | description = "Atlassian API token"
100 | id = "atlassian-api-token"
101 | regex = '''(?i)(?:atlassian|confluence)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([a-z0-9]{24})(?:['|\"|\n|\r|\s|\x60]|$)'''
102 | secretGroup = 1
103 | keywords = [
104 | "atlassian","confluence",
105 | ]
106 |
107 | [[rules]]
108 | description = "AWS"
109 | id = "aws-access-token"
110 | regex = '''(A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16}'''
111 | keywords = [
112 | "akia","agpa","aida","aroa","aipa","anpa","anva","asia",
113 | ]
114 |
115 | [[rules]]
116 | description = "BitBucket Client ID"
117 | id = "bitbucket-client-id"
118 | regex = '''(?i)(?:bitbucket)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([a-z0-9]{32})(?:['|\"|\n|\r|\s|\x60]|$)'''
119 | secretGroup = 1
120 | keywords = [
121 | "bitbucket",
122 | ]
123 |
124 | [[rules]]
125 | description = "BitBucket Client Secret"
126 | id = "bitbucket-client-secret"
127 | regex = '''(?i)(?:bitbucket)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([a-z0-9=_\-]{64})(?:['|\"|\n|\r|\s|\x60]|$)'''
128 | secretGroup = 1
129 | keywords = [
130 | "bitbucket",
131 | ]
132 |
133 | [[rules]]
134 | description = "Beamer API token"
135 | id = "beamer-api-token"
136 | regex = '''(?i)(?:beamer)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}(b_[a-z0-9=_\-]{44})(?:['|\"|\n|\r|\s|\x60]|$)'''
137 | secretGroup = 1
138 | keywords = [
139 | "beamer",
140 | ]
141 |
142 | [[rules]]
143 | description = "Clojars API token"
144 | id = "clojars-api-token"
145 | regex = '''(?i)(CLOJARS_)[a-z0-9]{60}'''
146 | keywords = [
147 | "clojars",
148 | ]
149 |
150 | [[rules]]
151 | description = "Contentful delivery API token"
152 | id = "contentful-delivery-api-token"
153 | regex = '''(?i)(?:contentful)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([a-z0-9=_\-]{43})(?:['|\"|\n|\r|\s|\x60]|$)'''
154 | secretGroup = 1
155 | keywords = [
156 | "contentful",
157 | ]
158 |
159 | [[rules]]
160 | description = "Databricks API token"
161 | id = "databricks-api-token"
162 | regex = '''(?i)\b(dapi[a-h0-9]{32})(?:['|\"|\n|\r|\s|\x60]|$)'''
163 | keywords = [
164 | "dapi",
165 | ]
166 |
167 | [[rules]]
168 | description = "Discord API key"
169 | id = "discord-api-token"
170 | regex = '''(?i)(?:discord)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([a-f0-9]{64})(?:['|\"|\n|\r|\s|\x60]|$)'''
171 | secretGroup = 1
172 | keywords = [
173 | "discord",
174 | ]
175 |
176 | [[rules]]
177 | description = "Discord client ID"
178 | id = "discord-client-id"
179 | regex = '''(?i)(?:discord)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([0-9]{18})(?:['|\"|\n|\r|\s|\x60]|$)'''
180 | secretGroup = 1
181 | keywords = [
182 | "discord",
183 | ]
184 |
185 | [[rules]]
186 | description = "Discord client secret"
187 | id = "discord-client-secret"
188 | regex = '''(?i)(?:discord)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([a-z0-9=_\-]{32})(?:['|\"|\n|\r|\s|\x60]|$)'''
189 | secretGroup = 1
190 | keywords = [
191 | "discord",
192 | ]
193 |
194 | [[rules]]
195 | description = "Dropbox API secret"
196 | id = "doppler-api-token"
197 | regex = '''(?i)(?:dropbox)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([a-z0-9]{15})(?:['|\"|\n|\r|\s|\x60]|$)'''
198 | secretGroup = 1
199 | keywords = [
200 | "dropbox",
201 | ]
202 |
203 | [[rules]]
204 | description = "Dropbox long lived API token"
205 | id = "dropbox-long-lived-api-token"
206 | regex = '''(?i)(?:dropbox)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([a-z0-9]{11}(AAAAAAAAAA)[a-z0-9\-_=]{43})(?:['|\"|\n|\r|\s|\x60]|$)'''
207 | keywords = [
208 | "dropbox",
209 | ]
210 |
211 | [[rules]]
212 | description = "Dropbox short lived API token"
213 | id = "dropbox-short-lived-api-token"
214 | regex = '''(?i)(?:dropbox)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}(sl\.[a-z0-9\-=_]{135})(?:['|\"|\n|\r|\s|\x60]|$)'''
215 | keywords = [
216 | "dropbox",
217 | ]
218 |
219 | [[rules]]
220 | description = "Doppler API token"
221 | id = "doppler-api-token"
222 | regex = '''(dp\.pt\.)(?i)[a-z0-9]{43}'''
223 | keywords = [
224 | "doppler",
225 | ]
226 |
227 | [[rules]]
228 | description = "Duffel API token"
229 | id = "duffel-api-token"
230 | regex = '''duffel_(test|live)_(?i)[a-z0-9_\-=]{43}'''
231 | keywords = [
232 | "duffel",
233 | ]
234 |
235 | [[rules]]
236 | description = "Dynatrace API token"
237 | id = "dynatrace-api-token"
238 | regex = '''dt0c01\.(?i)[a-z0-9]{24}\.[a-z0-9]{64}'''
239 | keywords = [
240 | "dynatrace",
241 | ]
242 |
243 | [[rules]]
244 | description = "EasyPost API token"
245 | id = "easypost-api-token"
246 | regex = '''EZAK(?i)[a-z0-9]{54}'''
247 | keywords = [
248 | "ezak",
249 | ]
250 |
251 | [[rules]]
252 | description = "EasyPost test API token"
253 | id = "easypost-test-api-token"
254 | regex = '''EZTK(?i)[a-z0-9]{54}'''
255 | keywords = [
256 | "eztk",
257 | ]
258 |
259 | [[rules]]
260 | description = "facebook"
261 | id = "facebook"
262 | regex = '''(?i)(?:facebook)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([a-f0-9]{32})(?:['|\"|\n|\r|\s|\x60]|$)'''
263 | secretGroup = 1
264 | keywords = [
265 | "facebook",
266 | ]
267 |
268 | [[rules]]
269 | description = "Fastly API key"
270 | id = "fastly-api-token"
271 | regex = '''(?i)(?:fastly)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([a-z0-9=_\-]{32})(?:['|\"|\n|\r|\s|\x60]|$)'''
272 | secretGroup = 1
273 | keywords = [
274 | "fastly",
275 | ]
276 |
277 | [[rules]]
278 | description = "Finicity Client Secret"
279 | id = "finicity-client-secret"
280 | regex = '''(?i)(?:finicity)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([a-z0-9]{20})(?:['|\"|\n|\r|\s|\x60]|$)'''
281 | secretGroup = 1
282 | keywords = [
283 | "finicity",
284 | ]
285 |
286 | [[rules]]
287 | description = "Finicity API token"
288 | id = "finicity-api-token"
289 | regex = '''(?i)(?:finicity)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([a-f0-9]{32})(?:['|\"|\n|\r|\s|\x60]|$)'''
290 | secretGroup = 1
291 | keywords = [
292 | "finicity",
293 | ]
294 |
295 | [[rules]]
296 | description = "Finicity Public Key"
297 | id = "flutterwave-public-key"
298 | regex = '''FLWPUBK_TEST-(?i)[a-h0-9]{32}-X'''
299 | keywords = [
300 | "flwpubk_test",
301 | ]
302 |
303 | [[rules]]
304 | description = "Finicity Secret Key"
305 | id = "flutterwave-public-key"
306 | regex = '''FLWSECK_TEST-(?i)[a-h0-9]{32}-X'''
307 | keywords = [
308 | "flwseck_test",
309 | ]
310 |
311 | [[rules]]
312 | description = "Finicity Secret Key"
313 | id = "flutterwave-public-key"
314 | regex = '''FLWSECK_TEST-(?i)[a-h0-9]{32}-X'''
315 | keywords = [
316 | "flwseck_test",
317 | ]
318 |
319 | [[rules]]
320 | description = "Frame.io API token"
321 | id = "frameio-api-token"
322 | regex = '''fio-u-(?i)[a-z0-9\-_=]{64}'''
323 | keywords = [
324 | "fio-u-",
325 | ]
326 |
327 | [[rules]]
328 | description = "GoCardless API token"
329 | id = "gocardless-api-token"
330 | regex = '''(?i)(?:gocardless)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}(live_(?i)[a-z0-9\-_=]{40})(?:['|\"|\n|\r|\s|\x60]|$)'''
331 | secretGroup = 1
332 | keywords = [
333 | "live_","gocardless",
334 | ]
335 |
336 | [[rules]]
337 | description = "GitHub Personal Access Token"
338 | id = "github-pat"
339 | regex = '''ghp_[0-9a-zA-Z]{36}'''
340 | keywords = [
341 | "ghp_",
342 | ]
343 |
344 | [[rules]]
345 | description = "GitHub OAuth Access Token"
346 | id = "github-oauth"
347 | regex = '''gho_[0-9a-zA-Z]{36}'''
348 | keywords = [
349 | "gho_",
350 | ]
351 |
352 | [[rules]]
353 | description = "GitHub App Token"
354 | id = "github-app-token"
355 | regex = '''(ghu|ghs)_[0-9a-zA-Z]{36}'''
356 | keywords = [
357 | "ghu_","ghs_",
358 | ]
359 |
360 | [[rules]]
361 | description = "GitHub Refresh Token"
362 | id = "github-refresh-token"
363 | regex = '''ghr_[0-9a-zA-Z]{36}'''
364 | keywords = [
365 | "ghr_",
366 | ]
367 |
368 | [[rules]]
369 | description = "Gitlab Personal Access Token"
370 | id = "gitlab-pat"
371 | regex = '''glpat-[0-9a-zA-Z\-\_]{20}'''
372 | keywords = [
373 | "glpat-",
374 | ]
375 |
376 | [[rules]]
377 | description = "HashiCorp Terraform user/org API token"
378 | id = "hashicorp-tf-api-token"
379 | regex = '''(?i)[a-z0-9]{14}\.atlasv1\.[a-z0-9\-_=]{60,70}'''
380 | keywords = [
381 | "atlasv1",
382 | ]
383 |
384 | [[rules]]
385 | description = "Heroku API Key"
386 | id = "heroku-api-key"
387 | regex = '''(?i)(?:heroku)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12})(?:['|\"|\n|\r|\s|\x60]|$)'''
388 | secretGroup = 1
389 | keywords = [
390 | "heroku",
391 | ]
392 |
393 | [[rules]]
394 | description = "HubSpot API Token"
395 | id = "hubspot-api-key"
396 | regex = '''(?i)(?:hubspot)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12})(?:['|\"|\n|\r|\s|\x60]|$)'''
397 | secretGroup = 1
398 | keywords = [
399 | "hubspot",
400 | ]
401 |
402 | [[rules]]
403 | description = "Intercom API Token"
404 | id = "intercom-api-key"
405 | regex = '''(?i)(?:intercom)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([a-z0-9=_\-]{60})(?:['|\"|\n|\r|\s|\x60]|$)'''
406 | secretGroup = 1
407 | keywords = [
408 | "intercom",
409 | ]
410 |
411 | [[rules]]
412 | description = "Linear API Token"
413 | id = "linear-api-key"
414 | regex = '''lin_api_(?i)[a-z0-9]{40}'''
415 | keywords = [
416 | "lin_api_",
417 | ]
418 |
419 | [[rules]]
420 | description = "Linear Client Secret"
421 | id = "linear-client-secret"
422 | regex = '''(?i)(?:linear)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([a-f0-9]{32})(?:['|\"|\n|\r|\s|\x60]|$)'''
423 | secretGroup = 1
424 | keywords = [
425 | "linear",
426 | ]
427 |
428 | [[rules]]
429 | description = "LinkedIn Client ID"
430 | id = "linkedin-client-id"
431 | regex = '''(?i)(?:linkedin|linked-in)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([a-z0-9]{14})(?:['|\"|\n|\r|\s|\x60]|$)'''
432 | secretGroup = 1
433 | keywords = [
434 | "linkedin","linked-in",
435 | ]
436 |
437 | [[rules]]
438 | description = "LinkedIn Client secret"
439 | id = "linkedin-client-secret"
440 | regex = '''(?i)(?:linkedin|linked-in)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([a-z0-9]{16})(?:['|\"|\n|\r|\s|\x60]|$)'''
441 | secretGroup = 1
442 | keywords = [
443 | "linkedin","linked-in",
444 | ]
445 |
446 | [[rules]]
447 | description = "Lob API Key"
448 | id = "lob-api-key"
449 | regex = '''(?i)(?:lob)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}((live|test)_[a-f0-9]{35})(?:['|\"|\n|\r|\s|\x60]|$)'''
450 | secretGroup = 1
451 | keywords = [
452 | "test_","live_",
453 | ]
454 |
455 | [[rules]]
456 | description = "Lob Publishable API Key"
457 | id = "lob-pub-api-key"
458 | regex = '''(?i)(?:lob)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}((test|live)_pub_[a-f0-9]{31})(?:['|\"|\n|\r|\s|\x60]|$)'''
459 | secretGroup = 1
460 | keywords = [
461 | "test_pub","live_pub","_pub",
462 | ]
463 |
464 | [[rules]]
465 | description = "Mailchimp API key"
466 | id = "mailchimp-api-key"
467 | regex = '''(?i)(?:mailchimp)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([a-f0-9]{32}-us20)(?:['|\"|\n|\r|\s|\x60]|$)'''
468 | secretGroup = 1
469 | keywords = [
470 | "mailchimp",
471 | ]
472 |
473 | [[rules]]
474 | description = "Mailgun public validation key"
475 | id = "mailgun-pub-key"
476 | regex = '''(?i)(?:mailgun)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}(pubkey-[a-f0-9]{32})(?:['|\"|\n|\r|\s|\x60]|$)'''
477 | secretGroup = 1
478 | keywords = [
479 | "mailgun",
480 | ]
481 |
482 | [[rules]]
483 | description = "Mailgun private API token"
484 | id = "mailgun-private-api-token"
485 | regex = '''(?i)(?:mailgun)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}(key-[a-f0-9]{32})(?:['|\"|\n|\r|\s|\x60]|$)'''
486 | secretGroup = 1
487 | keywords = [
488 | "mailgun",
489 | ]
490 |
491 | [[rules]]
492 | description = "Mailgun webhook signing key"
493 | id = "mailgun-signing-key"
494 | regex = '''(?i)(?:mailgun)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([a-h0-9]{32}-[a-h0-9]{8}-[a-h0-9]{8})(?:['|\"|\n|\r|\s|\x60]|$)'''
495 | secretGroup = 1
496 | keywords = [
497 | "mailgun",
498 | ]
499 |
500 | [[rules]]
501 | description = "MapBox API token"
502 | id = "mapbox-api-token"
503 | regex = '''(?i)(?:mapbox)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}(pk\.[a-z0-9]{60}\.[a-z0-9]{22})(?:['|\"|\n|\r|\s|\x60]|$)'''
504 | secretGroup = 1
505 | keywords = [
506 | "mapbox",
507 | ]
508 |
509 | [[rules]]
510 | description = "MessageBird API token"
511 | id = "messagebird-api-token"
512 | regex = '''(?i)(?:messagebird|message-bird|message_bird)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([a-z0-9]{25})(?:['|\"|\n|\r|\s|\x60]|$)'''
513 | secretGroup = 1
514 | keywords = [
515 | "messagebird","message-bird","message_bird",
516 | ]
517 |
518 | [[rules]]
519 | description = "MessageBird client ID"
520 | id = "messagebird-client-id"
521 | regex = '''(?i)(?:messagebird|message-bird|message_bird)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([a-h0-9]{8}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{12})(?:['|\"|\n|\r|\s|\x60]|$)'''
522 | secretGroup = 1
523 | keywords = [
524 | "messagebird","message-bird","message_bird",
525 | ]
526 |
527 | [[rules]]
528 | description = "New Relic user API Key"
529 | id = "new-relic-user-api-key"
530 | regex = '''(?i)(?:new-relic|newrelic|new_relic)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}(NRAK-[a-z0-9]{27})(?:['|\"|\n|\r|\s|\x60]|$)'''
531 | secretGroup = 1
532 | keywords = [
533 | "nrak",
534 | ]
535 |
536 | [[rules]]
537 | description = "New Relic user API ID"
538 | id = "new-relic-user-api-id"
539 | regex = '''(?i)(?:new-relic|newrelic|new_relic)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([a-z0-9]{64})(?:['|\"|\n|\r|\s|\x60]|$)'''
540 | secretGroup = 1
541 | keywords = [
542 | "new-relic","newrelic","new_relic",
543 | ]
544 |
545 | [[rules]]
546 | description = "New Relic ingest browser API token"
547 | id = "new-relic-browser-api-token"
548 | regex = '''(?i)(?:new-relic|newrelic|new_relic)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}(NRJS-[a-f0-9]{19})(?:['|\"|\n|\r|\s|\x60]|$)'''
549 | secretGroup = 1
550 | keywords = [
551 | "nrjs-",
552 | ]
553 |
554 | [[rules]]
555 | description = "npm access token"
556 | id = "npm-access-token"
557 | regex = '''(?i)\b(npm_[a-z0-9]{36})(?:['|\"|\n|\r|\s|\x60]|$)'''
558 | secretGroup = 1
559 | keywords = [
560 | "npm_",
561 | ]
562 |
563 | [[rules]]
564 | description = "PlanetScale password"
565 | id = "planetscale-password"
566 | regex = '''(?i)\b(pscale_pw_(?i)[a-z0-9=\-_\.]{43})(?:['|\"|\n|\r|\s|\x60]|$)'''
567 | secretGroup = 1
568 | keywords = [
569 | "pscale_pw_",
570 | ]
571 |
572 | [[rules]]
573 | description = "PlanetScale API token"
574 | id = "planetscale-api-token"
575 | regex = '''(?i)\b(pscale_tkn_(?i)[a-z0-9=\-_\.]{43})(?:['|\"|\n|\r|\s|\x60]|$)'''
576 | secretGroup = 1
577 | keywords = [
578 | "pscale_tkn_",
579 | ]
580 |
581 | [[rules]]
582 | description = "Postman API token"
583 | id = "postman-api-token"
584 | regex = '''(?i)\b(PMAK-(?i)[a-f0-9]{24}\-[a-f0-9]{34})(?:['|\"|\n|\r|\s|\x60]|$)'''
585 | secretGroup = 1
586 | keywords = [
587 | "pmak-",
588 | ]
589 |
590 | [[rules]]
591 | description = "Private Key"
592 | id = "private-key"
593 | regex = '''(?i)-----BEGIN[ A-Z0-9_-]{0,100}PRIVATE KEY-----[\s\S-]*KEY----'''
594 | keywords = [
595 | "-----begin",
596 | ]
597 |
598 | [[rules]]
599 | description = "Pulumi API token"
600 | id = "pulumi-api-token"
601 | regex = '''(?i)\b(pul-[a-f0-9]{40})(?:['|\"|\n|\r|\s|\x60]|$)'''
602 | secretGroup = 1
603 | keywords = [
604 | "pul-",
605 | ]
606 |
607 | [[rules]]
608 | description = "PyPI upload token"
609 | id = "pypi-upload-token"
610 | regex = '''pypi-AgEIcHlwaS5vcmc[A-Za-z0-9\-_]{50,1000}'''
611 | keywords = [
612 | "pypi-ageichlwas5vcmc",
613 | ]
614 |
615 | [[rules]]
616 | description = "Rubygem API token"
617 | id = "rubygems-api-token"
618 | regex = '''(?i)\b(rubygems_[a-f0-9]{48})(?:['|\"|\n|\r|\s|\x60]|$)'''
619 | secretGroup = 1
620 | keywords = [
621 | "rubygems_",
622 | ]
623 |
624 | [[rules]]
625 | description = "SendGrid API token"
626 | id = "sendgrid-api-token"
627 | regex = '''(?i)\b(SG\.(?i)[a-z0-9=_\-\.]{66})(?:['|\"|\n|\r|\s|\x60]|$)'''
628 | secretGroup = 1
629 | keywords = [
630 | "sg.",
631 | ]
632 |
633 | [[rules]]
634 | description = "Sendinblue API token"
635 | id = "sendinblue-api-token"
636 | regex = '''(?i)\b(xkeysib-[a-f0-9]{64}\-(?i)[a-z0-9]{16})(?:['|\"|\n|\r|\s|\x60]|$)'''
637 | secretGroup = 1
638 | keywords = [
639 | "xkeysib-",
640 | ]
641 |
642 | [[rules]]
643 | description = "Shippo API token"
644 | id = "shippo-api-token"
645 | regex = '''(?i)\b(shippo_(live|test)_[a-f0-9]{40})(?:['|\"|\n|\r|\s|\x60]|$)'''
646 | secretGroup = 1
647 | keywords = [
648 | "shippo_",
649 | ]
650 |
651 | [[rules]]
652 | description = "Shopify access token"
653 | id = "shopify-access-token"
654 | regex = '''shpat_[a-fA-F0-9]{32}'''
655 | keywords = [
656 | "shpat_",
657 | ]
658 |
659 | [[rules]]
660 | description = "Shopify custom access token"
661 | id = "shopify-custom-access-token"
662 | regex = '''shpca_[a-fA-F0-9]{32}'''
663 | keywords = [
664 | "shpca_",
665 | ]
666 |
667 | [[rules]]
668 | description = "Shopify private app access token"
669 | id = "shopify-private-app-access-token"
670 | regex = '''shppa_[a-fA-F0-9]{32}'''
671 | keywords = [
672 | "shppa_",
673 | ]
674 |
675 | [[rules]]
676 | description = "Shopify shared secret"
677 | id = "shopify-shared-secret"
678 | regex = '''shpss_[a-fA-F0-9]{32}'''
679 | keywords = [
680 | "shpss_",
681 | ]
682 |
683 | [[rules]]
684 | description = "Slack token"
685 | id = "slack-access-token"
686 | regex = '''xox[baprs]-([0-9a-zA-Z]{10,48})'''
687 | keywords = [
688 | "xoxb","xoxa","xoxp","xoxr","xoxs",
689 | ]
690 |
691 | [[rules]]
692 | description = "Slack Webhook"
693 | id = "slack-web-hook"
694 | regex = '''https:\/\/hooks.slack.com\/services\/[A-Za-z0-9+\/]{44,46}'''
695 | keywords = [
696 | "hooks.slack.com",
697 | ]
698 |
699 | [[rules]]
700 | description = "Stripe"
701 | id = "stripe-access-token"
702 | regex = '''(?i)(sk|pk)_(test|live)_[0-9a-z]{10,32}'''
703 | keywords = [
704 | "sk_test","pk_test","sk_live","pk_live",
705 | ]
706 |
707 | [[rules]]
708 | description = "Twilio API Key"
709 | id = "twilio-api-key"
710 | regex = '''SK[0-9a-fA-F]{32}'''
711 | keywords = [
712 | "twilio",
713 | ]
714 |
715 | [[rules]]
716 | description = "Twitch API token"
717 | id = "twitch-api-token"
718 | regex = '''(?i)(?:twitch)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([a-z0-9]{30})(?:['|\"|\n|\r|\s|\x60]|$)'''
719 | secretGroup = 1
720 | keywords = [
721 | "twitch",
722 | ]
723 |
724 | [[rules]]
725 | description = "twitter"
726 | id = "twitter"
727 | regex = '''(?i)(?:twitter)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([a-f0-9]{35,44})(?:['|\"|\n|\r|\s|\x60]|$)'''
728 | secretGroup = 1
729 | keywords = [
730 | "twitter",
731 | ]
732 |
733 | [[rules]]
734 | description = "Typeform API token"
735 | id = "typeform-api-token"
736 | regex = '''(?i)(?:typeform)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}(tfp_[a-z0-9\-_\.=]{59})(?:['|\"|\n|\r|\s|\x60]|$)'''
737 | secretGroup = 1
738 | keywords = [
739 | "tfp_",
740 | ]
741 |
742 | [[rules]]
743 | description = "Generic API Key"
744 | id = "generic-api-key"
745 | regex = '''(?i)(?:key|api[^Version]|token|pat|secret|client|password|auth)(?:[0-9a-z\-_\s.]{0,20})(?:[\s|']|[\s|"]){0,3}(?:=|>|:=|\|\|:|<=|=>|:)(?:'|\"|\s|=|\x60){0,5}([0-9a-z\-_.=]{10,150})(?:['|\"|\n|\r|\s|\x60]|$)'''
746 | secretGroup = 1
747 | entropy = 3.5
748 | keywords = [
749 | "key","api","token","secret","client","pat","password","auth",
750 | ]
751 | [rules.allowlist]
752 | stopwords= [
753 | "client",
754 | "endpoint",
755 | "vpn",
756 | "_ec2_",
757 | "aws_",
758 | "authorize",
759 | "author",
760 | "define",
761 | "config",
762 | "credential",
763 | "setting",
764 | "sample",
765 | "xxxxxx",
766 | "000000",
767 | "buffer",
768 | "delete",
769 | "aaaaaa",
770 | "fewfwef",
771 | "getenv",
772 | "env_",
773 | "system",
774 | "example",
775 | "ecdsa",
776 | "sha256",
777 | "sha1",
778 | "sha2",
779 | "md5",
780 | "alert",
781 | "wizard",
782 | "target",
783 | "onboard",
784 | "welcome",
785 | "page",
786 | "exploit",
787 | "experiment",
788 | "expire",
789 | "rabbitmq",
790 | "scraper",
791 | "widget",
792 | "music",
793 | "dns_",
794 | "dns-",
795 | "yahoo",
796 | "want",
797 | "json",
798 | "action",
799 | "script",
800 | "fix_",
801 | "fix-",
802 | "develop",
803 | "compas",
804 | "stripe",
805 | "service",
806 | "master",
807 | "metric",
808 | "tech",
809 | "gitignore",
810 | "rich",
811 | "open",
812 | "stack",
813 | "irc_",
814 | "irc-",
815 | "sublime",
816 | "kohana",
817 | "has_",
818 | "has-",
819 | "fabric",
820 | "wordpres",
821 | "role",
822 | "osx_",
823 | "osx-",
824 | "boost",
825 | "addres",
826 | "queue",
827 | "working",
828 | "sandbox",
829 | "internet",
830 | "print",
831 | "vision",
832 | "tracking",
833 | "being",
834 | "generator",
835 | "traffic",
836 | "world",
837 | "pull",
838 | "rust",
839 | "watcher",
840 | "small",
841 | "auth",
842 | "full",
843 | "hash",
844 | "more",
845 | "install",
846 | "auto",
847 | "complete",
848 | "learn",
849 | "paper",
850 | "installer",
851 | "research",
852 | "acces",
853 | "last",
854 | "binding",
855 | "spine",
856 | "into",
857 | "chat",
858 | "algorithm",
859 | "resource",
860 | "uploader",
861 | "video",
862 | "maker",
863 | "next",
864 | "proc",
865 | "lock",
866 | "robot",
867 | "snake",
868 | "patch",
869 | "matrix",
870 | "drill",
871 | "terminal",
872 | "term",
873 | "stuff",
874 | "genetic",
875 | "generic",
876 | "identity",
877 | "audit",
878 | "pattern",
879 | "audio",
880 | "web_",
881 | "web-",
882 | "crud",
883 | "problem",
884 | "statu",
885 | "cms-",
886 | "cms_",
887 | "arch",
888 | "coffee",
889 | "workflow",
890 | "changelog",
891 | "another",
892 | "uiview",
893 | "content",
894 | "kitchen",
895 | "gnu_",
896 | "gnu-",
897 | "gnu.",
898 | "conf",
899 | "couchdb",
900 | "client",
901 | "opencv",
902 | "rendering",
903 | "update",
904 | "concept",
905 | "varnish",
906 | "gui_",
907 | "gui-",
908 | "gui.",
909 | "version",
910 | "shared",
911 | "extra",
912 | "product",
913 | "still",
914 | "not_",
915 | "not-",
916 | "not.",
917 | "drop",
918 | "ring",
919 | "png_",
920 | "png-",
921 | "png.",
922 | "actively",
923 | "import",
924 | "output",
925 | "backup",
926 | "start",
927 | "embedded",
928 | "registry",
929 | "pool",
930 | "semantic",
931 | "instagram",
932 | "bash",
933 | "system",
934 | "ninja",
935 | "drupal",
936 | "jquery",
937 | "polyfill",
938 | "physic",
939 | "league",
940 | "guide",
941 | "pack",
942 | "synopsi",
943 | "sketch",
944 | "injection",
945 | "svg_",
946 | "svg-",
947 | "svg.",
948 | "friendly",
949 | "wave",
950 | "convert",
951 | "manage",
952 | "camera",
953 | "link",
954 | "slide",
955 | "timer",
956 | "wrapper",
957 | "gallery",
958 | "url_",
959 | "url-",
960 | "url.",
961 | "todomvc",
962 | "requirej",
963 | "party",
964 | "http",
965 | "payment",
966 | "async",
967 | "library",
968 | "home",
969 | "coco",
970 | "gaia",
971 | "display",
972 | "universal",
973 | "function",
974 | "metadata",
975 | "hipchat",
976 | "under",
977 | "room",
978 | "config",
979 | "personal",
980 | "realtime",
981 | "resume",
982 | "database",
983 | "testing",
984 | "tiny",
985 | "basic",
986 | "forum",
987 | "meetup",
988 | "yet_",
989 | "yet-",
990 | "yet.",
991 | "cento",
992 | "dead",
993 | "fluentd",
994 | "editor",
995 | "utilitie",
996 | "run_",
997 | "run-",
998 | "run.",
999 | "box_",
1000 | "box-",
1001 | "box.",
1002 | "bot_",
1003 | "bot-",
1004 | "bot.",
1005 | "making",
1006 | "sample",
1007 | "group",
1008 | "monitor",
1009 | "ajax",
1010 | "parallel",
1011 | "cassandra",
1012 | "ultimate",
1013 | "site",
1014 | "get_",
1015 | "get-",
1016 | "get.",
1017 | "gen_",
1018 | "gen-",
1019 | "gen.",
1020 | "gem_",
1021 | "gem-",
1022 | "gem.",
1023 | "extended",
1024 | "image",
1025 | "knife",
1026 | "asset",
1027 | "nested",
1028 | "zero",
1029 | "plugin",
1030 | "bracket",
1031 | "mule",
1032 | "mozilla",
1033 | "number",
1034 | "act_",
1035 | "act-",
1036 | "act.",
1037 | "map_",
1038 | "map-",
1039 | "map.",
1040 | "micro",
1041 | "debug",
1042 | "openshift",
1043 | "chart",
1044 | "expres",
1045 | "backend",
1046 | "task",
1047 | "source",
1048 | "translate",
1049 | "jbos",
1050 | "composer",
1051 | "sqlite",
1052 | "profile",
1053 | "mustache",
1054 | "mqtt",
1055 | "yeoman",
1056 | "have",
1057 | "builder",
1058 | "smart",
1059 | "like",
1060 | "oauth",
1061 | "school",
1062 | "guideline",
1063 | "captcha",
1064 | "filter",
1065 | "bitcoin",
1066 | "bridge",
1067 | "color",
1068 | "toolbox",
1069 | "discovery",
1070 | "new_",
1071 | "new-",
1072 | "new.",
1073 | "dashboard",
1074 | "when",
1075 | "setting",
1076 | "level",
1077 | "post",
1078 | "standard",
1079 | "port",
1080 | "platform",
1081 | "yui_",
1082 | "yui-",
1083 | "yui.",
1084 | "grunt",
1085 | "animation",
1086 | "haskell",
1087 | "icon",
1088 | "latex",
1089 | "cheat",
1090 | "lua_",
1091 | "lua-",
1092 | "lua.",
1093 | "gulp",
1094 | "case",
1095 | "author",
1096 | "without",
1097 | "simulator",
1098 | "wifi",
1099 | "directory",
1100 | "lisp",
1101 | "list",
1102 | "flat",
1103 | "adventure",
1104 | "story",
1105 | "storm",
1106 | "gpu_",
1107 | "gpu-",
1108 | "gpu.",
1109 | "store",
1110 | "caching",
1111 | "attention",
1112 | "solr",
1113 | "logger",
1114 | "demo",
1115 | "shortener",
1116 | "hadoop",
1117 | "finder",
1118 | "phone",
1119 | "pipeline",
1120 | "range",
1121 | "textmate",
1122 | "showcase",
1123 | "app_",
1124 | "app-",
1125 | "app.",
1126 | "idiomatic",
1127 | "edit",
1128 | "our_",
1129 | "our-",
1130 | "our.",
1131 | "out_",
1132 | "out-",
1133 | "out.",
1134 | "sentiment",
1135 | "linked",
1136 | "why_",
1137 | "why-",
1138 | "why.",
1139 | "local",
1140 | "cube",
1141 | "gmail",
1142 | "job_",
1143 | "job-",
1144 | "job.",
1145 | "rpc_",
1146 | "rpc-",
1147 | "rpc.",
1148 | "contest",
1149 | "tcp_",
1150 | "tcp-",
1151 | "tcp.",
1152 | "usage",
1153 | "buildout",
1154 | "weather",
1155 | "transfer",
1156 | "automated",
1157 | "sphinx",
1158 | "issue",
1159 | "sas_",
1160 | "sas-",
1161 | "sas.",
1162 | "parallax",
1163 | "jasmine",
1164 | "addon",
1165 | "machine",
1166 | "solution",
1167 | "dsl_",
1168 | "dsl-",
1169 | "dsl.",
1170 | "episode",
1171 | "menu",
1172 | "theme",
1173 | "best",
1174 | "adapter",
1175 | "debugger",
1176 | "chrome",
1177 | "tutorial",
1178 | "life",
1179 | "step",
1180 | "people",
1181 | "joomla",
1182 | "paypal",
1183 | "developer",
1184 | "solver",
1185 | "team",
1186 | "current",
1187 | "love",
1188 | "visual",
1189 | "date",
1190 | "data",
1191 | "canva",
1192 | "container",
1193 | "future",
1194 | "xml_",
1195 | "xml-",
1196 | "xml.",
1197 | "twig",
1198 | "nagio",
1199 | "spatial",
1200 | "original",
1201 | "sync",
1202 | "archived",
1203 | "refinery",
1204 | "science",
1205 | "mapping",
1206 | "gitlab",
1207 | "play",
1208 | "ext_",
1209 | "ext-",
1210 | "ext.",
1211 | "session",
1212 | "impact",
1213 | "set_",
1214 | "set-",
1215 | "set.",
1216 | "see_",
1217 | "see-",
1218 | "see.",
1219 | "migration",
1220 | "commit",
1221 | "community",
1222 | "shopify",
1223 | "what'",
1224 | "cucumber",
1225 | "statamic",
1226 | "mysql",
1227 | "location",
1228 | "tower",
1229 | "line",
1230 | "code",
1231 | "amqp",
1232 | "hello",
1233 | "send",
1234 | "index",
1235 | "high",
1236 | "notebook",
1237 | "alloy",
1238 | "python",
1239 | "field",
1240 | "document",
1241 | "soap",
1242 | "edition",
1243 | "email",
1244 | "php_",
1245 | "php-",
1246 | "php.",
1247 | "command",
1248 | "transport",
1249 | "official",
1250 | "upload",
1251 | "study",
1252 | "secure",
1253 | "angularj",
1254 | "akka",
1255 | "scalable",
1256 | "package",
1257 | "request",
1258 | "con_",
1259 | "con-",
1260 | "con.",
1261 | "flexible",
1262 | "security",
1263 | "comment",
1264 | "module",
1265 | "flask",
1266 | "graph",
1267 | "flash",
1268 | "apache",
1269 | "change",
1270 | "window",
1271 | "space",
1272 | "lambda",
1273 | "sheet",
1274 | "bookmark",
1275 | "carousel",
1276 | "friend",
1277 | "objective",
1278 | "jekyll",
1279 | "bootstrap",
1280 | "first",
1281 | "article",
1282 | "gwt_",
1283 | "gwt-",
1284 | "gwt.",
1285 | "classic",
1286 | "media",
1287 | "websocket",
1288 | "touch",
1289 | "desktop",
1290 | "real",
1291 | "read",
1292 | "recorder",
1293 | "moved",
1294 | "storage",
1295 | "validator",
1296 | "add-on",
1297 | "pusher",
1298 | "scs_",
1299 | "scs-",
1300 | "scs.",
1301 | "inline",
1302 | "asp_",
1303 | "asp-",
1304 | "asp.",
1305 | "timeline",
1306 | "base",
1307 | "encoding",
1308 | "ffmpeg",
1309 | "kindle",
1310 | "tinymce",
1311 | "pretty",
1312 | "jpa_",
1313 | "jpa-",
1314 | "jpa.",
1315 | "used",
1316 | "user",
1317 | "required",
1318 | "webhook",
1319 | "download",
1320 | "resque",
1321 | "espresso",
1322 | "cloud",
1323 | "mongo",
1324 | "benchmark",
1325 | "pure",
1326 | "cakephp",
1327 | "modx",
1328 | "mode",
1329 | "reactive",
1330 | "fuel",
1331 | "written",
1332 | "flickr",
1333 | "mail",
1334 | "brunch",
1335 | "meteor",
1336 | "dynamic",
1337 | "neo_",
1338 | "neo-",
1339 | "neo.",
1340 | "new_",
1341 | "new-",
1342 | "new.",
1343 | "net_",
1344 | "net-",
1345 | "net.",
1346 | "typo",
1347 | "type",
1348 | "keyboard",
1349 | "erlang",
1350 | "adobe",
1351 | "logging",
1352 | "ckeditor",
1353 | "message",
1354 | "iso_",
1355 | "iso-",
1356 | "iso.",
1357 | "hook",
1358 | "ldap",
1359 | "folder",
1360 | "reference",
1361 | "railscast",
1362 | "www_",
1363 | "www-",
1364 | "www.",
1365 | "tracker",
1366 | "azure",
1367 | "fork",
1368 | "form",
1369 | "digital",
1370 | "exporter",
1371 | "skin",
1372 | "string",
1373 | "template",
1374 | "designer",
1375 | "gollum",
1376 | "fluent",
1377 | "entity",
1378 | "language",
1379 | "alfred",
1380 | "summary",
1381 | "wiki",
1382 | "kernel",
1383 | "calendar",
1384 | "plupload",
1385 | "symfony",
1386 | "foundry",
1387 | "remote",
1388 | "talk",
1389 | "search",
1390 | "dev_",
1391 | "dev-",
1392 | "dev.",
1393 | "del_",
1394 | "del-",
1395 | "del.",
1396 | "token",
1397 | "idea",
1398 | "sencha",
1399 | "selector",
1400 | "interface",
1401 | "create",
1402 | "fun_",
1403 | "fun-",
1404 | "fun.",
1405 | "groovy",
1406 | "query",
1407 | "grail",
1408 | "red_",
1409 | "red-",
1410 | "red.",
1411 | "laravel",
1412 | "monkey",
1413 | "slack",
1414 | "supported",
1415 | "instant",
1416 | "value",
1417 | "center",
1418 | "latest",
1419 | "work",
1420 | "but_",
1421 | "but-",
1422 | "but.",
1423 | "bug_",
1424 | "bug-",
1425 | "bug.",
1426 | "virtual",
1427 | "tweet",
1428 | "statsd",
1429 | "studio",
1430 | "path",
1431 | "real-time",
1432 | "frontend",
1433 | "notifier",
1434 | "coding",
1435 | "tool",
1436 | "firmware",
1437 | "flow",
1438 | "random",
1439 | "mediawiki",
1440 | "bosh",
1441 | "been",
1442 | "beer",
1443 | "lightbox",
1444 | "theory",
1445 | "origin",
1446 | "redmine",
1447 | "hub_",
1448 | "hub-",
1449 | "hub.",
1450 | "require",
1451 | "pro_",
1452 | "pro-",
1453 | "pro.",
1454 | "ant_",
1455 | "ant-",
1456 | "ant.",
1457 | "any_",
1458 | "any-",
1459 | "any.",
1460 | "recipe",
1461 | "closure",
1462 | "mapper",
1463 | "event",
1464 | "todo",
1465 | "model",
1466 | "redi",
1467 | "provider",
1468 | "rvm_",
1469 | "rvm-",
1470 | "rvm.",
1471 | "program",
1472 | "memcached",
1473 | "rail",
1474 | "silex",
1475 | "foreman",
1476 | "activity",
1477 | "license",
1478 | "strategy",
1479 | "batch",
1480 | "streaming",
1481 | "fast",
1482 | "use_",
1483 | "use-",
1484 | "use.",
1485 | "usb_",
1486 | "usb-",
1487 | "usb.",
1488 | "impres",
1489 | "academy",
1490 | "slider",
1491 | "please",
1492 | "layer",
1493 | "cros",
1494 | "now_",
1495 | "now-",
1496 | "now.",
1497 | "miner",
1498 | "extension",
1499 | "own_",
1500 | "own-",
1501 | "own.",
1502 | "app_",
1503 | "app-",
1504 | "app.",
1505 | "debian",
1506 | "symphony",
1507 | "example",
1508 | "feature",
1509 | "serie",
1510 | "tree",
1511 | "project",
1512 | "runner",
1513 | "entry",
1514 | "leetcode",
1515 | "layout",
1516 | "webrtc",
1517 | "logic",
1518 | "login",
1519 | "worker",
1520 | "toolkit",
1521 | "mocha",
1522 | "support",
1523 | "back",
1524 | "inside",
1525 | "device",
1526 | "jenkin",
1527 | "contact",
1528 | "fake",
1529 | "awesome",
1530 | "ocaml",
1531 | "bit_",
1532 | "bit-",
1533 | "bit.",
1534 | "drive",
1535 | "screen",
1536 | "prototype",
1537 | "gist",
1538 | "binary",
1539 | "nosql",
1540 | "rest",
1541 | "overview",
1542 | "dart",
1543 | "dark",
1544 | "emac",
1545 | "mongoid",
1546 | "solarized",
1547 | "homepage",
1548 | "emulator",
1549 | "commander",
1550 | "django",
1551 | "yandex",
1552 | "gradle",
1553 | "xcode",
1554 | "writer",
1555 | "crm_",
1556 | "crm-",
1557 | "crm.",
1558 | "jade",
1559 | "startup",
1560 | "error",
1561 | "using",
1562 | "format",
1563 | "name",
1564 | "spring",
1565 | "parser",
1566 | "scratch",
1567 | "magic",
1568 | "try_",
1569 | "try-",
1570 | "try.",
1571 | "rack",
1572 | "directive",
1573 | "challenge",
1574 | "slim",
1575 | "counter",
1576 | "element",
1577 | "chosen",
1578 | "doc_",
1579 | "doc-",
1580 | "doc.",
1581 | "meta",
1582 | "should",
1583 | "button",
1584 | "packet",
1585 | "stream",
1586 | "hardware",
1587 | "android",
1588 | "infinite",
1589 | "password",
1590 | "software",
1591 | "ghost",
1592 | "xamarin",
1593 | "spec",
1594 | "chef",
1595 | "interview",
1596 | "hubot",
1597 | "mvc_",
1598 | "mvc-",
1599 | "mvc.",
1600 | "exercise",
1601 | "leaflet",
1602 | "launcher",
1603 | "air_",
1604 | "air-",
1605 | "air.",
1606 | "photo",
1607 | "board",
1608 | "boxen",
1609 | "way_",
1610 | "way-",
1611 | "way.",
1612 | "computing",
1613 | "welcome",
1614 | "notepad",
1615 | "portfolio",
1616 | "cat_",
1617 | "cat-",
1618 | "cat.",
1619 | "can_",
1620 | "can-",
1621 | "can.",
1622 | "magento",
1623 | "yaml",
1624 | "domain",
1625 | "card",
1626 | "yii_",
1627 | "yii-",
1628 | "yii.",
1629 | "checker",
1630 | "browser",
1631 | "upgrade",
1632 | "only",
1633 | "progres",
1634 | "aura",
1635 | "ruby_",
1636 | "ruby-",
1637 | "ruby.",
1638 | "polymer",
1639 | "util",
1640 | "lite",
1641 | "hackathon",
1642 | "rule",
1643 | "log_",
1644 | "log-",
1645 | "log.",
1646 | "opengl",
1647 | "stanford",
1648 | "skeleton",
1649 | "history",
1650 | "inspector",
1651 | "help",
1652 | "soon",
1653 | "selenium",
1654 | "lab_",
1655 | "lab-",
1656 | "lab.",
1657 | "scheme",
1658 | "schema",
1659 | "look",
1660 | "ready",
1661 | "leveldb",
1662 | "docker",
1663 | "game",
1664 | "minimal",
1665 | "logstash",
1666 | "messaging",
1667 | "within",
1668 | "heroku",
1669 | "mongodb",
1670 | "kata",
1671 | "suite",
1672 | "picker",
1673 | "win_",
1674 | "win-",
1675 | "win.",
1676 | "wip_",
1677 | "wip-",
1678 | "wip.",
1679 | "panel",
1680 | "started",
1681 | "starter",
1682 | "front-end",
1683 | "detector",
1684 | "deploy",
1685 | "editing",
1686 | "based",
1687 | "admin",
1688 | "capture",
1689 | "spree",
1690 | "page",
1691 | "bundle",
1692 | "goal",
1693 | "rpg_",
1694 | "rpg-",
1695 | "rpg.",
1696 | "setup",
1697 | "side",
1698 | "mean",
1699 | "reader",
1700 | "cookbook",
1701 | "mini",
1702 | "modern",
1703 | "seed",
1704 | "dom_",
1705 | "dom-",
1706 | "dom.",
1707 | "doc_",
1708 | "doc-",
1709 | "doc.",
1710 | "dot_",
1711 | "dot-",
1712 | "dot.",
1713 | "syntax",
1714 | "sugar",
1715 | "loader",
1716 | "website",
1717 | "make",
1718 | "kit_",
1719 | "kit-",
1720 | "kit.",
1721 | "protocol",
1722 | "human",
1723 | "daemon",
1724 | "golang",
1725 | "manager",
1726 | "countdown",
1727 | "connector",
1728 | "swagger",
1729 | "map_",
1730 | "map-",
1731 | "map.",
1732 | "mac_",
1733 | "mac-",
1734 | "mac.",
1735 | "man_",
1736 | "man-",
1737 | "man.",
1738 | "orm_",
1739 | "orm-",
1740 | "orm.",
1741 | "org_",
1742 | "org-",
1743 | "org.",
1744 | "little",
1745 | "zsh_",
1746 | "zsh-",
1747 | "zsh.",
1748 | "shop",
1749 | "show",
1750 | "workshop",
1751 | "money",
1752 | "grid",
1753 | "server",
1754 | "octopres",
1755 | "svn_",
1756 | "svn-",
1757 | "svn.",
1758 | "ember",
1759 | "embed",
1760 | "general",
1761 | "file",
1762 | "important",
1763 | "dropbox",
1764 | "portable",
1765 | "public",
1766 | "docpad",
1767 | "fish",
1768 | "sbt_",
1769 | "sbt-",
1770 | "sbt.",
1771 | "done",
1772 | "para",
1773 | "network",
1774 | "common",
1775 | "readme",
1776 | "popup",
1777 | "simple",
1778 | "purpose",
1779 | "mirror",
1780 | "single",
1781 | "cordova",
1782 | "exchange",
1783 | "object",
1784 | "design",
1785 | "gateway",
1786 | "account",
1787 | "lamp",
1788 | "intellij",
1789 | "math",
1790 | "mit_",
1791 | "mit-",
1792 | "mit.",
1793 | "control",
1794 | "enhanced",
1795 | "emitter",
1796 | "multi",
1797 | "add_",
1798 | "add-",
1799 | "add.",
1800 | "about",
1801 | "socket",
1802 | "preview",
1803 | "vagrant",
1804 | "cli_",
1805 | "cli-",
1806 | "cli.",
1807 | "powerful",
1808 | "top_",
1809 | "top-",
1810 | "top.",
1811 | "radio",
1812 | "watch",
1813 | "fluid",
1814 | "amazon",
1815 | "report",
1816 | "couchbase",
1817 | "automatic",
1818 | "detection",
1819 | "sprite",
1820 | "pyramid",
1821 | "portal",
1822 | "advanced",
1823 | "plu_",
1824 | "plu-",
1825 | "plu.",
1826 | "runtime",
1827 | "git_",
1828 | "git-",
1829 | "git.",
1830 | "uri_",
1831 | "uri-",
1832 | "uri.",
1833 | "haml",
1834 | "node",
1835 | "sql_",
1836 | "sql-",
1837 | "sql.",
1838 | "cool",
1839 | "core",
1840 | "obsolete",
1841 | "handler",
1842 | "iphone",
1843 | "extractor",
1844 | "array",
1845 | "copy",
1846 | "nlp_",
1847 | "nlp-",
1848 | "nlp.",
1849 | "reveal",
1850 | "pop_",
1851 | "pop-",
1852 | "pop.",
1853 | "engine",
1854 | "parse",
1855 | "check",
1856 | "html",
1857 | "nest",
1858 | "all_",
1859 | "all-",
1860 | "all.",
1861 | "chinese",
1862 | "buildpack",
1863 | "what",
1864 | "tag_",
1865 | "tag-",
1866 | "tag.",
1867 | "proxy",
1868 | "style",
1869 | "cookie",
1870 | "feed",
1871 | "restful",
1872 | "compiler",
1873 | "creating",
1874 | "prelude",
1875 | "context",
1876 | "java",
1877 | "rspec",
1878 | "mock",
1879 | "backbone",
1880 | "light",
1881 | "spotify",
1882 | "flex",
1883 | "related",
1884 | "shell",
1885 | "which",
1886 | "clas",
1887 | "webapp",
1888 | "swift",
1889 | "ansible",
1890 | "unity",
1891 | "console",
1892 | "tumblr",
1893 | "export",
1894 | "campfire",
1895 | "conway'",
1896 | "made",
1897 | "riak",
1898 | "hero",
1899 | "here",
1900 | "unix",
1901 | "unit",
1902 | "glas",
1903 | "smtp",
1904 | "how_",
1905 | "how-",
1906 | "how.",
1907 | "hot_",
1908 | "hot-",
1909 | "hot.",
1910 | "debug",
1911 | "release",
1912 | "diff",
1913 | "player",
1914 | "easy",
1915 | "right",
1916 | "old_",
1917 | "old-",
1918 | "old.",
1919 | "animate",
1920 | "time",
1921 | "push",
1922 | "explorer",
1923 | "course",
1924 | "training",
1925 | "nette",
1926 | "router",
1927 | "draft",
1928 | "structure",
1929 | "note",
1930 | "salt",
1931 | "where",
1932 | "spark",
1933 | "trello",
1934 | "power",
1935 | "method",
1936 | "social",
1937 | "via_",
1938 | "via-",
1939 | "via.",
1940 | "vim_",
1941 | "vim-",
1942 | "vim.",
1943 | "select",
1944 | "webkit",
1945 | "github",
1946 | "ftp_",
1947 | "ftp-",
1948 | "ftp.",
1949 | "creator",
1950 | "mongoose",
1951 | "led_",
1952 | "led-",
1953 | "led.",
1954 | "movie",
1955 | "currently",
1956 | "pdf_",
1957 | "pdf-",
1958 | "pdf.",
1959 | "load",
1960 | "markdown",
1961 | "phalcon",
1962 | "input",
1963 | "custom",
1964 | "atom",
1965 | "oracle",
1966 | "phonegap",
1967 | "ubuntu",
1968 | "great",
1969 | "rdf_",
1970 | "rdf-",
1971 | "rdf.",
1972 | "popcorn",
1973 | "firefox",
1974 | "zip_",
1975 | "zip-",
1976 | "zip.",
1977 | "cuda",
1978 | "dotfile",
1979 | "static",
1980 | "openwrt",
1981 | "viewer",
1982 | "powered",
1983 | "graphic",
1984 | "les_",
1985 | "les-",
1986 | "les.",
1987 | "doe_",
1988 | "doe-",
1989 | "doe.",
1990 | "maven",
1991 | "word",
1992 | "eclipse",
1993 | "lab_",
1994 | "lab-",
1995 | "lab.",
1996 | "hacking",
1997 | "steam",
1998 | "analytic",
1999 | "option",
2000 | "abstract",
2001 | "archive",
2002 | "reality",
2003 | "switcher",
2004 | "club",
2005 | "write",
2006 | "kafka",
2007 | "arduino",
2008 | "angular",
2009 | "online",
2010 | "title",
2011 | "don't",
2012 | "contao",
2013 | "notice",
2014 | "analyzer",
2015 | "learning",
2016 | "zend",
2017 | "external",
2018 | "staging",
2019 | "busines",
2020 | "tdd_",
2021 | "tdd-",
2022 | "tdd.",
2023 | "scanner",
2024 | "building",
2025 | "snippet",
2026 | "modular",
2027 | "bower",
2028 | "stm_",
2029 | "stm-",
2030 | "stm.",
2031 | "lib_",
2032 | "lib-",
2033 | "lib.",
2034 | "alpha",
2035 | "mobile",
2036 | "clean",
2037 | "linux",
2038 | "nginx",
2039 | "manifest",
2040 | "some",
2041 | "raspberry",
2042 | "gnome",
2043 | "ide_",
2044 | "ide-",
2045 | "ide.",
2046 | "block",
2047 | "statistic",
2048 | "info",
2049 | "drag",
2050 | "youtube",
2051 | "koan",
2052 | "facebook",
2053 | "paperclip",
2054 | "art_",
2055 | "art-",
2056 | "art.",
2057 | "quality",
2058 | "tab_",
2059 | "tab-",
2060 | "tab.",
2061 | "need",
2062 | "dojo",
2063 | "shield",
2064 | "computer",
2065 | "stat",
2066 | "state",
2067 | "twitter",
2068 | "utility",
2069 | "converter",
2070 | "hosting",
2071 | "devise",
2072 | "liferay",
2073 | "updated",
2074 | "force",
2075 | "tip_",
2076 | "tip-",
2077 | "tip.",
2078 | "behavior",
2079 | "active",
2080 | "call",
2081 | "answer",
2082 | "deck",
2083 | "better",
2084 | "principle",
2085 | "ches",
2086 | "bar_",
2087 | "bar-",
2088 | "bar.",
2089 | "reddit",
2090 | "three",
2091 | "haxe",
2092 | "just",
2093 | "plug-in",
2094 | "agile",
2095 | "manual",
2096 | "tetri",
2097 | "super",
2098 | "beta",
2099 | "parsing",
2100 | "doctrine",
2101 | "minecraft",
2102 | "useful",
2103 | "perl",
2104 | "sharing",
2105 | "agent",
2106 | "switch",
2107 | "view",
2108 | "dash",
2109 | "channel",
2110 | "repo",
2111 | "pebble",
2112 | "profiler",
2113 | "warning",
2114 | "cluster",
2115 | "running",
2116 | "markup",
2117 | "evented",
2118 | "mod_",
2119 | "mod-",
2120 | "mod.",
2121 | "share",
2122 | "csv_",
2123 | "csv-",
2124 | "csv.",
2125 | "response",
2126 | "good",
2127 | "house",
2128 | "connect",
2129 | "built",
2130 | "build",
2131 | "find",
2132 | "ipython",
2133 | "webgl",
2134 | "big_",
2135 | "big-",
2136 | "big.",
2137 | "google",
2138 | "scala",
2139 | "sdl_",
2140 | "sdl-",
2141 | "sdl.",
2142 | "sdk_",
2143 | "sdk-",
2144 | "sdk.",
2145 | "native",
2146 | "day_",
2147 | "day-",
2148 | "day.",
2149 | "puppet",
2150 | "text",
2151 | "routing",
2152 | "helper",
2153 | "linkedin",
2154 | "crawler",
2155 | "host",
2156 | "guard",
2157 | "merchant",
2158 | "poker",
2159 | "over",
2160 | "writing",
2161 | "free",
2162 | "classe",
2163 | "component",
2164 | "craft",
2165 | "nodej",
2166 | "phoenix",
2167 | "longer",
2168 | "quick",
2169 | "lazy",
2170 | "memory",
2171 | "clone",
2172 | "hacker",
2173 | "middleman",
2174 | "factory",
2175 | "motion",
2176 | "multiple",
2177 | "tornado",
2178 | "hack",
2179 | "ssh_",
2180 | "ssh-",
2181 | "ssh.",
2182 | "review",
2183 | "vimrc",
2184 | "driver",
2185 | "driven",
2186 | "blog",
2187 | "particle",
2188 | "table",
2189 | "intro",
2190 | "importer",
2191 | "thrift",
2192 | "xmpp",
2193 | "framework",
2194 | "refresh",
2195 | "react",
2196 | "font",
2197 | "librarie",
2198 | "variou",
2199 | "formatter",
2200 | "analysi",
2201 | "karma",
2202 | "scroll",
2203 | "tut_",
2204 | "tut-",
2205 | "tut.",
2206 | "apple",
2207 | "tag_",
2208 | "tag-",
2209 | "tag.",
2210 | "tab_",
2211 | "tab-",
2212 | "tab.",
2213 | "category",
2214 | "ionic",
2215 | "cache",
2216 | "homebrew",
2217 | "reverse",
2218 | "english",
2219 | "getting",
2220 | "shipping",
2221 | "clojure",
2222 | "boot",
2223 | "book",
2224 | "branch",
2225 | ]
2226 |
--------------------------------------------------------------------------------
/.groovylintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "recommended-jenkinsfile",
3 | "rules": {
4 | "CouldBeElvis": "off",
5 | "CouldBeSwitchStatement": "off",
6 | "formatting.Indentation": {
7 | "spacesPerIndentLevel": 2,
8 | "severity": "info"
9 | },
10 | "VariableName": {
11 | "severity": "info"
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/.mega-linter.yml:
--------------------------------------------------------------------------------
1 | ---
2 | # Configuration file for MegaLinter
3 | # See all available variables at https://oxsecurity.github.io/megalinter/configuration/ and in linters documentation
4 |
5 | APPLY_FIXES: all # all, none, or list of linter keys
6 | DEFAULT_BRANCH: master # Usually master or main
7 | ENABLE: TERRAFORM,BASH
8 | ENABLE_LINTERS: # If you use ENABLE_LINTERS variable, all other linters will be disabled by default
9 | - REPOSITORY_SECRETLINT
10 | - REPOSITORY_GITLEAKS
11 | - TERRAFORM_TERRASCAN
12 | - BASH_SHELLCHECK
13 | DISABLE:
14 | - CLOUDFORMATION
15 | # - COPYPASTE # Uncomment to disable checks of abusive copy-pastes
16 | - EDITORCONFIG
17 | # - MARKDOWN
18 | # - SPELL # Uncomment to disable checks of spelling mistakes
19 | - JAVASCRIPT
20 | - TEKTON
21 | - SPELL_LYCHEE
22 | # - YAML_PRETTIER
23 | DISABLE_LINTERS:
24 | - REPOSITORY_DEVSKIM
25 | - REPOSITORY_CHECKOV
26 | - REPOSITORY_TRIVY
27 | - REPOSITORY_SYFT
28 | - REPOSITORY_TRUFFLEHOG
29 | - TERRAFORM_TERRAGRUNT
30 | - TERRAFORM_TERRASCAN
31 | - TERRAFORM_KICS
32 | - REPOSITORY_GRYPE
33 | # - PYTHON_MYPY
34 | # - PYTHON_PYRIGHT
35 | # - PYTHON_PYLINT
36 | - JAVASCRIPT_STANDARD # Using JAVASCRIPT_ES
37 | - SPELL_LYCHEE
38 | IGNORE_GITIGNORED_FILES: true
39 | FILTER_REGEX_EXCLUDE: (megalinter-reports/|\.automation/test|\.automation/generated|\.github/workflows|\.venv/|\.direnv/|\.mypy_cache/|docs/javascripts|docs/overrides|docs/json-schemas|flavors|clj-kondo|TEMPLATES|tests)
40 | JSON_JSONLINT_FILTER_REGEX_EXCLUDE: (\.vscode/)
41 | YAML_YAMLLINT_FILTER_REGEX_EXCLUDE: (templates/\.mega-linter\.yml|terraform\/nomad\/jobs\/files\/kong\.yml|terraform\/templates\/cg_network_GRA1_private\.yml)
42 | # YAML_YAMLLINT_CONFIG_FILE: .yamllint.yml
43 | YAML_PRETTIER_FILTER_REGEX_EXCLUDE: (templates/\.mega-linter\.yml|mkdocs\.yml|terraform\/nomad\/jobs\/files)
44 | YAML_V8R_FILTER_REGEX_EXCLUDE: (descriptors|templates/\.mega-linter\.yml|\.codecov\.yml)
45 | JSON_V8R_FILTER_REGEX_EXCLUDE: (test\|.vscode\/settings\.json|Brewfile.lock.json|package-lock.json|bower.json|kics-config.json|\.mega-linter\.yml|\.codecov\.yml)
46 | BASH_FILTER_REGEX_EXCLUDE: (lib)
47 | MARKDOWN_FILTER_REGEX_EXCLUDE: (license\.md)
48 | MARKDOWN_MARKDOWN_LINK_CHECK_DISABLE_ERRORS: true
49 | SPELL_MISSPELL_FILTER_REGEX_EXCLUDE: (\.automation/generated|docs/descriptors)
50 | DOCKERFILE_HADOLINT_ARGUMENTS:
51 | --ignore DL3003 --ignore DL3007 --ignore DL3013 --ignore DL3016 --ignore DL3018 --ignore DL3028 --ignore DL4001 --ignore DL4006 --ignore
52 | SC2015 --ignore SC2016 --ignore SC2039 --ignore SC2086 --ignore SC1091
53 | # DISABLE_ERRORS: true # Uncomment if you want MegaLinter to detect errors but not block CI to pass
54 | REPOSITORY_DEVSKIM_DISABLE_ERRORS: true
55 | REPOSITORY_DEVSKIM_DISABLE_ERRORS_IF_LESS_THAN: 10
56 | # See https://github.com/oxsecurity/megalinter/issues/1993
57 | REPOSITORY_DEVSKIM_ARGUMENTS: --severity critical,important --skip-git-ignored-files # --ignore-globs **/.git/**,**/bin/**,.mypy_cache/**,**/tests/**,**/README.md
58 | REPOSITORY_TRIVY_DISABLE_ERRORS: false
59 | REPOSITORY_TRIVY_ARGUMENTS: --security-checks vuln,config,secret --vuln-type os,library --ignore-unfixed --ignorefile .trivyignore.yaml --skip-dirs .direnv --skip-dirs .venv --skip-dirs megalinter-reports --skip-files pip.conf --skip-files Pipfile --skip-files /usr/bin/nomad --skip-files terraform/nomad/jobs/4-2-keycloak.nomad
60 | REPOSITORY_TRIVY_DISABLE_ERRORS_IF_LESS_THAN: 3
61 | REPOSITORY_CHECKOV_DISABLE_ERRORS_IF_LESS_THAN: 1
62 | TERRAFORM_TERRASCAN_ARGUMENTS: -i terraform -t docker -t github -d terraform # -f myfile.tf
63 | TERRAFORM_TERRASCAN_DISABLE_ERRORS: true
64 | REPOSITORY_KICS_DISABLE_ERRORS_IF_LESS_THAN: 230
65 | REPOSITORY_GITLEAKS_DISABLE_ERRORS: false
66 | REPOSITORY_GITLEAKS_ARGUMENTS: --no-git
67 | REPOSITORY_GITLEAKS_PR_COMMITS_SCAN: true
68 | REPOSITORY_SECRETLINT_DISABLE_ERRORS: false
69 | ANSIBLE_ANSIBLE_LINT_DISABLE_ERRORS_IF_LESS_THAN: 10
70 | BASH_SHFMT_DISABLE_ERRORS_IF_LESS_THAN: 6
71 | BASH_SHELLCHECK_DISABLE_ERRORS_IF_LESS_THAN: 6
72 | # BASH_SHELLCHECK_DISABLE_ERRORS: true
73 | PYTHON_BANDIT_DISABLE_ERRORS: true
74 | # PYTHON_MYPY_DISABLE_ERRORS: true
75 | # PYTHON_PYLINT_DISABLE_ERRORS: true
76 | # PYTHON_PYRIGHT_DISABLE_ERRORS: true
77 | YAML_V8R_FILE_NAMES_REGEX:
78 | [
79 | '.codeclimate.yml',
80 | '.dive.yaml',
81 | '.gitlab-ci.yml',
82 | '.mega-linter.yml',
83 | '.checkov.yml',
84 | 'terraform/nomad/jobs/files/alertmanager/alertmanager.yml',
85 | 'terraform/nomad/jobs/files/prometheus/prom-nomad-rules.yml',
86 | ]
87 | EXCLUDED_DIRECTORIES:
88 | ['.github', '.gitlab-ci', 'node_modules', '.venv', '.direnv', '.mypy_cache']
89 | SHOW_ELAPSED_TIME: true
90 | JSON_REPORTER: true
91 | SARIF_REPORTER: true
92 | FILEIO_REPORTER: true
93 | VALIDATE_ALL_CODEBASE: false
94 | PLUGINS:
95 | - https://raw.githubusercontent.com/nvuillam/mega-linter/master/.automation/test/mega-linter-plugin-test/test.megalinter-descriptor.yml
96 | # - https://raw.githubusercontent.com/oxsecurity/megalinter/master/.automation/test/mega-linter-plugin-test/test.megalinter-descriptor.yml
97 | PRE_COMMANDS:
98 | # - command: pip install flake8-cognitive-complexity
99 | # venv: flake8 # Will be run within flake8 python virtualenv. There is one virtualenv per python-based linter, with the same name
100 | - command: echo "This is Mega-Linter PRE_COMMAND on own Mega-Linter ! :)"
101 | cwd: root
102 | - command: |-
103 | echo $(ls -lah .gitignore | sed 's/\s\+/ /g' | cut -d ' ' -f3,4 | sed 's/ /\:/') > perms.txt
104 | cwd: 'workspace'
105 | POST_COMMANDS:
106 | - command: echo "This is Mega-Linter POST_COMMAND on own Mega-Linter ! :)"
107 | cwd: workspace
108 | - command: |-
109 | find . -user root -group root -exec chown $(cat perms.txt) {} \;
110 | rm perms.txt
111 | cwd: 'workspace'
112 |
--------------------------------------------------------------------------------
/.pre-commit-config.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | fail_fast: true
3 | minimum_pre_commit_version: 3.7.1
4 | exclude: docs/_build/
5 | # default_language_version:
6 | # python: python3.6 # Ubuntu 18.04.3
7 | # python: python3.7 # Ubuntu 19.04
8 | # python: python3.9 # Ubuntu 20.04
9 | # python: python3.10 # Ubuntu 22.04
10 | # python: python3.11 # Ubuntu 24.04
11 | repos:
12 | - repo: https://github.com/pre-commit/pre-commit-hooks.git
13 | # pre-commit-hooks is not working on both environment
14 | # You will have to switch
15 | # pre-commit-hooks.git from v2.1.0 to v2.4.0
16 | # rev: v2.1.0 # ok python3.6 # 18.04.3
17 | # rev: v2.2.3 # ok python3.6 # 19.04 but failing on 18.04.3
18 | rev: v5.0.0 # ok python3.6 on Ubuntu 18.04 AND python3.7 on Ubuntu 19.04
19 | hooks:
20 | - id: trailing-whitespace
21 | - id: end-of-file-fixer
22 | - id: check-added-large-files
23 | args: [--maxkb=123]
24 | exclude: >
25 | (?x)^(
26 | package-lock.json|
27 | npm-shrinkwrap.json
28 | )$
29 | - id: check-case-conflict
30 | - id: check-docstring-first
31 | - id: check-executables-have-shebangs
32 | exclude: >
33 | (?x)^(
34 | env/home/log4j.xml
35 | clean.bat|
36 | build.bat|
37 | mvnw.cmd|
38 | .mvn/|
39 | env/winnt|
40 | )$
41 | - id: check-json
42 | exclude: ^.vscode/
43 | - id: check-xml
44 | - id: check-yaml
45 | exclude: >
46 | (?x)^(
47 | packs/.*|
48 | k8s/.*|
49 | )$
50 | - id: check-symlinks
51 | - id: check-merge-conflict
52 | - id: debug-statements
53 | exclude: >
54 | (?x)^(
55 | env/scripts/zodclient.py|
56 | env/scripts/server-connector.py
57 | )$
58 | - id: detect-private-key
59 | exclude: >
60 | (?x)^(
61 | .ssh/id_rsa|
62 | roles/jenkins-master/defaults/main.yml|
63 | roles/jenkins-master/README.md|
64 | env/scripts/server-connector.py
65 | )$
66 | - id: double-quote-string-fixer
67 | - id: name-tests-test
68 | exclude: >
69 | (?x)^(
70 | molecule/default/tests/test_default.py|
71 | )$
72 | # - id: no-commit-to-branch
73 | # args: [--branch, develop, --branch, master, --branch, release/*]
74 | - id: end-of-file-fixer
75 | - id: fix-encoding-pragma
76 | - id: requirements-txt-fixer
77 | - id: sort-simple-yaml
78 | - id: file-contents-sorter
79 | - repo: https://github.com/asottile/add-trailing-comma
80 | rev: v3.1.0
81 | hooks:
82 | - id: add-trailing-comma
83 | # - repo: https://github.com/willthames/ansible-lint.git
84 | # rev: v24.2.2
85 | # hooks:
86 | # - id: ansible-lint
87 | # files: \.(yaml|yml)$
88 | # exclude: ".travis.yml"
89 | - repo: https://github.com/adrienverge/yamllint.git
90 | rev: v1.35.1 # or higher tag
91 | hooks:
92 | - id: yamllint
93 | args: [--format, parsable, --strict]
94 | - repo: https://github.com/jumanjihouse/pre-commit-hook-yamlfmt
95 | rev: 0.2.3 # or other specific tag
96 | hooks:
97 | - id: yamlfmt
98 | - repo: https://github.com/doublify/pre-commit-hindent.git
99 | rev: b3680b6ebf9f7cf29b19307f246adef66756feef
100 | hooks:
101 | - id: hindent
102 | - repo: https://github.com/detailyang/pre-commit-shell
103 | rev: 1.0.5
104 | hooks:
105 | - id: shell-lint
106 | # entry: pre_commit_hooks/shell-lint.sh -x
107 | args: [-x]
108 | exclude: >
109 | (?x)^(
110 | mvnw|
111 | hooks|
112 | env/linux/.*|
113 | env/home/dev.env.sh|
114 | env/home/dotfiles/.*|
115 | .git-prompt.sh|
116 | )$
117 | # - repo: https://github.com/PyCQA/flake8
118 | # rev: 3.9.2
119 | # hooks:
120 | # - id: flake8
121 | # args: [--max-line-length=120]
122 | # exclude: >
123 | # (?x)^(
124 | # env/scripts/zodclient.py|
125 | # env/scripts/server-connector.py
126 | # )$
127 | # - repo: https://github.com/PyCQA/bandit
128 | # rev: master
129 | # hooks:
130 | # - id: bandit
131 | - repo: https://github.com/IamTheFij/ansible-pre-commit
132 | rev: v0.1.2
133 | hooks:
134 | - id: encryption-check
135 | exclude: >
136 | (?x)^(
137 | .github/workflows/vault.yml|
138 | infra/terraform/nomad/jobs/vault-backup.nomad|
139 | infra/terraform/vault/.*|
140 | )$
141 | - repo: https://github.com/Lucas-C/pre-commit-hooks-nodejs
142 | rev: v1.1.2
143 | hooks:
144 | - id: htmlhint
145 | args: [--config, .htmlhintrc]
146 | # - id: markdown-toc
147 | # args: [--maxdepth, "3", -i]
148 | # - id: dockerfile_lint
149 | # args: [--permissive, --verbose, --dockerfile, ./docker/ubuntu20/Dockerfile]
150 | - repo: https://github.com/zricethezav/gitleaks
151 | rev: v8.21.2 # NOK v8.18.4
152 | hooks:
153 | - id: gitleaks
154 | args: [--config, .gitleaks.toml]
155 | # diff: line 0: git-crypt: not found
156 | # - id: gitleaks-docker
157 | # entry: zricethezav/gitleaks protect --verbose --redact --staged # --config .gitleaks.toml
158 | # #entry: zricethezav/gitleaks detect --verbose --config .gitleaks.toml
159 | # - repo: https://github.com/bridgecrewio/checkov.git
160 | # rev: '2.0.1145' # change to tag or sha
161 | # hooks:
162 | # - id: checkov
163 | # verbose: true
164 | # args: [--soft-fail]
165 | - repo: https://github.com/python-jsonschema/check-jsonschema
166 | rev: 0.30.0
167 | hooks:
168 | - id: check-github-workflows
169 | - id: check-gitlab-ci
170 | - repo: https://github.com/gitguardian/ggshield
171 | rev: v1.34.0
172 | hooks:
173 | - id: ggshield
174 | language_version: python3
175 | stages: [commit]
176 | # args: ['secret', 'scan', 'pre-commit']
177 | # - repo: https://github.com/Checkmarx/kics
178 | # rev: "v1.5.9"
179 | # hooks:
180 | # #- id: kics
181 | # # exclude: >
182 | # # (?x)^(
183 | # # .direnv$|
184 | # # .*\.terraform.*$|
185 | # # .*\.tfvars$|
186 | # # )$
187 | # - id: kics-scan
188 | # verbose: true
189 | # args: [--ignore-on-exit, "all", --config, "kics-config.json"]
190 |
--------------------------------------------------------------------------------
/.python-version:
--------------------------------------------------------------------------------
1 | 3.11.6
2 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | ---
2 |
3 | sudo: required
4 | dist: travis_lts
5 |
6 | language: python
7 | python:
8 | - 3.8
9 |
10 | services:
11 | - docker
12 |
13 | cache:
14 | bundler:
15 | directories:
16 | - $HOME/.cache/pip
17 |
18 | env:
19 | global:
20 | - JENKINS_HOME: /home/jenkins
21 | - JENKINS_UID: 3000
22 | - DOCKER_GID: 999
23 | - secure: MD73NCVzctbVmi2QnQtwtH/ISXN2K0alsLbixoaXl7gr3XvTB4sYB0u+KKtPV46jbeAlQqTRObPfQouPrsLsiNDYcpuN0I5bKsn3TTs4ZHIkD0I2Q9Wh3qNM2fYf9mw3ZUhvXVTEod0W7jzkVGb6kitRCJj8rioKKzvE/YdVsG4=
24 | matrix:
25 | # - ANSIBLE_VERSION: latest
26 | # - ANSIBLE_VERSION: 2.7.2
27 | - ANSIBLE_VERSION: 2.8.1
28 | - ANSIBLE_VERSION: 2.10.3
29 |
30 | matrix:
31 | fast_finish: true
32 | allow_failures:
33 | - env: ANSIBLE_VERSION=2.8.1
34 |
35 | branches:
36 | only:
37 | - master
38 |
39 | notifications:
40 | webhooks:
41 | urls:
42 | - https://webhooks.gitter.im/e/47b10b81867bd0063cf5
43 | - https://galaxy.ansible.com/api/v1/notifications/
44 | on_success: change
45 | on_failure: always
46 | on_start: false
47 | # email: false
48 | # hipchat:
49 | # rooms:
50 | # secure: GPUtM44MpgqN/3+TXw4Onp7TpF6YOKpVQkB/sfwGYS1oHUCkp2eb3eGGfJAIUtNxkfFVkdUxM/Bp9GMCnpVjJwRRZP6hYUmlpjCHl8CiK2MjbLvzV65qqBAqYl5bLzKkmmRdPiC31m9ixMe4TiAhJFBK1NoETOP1LkCJ04ezL6U=
51 | email:
52 | recipients:
53 | - alban.andrieu@nabla.mobi
54 | on_success: [always|never|change] # default: change
55 | on_failure: [always|never|change] # default: always
56 |
57 | virtualenv:
58 | system_site_packages: false
59 |
60 | before_install:
61 | - sudo apt-get update -qq
62 | - sudo apt-get install curl
63 | - sudo apt-get install -qq python-apt python-pycurl
64 | # os:
65 | # - linux
66 | # - osx
67 | install:
68 | # Install Ansible.
69 | - if [ "$ANSIBLE_VERSION" = "latest" ]; then pip install ansible; else pip install ansible==$ANSIBLE_VERSION; fi
70 | - if [ "$ANSIBLE_VERSION" = "latest" ]; then pip install ansible-lint; fi
71 |
72 | # Add ansible.cfg to pick up roles path.
73 | # - "{ echo '[defaults]'; echo 'roles_path = ../'; } >> ansible.cfg"
74 |
75 | # Prepare tests
76 | # Add user jenkins to the image (travis is 2000)
77 | - id -a
78 | - getent passwd 3000 || true # 3000 not found we can use it for jenkins user
79 | # - groupadd -g ${DOCKER_GID} docker && \
80 | - sudo adduser --quiet --disabled-password --shell /bin/bash --uid ${JENKINS_UID} --gid ${DOCKER_GID} --home ${JENKINS_HOME} --gecos "Jenkins" jenkins
81 | # Set password for the jenkins user (you may want to alter this).
82 | # - sudo echo "jenkins:jenkins1234" | sudo chpasswd
83 |
84 | - pip install molecule
85 |
86 | # Update Ansible submodule.
87 | - git pull && git submodule init && git submodule update && git submodule status
88 | - git submodule foreach git checkout master
89 |
90 | - ansible-galaxy install -r ./requirements.yml -p ./roles/ --ignore-errors
91 |
92 | script:
93 | # Check ansible version
94 | - ansible --version
95 |
96 | # Check syntax
97 | - ansible-playbook -i ./hosts --syntax-check ./eclipse.yml -vvvv --connection=local -e "python_versions=[2.7, 3.5]" -e "docker_gid=${DOCKER_GID}" -e "jenkins_id=${JENKINS_UID}" -e "python_enabled=false"
98 |
99 | # Molecule test
100 | # - molecule test
101 |
102 | # First run
103 | - travis_wait 30 ansible-playbook -i ./hosts --connection=local -vvvv ./eclipse.yml -e "python_versions=[2.7, 3.5]" -e "docker_gid=${DOCKER_GID}" -e "jenkins_id=${JENKINS_UID}" -e "python_enabled=false"
104 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 |
2 | {
3 | "files.associations": {
4 | "*.yml": "ansible"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/.yamllint:
--------------------------------------------------------------------------------
1 | ---
2 | # Usage : yamllint . --config-file .yamllint
3 | # extends: default
4 | extends: relaxed
5 | rules:
6 | # to match ansible-lint --write
7 | braces:
8 | min-spaces-inside: 1
9 | max-spaces-inside: 1
10 | level: error
11 | brackets:
12 | max-spaces-inside: 1
13 | level: error
14 | comments:
15 | min-spaces-from-content: 1
16 | line-length: disable
17 | indentation:
18 | spaces: 2
19 | # document-start: disable
20 | # truthy: disable
21 | # NOTE(retr0h): Templates no longer fail this lint rule.
22 | # Uncomment if running old Molecule templates.
23 | truthy:
24 | allowed-values: ['true', 'false', 'on']
25 | # https://github.com/adrienverge/yamllint/issues/141
26 | # comments-indentation: disable
27 | ignore: |-
28 | .direnv/
29 | .venv/
30 | .git/
31 | .tox
32 | .cache
33 | roles/
34 | .ansible-lint
35 | .github/
36 | .gitlab-ci.yml
37 | node_modules/
38 | .pre-commit-config.yaml
39 | .megalinter-reports/
40 | .gitguardian.yaml
41 |
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | # This file was generated by ansible for albandri-laptop-misys.misys.global.ad
2 | FROM ubuntu:20.04
3 |
4 | # Volume can be accessed outside of container
5 | VOLUME [/usr/local/eclipse]
6 |
7 | ENV DEBIAN_FRONTEND noninteractive
8 | ENV ECLIPSE_HOME /usr/local/eclipse
9 | ENV WORKDIR /home/vagrant
10 |
11 | # Working dir
12 | WORKDIR /home/vagrant
13 |
14 | # Install ansible
15 | RUN apt-get -q update &&\
16 | apt-get -q install -y -o Dpkg::Options::="--force-confnew" --no-install-recommends \
17 | git bzip2 zip unzip python-yaml python-jinja2 rsyslog gpg-agent \
18 | ocl-icd-libopencl1 ocl-icd-opencl-dev clinfo numactl libnuma1 pciutils \
19 | apt-utils apt-transport-https ca-certificates software-properties-common \
20 | locales xz-utils ksh wget tzdata sudo curl lsof sshpass \
21 | systemd systemd-cron \
22 | python3-setuptools python3 python3-pip python3-dev python3-apt \
23 | openjdk-8-jdk maven gcc g++ make \
24 | net-tools iputils-ping x11-apps \
25 | gnome-keyring gnome-keyring gnupg2 pass \
26 | && apt-get clean && rm -rf /var/lib/apt/lists/*
27 |
28 | RUN python3 -m pip install --upgrade pip==20.0.2 \
29 | && pip3 install ansible==2.9.7 zabbix-api==0.5.4 docker-compose==1.25.3
30 |
31 | # Install Ansible inventory file.
32 | RUN mkdir -p /etc/ansible
33 | RUN echo "[local]\nlocalhost ansible_connection=local" > /etc/ansible/hosts
34 | ENV ANSIBLE_CONFIG=${JENKINS_USER_HOME}/ansible.cfg
35 |
36 | # ADD
37 | ADD defaults $WORKDIR/ansible-eclipse/defaults
38 | ADD meta $WORKDIR/ansible-eclipse/meta
39 | ADD files $WORKDIR/ansible-eclipse/files
40 | ADD handlers $WORKDIR/ansible-eclipse/handlers
41 | ADD tasks $WORKDIR/ansible-eclipse/tasks
42 | ADD templates $WORKDIR/ansible-eclipse/templates
43 | #ADD vars $WORKDIR/ansible-eclipse/vars
44 |
45 | # Here we continue to use add because
46 | # there are a limited number of RUNs
47 | # allowed.
48 | ADD eclipse.yml $WORKDIR/ansible-eclipse/eclipse.yml
49 |
50 | # Execute
51 | RUN ansible-playbook $WORKDIR/ansible-eclipse/eclipse.yml -c local \
52 | -e "python_interpreter=python3" \
53 | -vvvv
54 |
55 | # Clean up APT when done.
56 | RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
57 |
58 | RUN chmod +x /usr/local/eclipse/eclipse-4/eclipse
59 |
60 | RUN ln -sf /dev/stdout /var/log/eclipse.log
61 | # && ln -sf /dev/stderr hs_err_pid*.log
62 |
63 | #EXPOSE 21:9999
64 | ENTRYPOINT ["/usr/local/eclipse/eclipse-4/eclipse"]
65 | CMD ["-g", "deamon off;"]
66 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | GNU GENERAL PUBLIC LICENSE
2 | Version 3, 29 June 2007
3 |
4 | Copyright (C) 2007 Free Software Foundation, Inc.
5 | Everyone is permitted to copy and distribute verbatim copies
6 | of this license document, but changing it is not allowed.
7 |
8 | Preamble
9 |
10 | The GNU General Public License is a free, copyleft license for
11 | software and other kinds of works.
12 |
13 | The licenses for most software and other practical works are designed
14 | to take away your freedom to share and change the works. By contrast,
15 | the GNU General Public License is intended to guarantee your freedom to
16 | share and change all versions of a program--to make sure it remains free
17 | software for all its users. We, the Free Software Foundation, use the
18 | GNU General Public License for most of our software; it applies also to
19 | any other work released this way by its authors. You can apply it to
20 | your programs, too.
21 |
22 | When we speak of free software, we are referring to freedom, not
23 | price. Our General Public Licenses are designed to make sure that you
24 | have the freedom to distribute copies of free software (and charge for
25 | them if you wish), that you receive source code or can get it if you
26 | want it, that you can change the software or use pieces of it in new
27 | free programs, and that you know you can do these things.
28 |
29 | To protect your rights, we need to prevent others from denying you
30 | these rights or asking you to surrender the rights. Therefore, you have
31 | certain responsibilities if you distribute copies of the software, or if
32 | you modify it: responsibilities to respect the freedom of others.
33 |
34 | For example, if you distribute copies of such a program, whether
35 | gratis or for a fee, you must pass on to the recipients the same
36 | freedoms that you received. You must make sure that they, too, receive
37 | or can get the source code. And you must show them these terms so they
38 | know their rights.
39 |
40 | Developers that use the GNU GPL protect your rights with two steps:
41 | (1) assert copyright on the software, and (2) offer you this License
42 | giving you legal permission to copy, distribute and/or modify it.
43 |
44 | For the developers' and authors' protection, the GPL clearly explains
45 | that there is no warranty for this free software. For both users' and
46 | authors' sake, the GPL requires that modified versions be marked as
47 | changed, so that their problems will not be attributed erroneously to
48 | authors of previous versions.
49 |
50 | Some devices are designed to deny users access to install or run
51 | modified versions of the software inside them, although the manufacturer
52 | can do so. This is fundamentally incompatible with the aim of
53 | protecting users' freedom to change the software. The systematic
54 | pattern of such abuse occurs in the area of products for individuals to
55 | use, which is precisely where it is most unacceptable. Therefore, we
56 | have designed this version of the GPL to prohibit the practice for those
57 | products. If such problems arise substantially in other domains, we
58 | stand ready to extend this provision to those domains in future versions
59 | of the GPL, as needed to protect the freedom of users.
60 |
61 | Finally, every program is threatened constantly by software patents.
62 | States should not allow patents to restrict development and use of
63 | software on general-purpose computers, but in those that do, we wish to
64 | avoid the special danger that patents applied to a free program could
65 | make it effectively proprietary. To prevent this, the GPL assures that
66 | patents cannot be used to render the program non-free.
67 |
68 | The precise terms and conditions for copying, distribution and
69 | modification follow.
70 |
71 | TERMS AND CONDITIONS
72 |
73 | 0. Definitions.
74 |
75 | "This License" refers to version 3 of the GNU General Public License.
76 |
77 | "Copyright" also means copyright-like laws that apply to other kinds of
78 | works, such as semiconductor masks.
79 |
80 | "The Program" refers to any copyrightable work licensed under this
81 | License. Each licensee is addressed as "you". "Licensees" and
82 | "recipients" may be individuals or organizations.
83 |
84 | To "modify" a work means to copy from or adapt all or part of the work
85 | in a fashion requiring copyright permission, other than the making of an
86 | exact copy. The resulting work is called a "modified version" of the
87 | earlier work or a work "based on" the earlier work.
88 |
89 | A "covered work" means either the unmodified Program or a work based
90 | on the Program.
91 |
92 | To "propagate" a work means to do anything with it that, without
93 | permission, would make you directly or secondarily liable for
94 | infringement under applicable copyright law, except executing it on a
95 | computer or modifying a private copy. Propagation includes copying,
96 | distribution (with or without modification), making available to the
97 | public, and in some countries other activities as well.
98 |
99 | To "convey" a work means any kind of propagation that enables other
100 | parties to make or receive copies. Mere interaction with a user through
101 | a computer network, with no transfer of a copy, is not conveying.
102 |
103 | An interactive user interface displays "Appropriate Legal Notices"
104 | to the extent that it includes a convenient and prominently visible
105 | feature that (1) displays an appropriate copyright notice, and (2)
106 | tells the user that there is no warranty for the work (except to the
107 | extent that warranties are provided), that licensees may convey the
108 | work under this License, and how to view a copy of this License. If
109 | the interface presents a list of user commands or options, such as a
110 | menu, a prominent item in the list meets this criterion.
111 |
112 | 1. Source Code.
113 |
114 | The "source code" for a work means the preferred form of the work
115 | for making modifications to it. "Object code" means any non-source
116 | form of a work.
117 |
118 | A "Standard Interface" means an interface that either is an official
119 | standard defined by a recognized standards body, or, in the case of
120 | interfaces specified for a particular programming language, one that
121 | is widely used among developers working in that language.
122 |
123 | The "System Libraries" of an executable work include anything, other
124 | than the work as a whole, that (a) is included in the normal form of
125 | packaging a Major Component, but which is not part of that Major
126 | Component, and (b) serves only to enable use of the work with that
127 | Major Component, or to implement a Standard Interface for which an
128 | implementation is available to the public in source code form. A
129 | "Major Component", in this context, means a major essential component
130 | (kernel, window system, and so on) of the specific operating system
131 | (if any) on which the executable work runs, or a compiler used to
132 | produce the work, or an object code interpreter used to run it.
133 |
134 | The "Corresponding Source" for a work in object code form means all
135 | the source code needed to generate, install, and (for an executable
136 | work) run the object code and to modify the work, including scripts to
137 | control those activities. However, it does not include the work's
138 | System Libraries, or general-purpose tools or generally available free
139 | programs which are used unmodified in performing those activities but
140 | which are not part of the work. For example, Corresponding Source
141 | includes interface definition files associated with source files for
142 | the work, and the source code for shared libraries and dynamically
143 | linked subprograms that the work is specifically designed to require,
144 | such as by intimate data communication or control flow between those
145 | subprograms and other parts of the work.
146 |
147 | The Corresponding Source need not include anything that users
148 | can regenerate automatically from other parts of the Corresponding
149 | Source.
150 |
151 | The Corresponding Source for a work in source code form is that
152 | same work.
153 |
154 | 2. Basic Permissions.
155 |
156 | All rights granted under this License are granted for the term of
157 | copyright on the Program, and are irrevocable provided the stated
158 | conditions are met. This License explicitly affirms your unlimited
159 | permission to run the unmodified Program. The output from running a
160 | covered work is covered by this License only if the output, given its
161 | content, constitutes a covered work. This License acknowledges your
162 | rights of fair use or other equivalent, as provided by copyright law.
163 |
164 | You may make, run and propagate covered works that you do not
165 | convey, without conditions so long as your license otherwise remains
166 | in force. You may convey covered works to others for the sole purpose
167 | of having them make modifications exclusively for you, or provide you
168 | with facilities for running those works, provided that you comply with
169 | the terms of this License in conveying all material for which you do
170 | not control copyright. Those thus making or running the covered works
171 | for you must do so exclusively on your behalf, under your direction
172 | and control, on terms that prohibit them from making any copies of
173 | your copyrighted material outside their relationship with you.
174 |
175 | Conveying under any other circumstances is permitted solely under
176 | the conditions stated below. Sublicensing is not allowed; section 10
177 | makes it unnecessary.
178 |
179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
180 |
181 | No covered work shall be deemed part of an effective technological
182 | measure under any applicable law fulfilling obligations under article
183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or
184 | similar laws prohibiting or restricting circumvention of such
185 | measures.
186 |
187 | When you convey a covered work, you waive any legal power to forbid
188 | circumvention of technological measures to the extent such circumvention
189 | is effected by exercising rights under this License with respect to
190 | the covered work, and you disclaim any intention to limit operation or
191 | modification of the work as a means of enforcing, against the work's
192 | users, your or third parties' legal rights to forbid circumvention of
193 | technological measures.
194 |
195 | 4. Conveying Verbatim Copies.
196 |
197 | You may convey verbatim copies of the Program's source code as you
198 | receive it, in any medium, provided that you conspicuously and
199 | appropriately publish on each copy an appropriate copyright notice;
200 | keep intact all notices stating that this License and any
201 | non-permissive terms added in accord with section 7 apply to the code;
202 | keep intact all notices of the absence of any warranty; and give all
203 | recipients a copy of this License along with the Program.
204 |
205 | You may charge any price or no price for each copy that you convey,
206 | and you may offer support or warranty protection for a fee.
207 |
208 | 5. Conveying Modified Source Versions.
209 |
210 | You may convey a work based on the Program, or the modifications to
211 | produce it from the Program, in the form of source code under the
212 | terms of section 4, provided that you also meet all of these conditions:
213 |
214 | a) The work must carry prominent notices stating that you modified
215 | it, and giving a relevant date.
216 |
217 | b) The work must carry prominent notices stating that it is
218 | released under this License and any conditions added under section
219 | 7. This requirement modifies the requirement in section 4 to
220 | "keep intact all notices".
221 |
222 | c) You must license the entire work, as a whole, under this
223 | License to anyone who comes into possession of a copy. This
224 | License will therefore apply, along with any applicable section 7
225 | additional terms, to the whole of the work, and all its parts,
226 | regardless of how they are packaged. This License gives no
227 | permission to license the work in any other way, but it does not
228 | invalidate such permission if you have separately received it.
229 |
230 | d) If the work has interactive user interfaces, each must display
231 | Appropriate Legal Notices; however, if the Program has interactive
232 | interfaces that do not display Appropriate Legal Notices, your
233 | work need not make them do so.
234 |
235 | A compilation of a covered work with other separate and independent
236 | works, which are not by their nature extensions of the covered work,
237 | and which are not combined with it such as to form a larger program,
238 | in or on a volume of a storage or distribution medium, is called an
239 | "aggregate" if the compilation and its resulting copyright are not
240 | used to limit the access or legal rights of the compilation's users
241 | beyond what the individual works permit. Inclusion of a covered work
242 | in an aggregate does not cause this License to apply to the other
243 | parts of the aggregate.
244 |
245 | 6. Conveying Non-Source Forms.
246 |
247 | You may convey a covered work in object code form under the terms
248 | of sections 4 and 5, provided that you also convey the
249 | machine-readable Corresponding Source under the terms of this License,
250 | in one of these ways:
251 |
252 | a) Convey the object code in, or embodied in, a physical product
253 | (including a physical distribution medium), accompanied by the
254 | Corresponding Source fixed on a durable physical medium
255 | customarily used for software interchange.
256 |
257 | b) Convey the object code in, or embodied in, a physical product
258 | (including a physical distribution medium), accompanied by a
259 | written offer, valid for at least three years and valid for as
260 | long as you offer spare parts or customer support for that product
261 | model, to give anyone who possesses the object code either (1) a
262 | copy of the Corresponding Source for all the software in the
263 | product that is covered by this License, on a durable physical
264 | medium customarily used for software interchange, for a price no
265 | more than your reasonable cost of physically performing this
266 | conveying of source, or (2) access to copy the
267 | Corresponding Source from a network server at no charge.
268 |
269 | c) Convey individual copies of the object code with a copy of the
270 | written offer to provide the Corresponding Source. This
271 | alternative is allowed only occasionally and noncommercially, and
272 | only if you received the object code with such an offer, in accord
273 | with subsection 6b.
274 |
275 | d) Convey the object code by offering access from a designated
276 | place (gratis or for a charge), and offer equivalent access to the
277 | Corresponding Source in the same way through the same place at no
278 | further charge. You need not require recipients to copy the
279 | Corresponding Source along with the object code. If the place to
280 | copy the object code is a network server, the Corresponding Source
281 | may be on a different server (operated by you or a third party)
282 | that supports equivalent copying facilities, provided you maintain
283 | clear directions next to the object code saying where to find the
284 | Corresponding Source. Regardless of what server hosts the
285 | Corresponding Source, you remain obligated to ensure that it is
286 | available for as long as needed to satisfy these requirements.
287 |
288 | e) Convey the object code using peer-to-peer transmission, provided
289 | you inform other peers where the object code and Corresponding
290 | Source of the work are being offered to the general public at no
291 | charge under subsection 6d.
292 |
293 | A separable portion of the object code, whose source code is excluded
294 | from the Corresponding Source as a System Library, need not be
295 | included in conveying the object code work.
296 |
297 | A "User Product" is either (1) a "consumer product", which means any
298 | tangible personal property which is normally used for personal, family,
299 | or household purposes, or (2) anything designed or sold for incorporation
300 | into a dwelling. In determining whether a product is a consumer product,
301 | doubtful cases shall be resolved in favor of coverage. For a particular
302 | product received by a particular user, "normally used" refers to a
303 | typical or common use of that class of product, regardless of the status
304 | of the particular user or of the way in which the particular user
305 | actually uses, or expects or is expected to use, the product. A product
306 | is a consumer product regardless of whether the product has substantial
307 | commercial, industrial or non-consumer uses, unless such uses represent
308 | the only significant mode of use of the product.
309 |
310 | "Installation Information" for a User Product means any methods,
311 | procedures, authorization keys, or other information required to install
312 | and execute modified versions of a covered work in that User Product from
313 | a modified version of its Corresponding Source. The information must
314 | suffice to ensure that the continued functioning of the modified object
315 | code is in no case prevented or interfered with solely because
316 | modification has been made.
317 |
318 | If you convey an object code work under this section in, or with, or
319 | specifically for use in, a User Product, and the conveying occurs as
320 | part of a transaction in which the right of possession and use of the
321 | User Product is transferred to the recipient in perpetuity or for a
322 | fixed term (regardless of how the transaction is characterized), the
323 | Corresponding Source conveyed under this section must be accompanied
324 | by the Installation Information. But this requirement does not apply
325 | if neither you nor any third party retains the ability to install
326 | modified object code on the User Product (for example, the work has
327 | been installed in ROM).
328 |
329 | The requirement to provide Installation Information does not include a
330 | requirement to continue to provide support service, warranty, or updates
331 | for a work that has been modified or installed by the recipient, or for
332 | the User Product in which it has been modified or installed. Access to a
333 | network may be denied when the modification itself materially and
334 | adversely affects the operation of the network or violates the rules and
335 | protocols for communication across the network.
336 |
337 | Corresponding Source conveyed, and Installation Information provided,
338 | in accord with this section must be in a format that is publicly
339 | documented (and with an implementation available to the public in
340 | source code form), and must require no special password or key for
341 | unpacking, reading or copying.
342 |
343 | 7. Additional Terms.
344 |
345 | "Additional permissions" are terms that supplement the terms of this
346 | License by making exceptions from one or more of its conditions.
347 | Additional permissions that are applicable to the entire Program shall
348 | be treated as though they were included in this License, to the extent
349 | that they are valid under applicable law. If additional permissions
350 | apply only to part of the Program, that part may be used separately
351 | under those permissions, but the entire Program remains governed by
352 | this License without regard to the additional permissions.
353 |
354 | When you convey a copy of a covered work, you may at your option
355 | remove any additional permissions from that copy, or from any part of
356 | it. (Additional permissions may be written to require their own
357 | removal in certain cases when you modify the work.) You may place
358 | additional permissions on material, added by you to a covered work,
359 | for which you have or can give appropriate copyright permission.
360 |
361 | Notwithstanding any other provision of this License, for material you
362 | add to a covered work, you may (if authorized by the copyright holders of
363 | that material) supplement the terms of this License with terms:
364 |
365 | a) Disclaiming warranty or limiting liability differently from the
366 | terms of sections 15 and 16 of this License; or
367 |
368 | b) Requiring preservation of specified reasonable legal notices or
369 | author attributions in that material or in the Appropriate Legal
370 | Notices displayed by works containing it; or
371 |
372 | c) Prohibiting misrepresentation of the origin of that material, or
373 | requiring that modified versions of such material be marked in
374 | reasonable ways as different from the original version; or
375 |
376 | d) Limiting the use for publicity purposes of names of licensors or
377 | authors of the material; or
378 |
379 | e) Declining to grant rights under trademark law for use of some
380 | trade names, trademarks, or service marks; or
381 |
382 | f) Requiring indemnification of licensors and authors of that
383 | material by anyone who conveys the material (or modified versions of
384 | it) with contractual assumptions of liability to the recipient, for
385 | any liability that these contractual assumptions directly impose on
386 | those licensors and authors.
387 |
388 | All other non-permissive additional terms are considered "further
389 | restrictions" within the meaning of section 10. If the Program as you
390 | received it, or any part of it, contains a notice stating that it is
391 | governed by this License along with a term that is a further
392 | restriction, you may remove that term. If a license document contains
393 | a further restriction but permits relicensing or conveying under this
394 | License, you may add to a covered work material governed by the terms
395 | of that license document, provided that the further restriction does
396 | not survive such relicensing or conveying.
397 |
398 | If you add terms to a covered work in accord with this section, you
399 | must place, in the relevant source files, a statement of the
400 | additional terms that apply to those files, or a notice indicating
401 | where to find the applicable terms.
402 |
403 | Additional terms, permissive or non-permissive, may be stated in the
404 | form of a separately written license, or stated as exceptions;
405 | the above requirements apply either way.
406 |
407 | 8. Termination.
408 |
409 | You may not propagate or modify a covered work except as expressly
410 | provided under this License. Any attempt otherwise to propagate or
411 | modify it is void, and will automatically terminate your rights under
412 | this License (including any patent licenses granted under the third
413 | paragraph of section 11).
414 |
415 | However, if you cease all violation of this License, then your
416 | license from a particular copyright holder is reinstated (a)
417 | provisionally, unless and until the copyright holder explicitly and
418 | finally terminates your license, and (b) permanently, if the copyright
419 | holder fails to notify you of the violation by some reasonable means
420 | prior to 60 days after the cessation.
421 |
422 | Moreover, your license from a particular copyright holder is
423 | reinstated permanently if the copyright holder notifies you of the
424 | violation by some reasonable means, this is the first time you have
425 | received notice of violation of this License (for any work) from that
426 | copyright holder, and you cure the violation prior to 30 days after
427 | your receipt of the notice.
428 |
429 | Termination of your rights under this section does not terminate the
430 | licenses of parties who have received copies or rights from you under
431 | this License. If your rights have been terminated and not permanently
432 | reinstated, you do not qualify to receive new licenses for the same
433 | material under section 10.
434 |
435 | 9. Acceptance Not Required for Having Copies.
436 |
437 | You are not required to accept this License in order to receive or
438 | run a copy of the Program. Ancillary propagation of a covered work
439 | occurring solely as a consequence of using peer-to-peer transmission
440 | to receive a copy likewise does not require acceptance. However,
441 | nothing other than this License grants you permission to propagate or
442 | modify any covered work. These actions infringe copyright if you do
443 | not accept this License. Therefore, by modifying or propagating a
444 | covered work, you indicate your acceptance of this License to do so.
445 |
446 | 10. Automatic Licensing of Downstream Recipients.
447 |
448 | Each time you convey a covered work, the recipient automatically
449 | receives a license from the original licensors, to run, modify and
450 | propagate that work, subject to this License. You are not responsible
451 | for enforcing compliance by third parties with this License.
452 |
453 | An "entity transaction" is a transaction transferring control of an
454 | organization, or substantially all assets of one, or subdividing an
455 | organization, or merging organizations. If propagation of a covered
456 | work results from an entity transaction, each party to that
457 | transaction who receives a copy of the work also receives whatever
458 | licenses to the work the party's predecessor in interest had or could
459 | give under the previous paragraph, plus a right to possession of the
460 | Corresponding Source of the work from the predecessor in interest, if
461 | the predecessor has it or can get it with reasonable efforts.
462 |
463 | You may not impose any further restrictions on the exercise of the
464 | rights granted or affirmed under this License. For example, you may
465 | not impose a license fee, royalty, or other charge for exercise of
466 | rights granted under this License, and you may not initiate litigation
467 | (including a cross-claim or counterclaim in a lawsuit) alleging that
468 | any patent claim is infringed by making, using, selling, offering for
469 | sale, or importing the Program or any portion of it.
470 |
471 | 11. Patents.
472 |
473 | A "contributor" is a copyright holder who authorizes use under this
474 | License of the Program or a work on which the Program is based. The
475 | work thus licensed is called the contributor's "contributor version".
476 |
477 | A contributor's "essential patent claims" are all patent claims
478 | owned or controlled by the contributor, whether already acquired or
479 | hereafter acquired, that would be infringed by some manner, permitted
480 | by this License, of making, using, or selling its contributor version,
481 | but do not include claims that would be infringed only as a
482 | consequence of further modification of the contributor version. For
483 | purposes of this definition, "control" includes the right to grant
484 | patent sublicenses in a manner consistent with the requirements of
485 | this License.
486 |
487 | Each contributor grants you a non-exclusive, worldwide, royalty-free
488 | patent license under the contributor's essential patent claims, to
489 | make, use, sell, offer for sale, import and otherwise run, modify and
490 | propagate the contents of its contributor version.
491 |
492 | In the following three paragraphs, a "patent license" is any express
493 | agreement or commitment, however denominated, not to enforce a patent
494 | (such as an express permission to practice a patent or covenant not to
495 | sue for patent infringement). To "grant" such a patent license to a
496 | party means to make such an agreement or commitment not to enforce a
497 | patent against the party.
498 |
499 | If you convey a covered work, knowingly relying on a patent license,
500 | and the Corresponding Source of the work is not available for anyone
501 | to copy, free of charge and under the terms of this License, through a
502 | publicly available network server or other readily accessible means,
503 | then you must either (1) cause the Corresponding Source to be so
504 | available, or (2) arrange to deprive yourself of the benefit of the
505 | patent license for this particular work, or (3) arrange, in a manner
506 | consistent with the requirements of this License, to extend the patent
507 | license to downstream recipients. "Knowingly relying" means you have
508 | actual knowledge that, but for the patent license, your conveying the
509 | covered work in a country, or your recipient's use of the covered work
510 | in a country, would infringe one or more identifiable patents in that
511 | country that you have reason to believe are valid.
512 |
513 | If, pursuant to or in connection with a single transaction or
514 | arrangement, you convey, or propagate by procuring conveyance of, a
515 | covered work, and grant a patent license to some of the parties
516 | receiving the covered work authorizing them to use, propagate, modify
517 | or convey a specific copy of the covered work, then the patent license
518 | you grant is automatically extended to all recipients of the covered
519 | work and works based on it.
520 |
521 | A patent license is "discriminatory" if it does not include within
522 | the scope of its coverage, prohibits the exercise of, or is
523 | conditioned on the non-exercise of one or more of the rights that are
524 | specifically granted under this License. You may not convey a covered
525 | work if you are a party to an arrangement with a third party that is
526 | in the business of distributing software, under which you make payment
527 | to the third party based on the extent of your activity of conveying
528 | the work, and under which the third party grants, to any of the
529 | parties who would receive the covered work from you, a discriminatory
530 | patent license (a) in connection with copies of the covered work
531 | conveyed by you (or copies made from those copies), or (b) primarily
532 | for and in connection with specific products or compilations that
533 | contain the covered work, unless you entered into that arrangement,
534 | or that patent license was granted, prior to 28 March 2007.
535 |
536 | Nothing in this License shall be construed as excluding or limiting
537 | any implied license or other defenses to infringement that may
538 | otherwise be available to you under applicable patent law.
539 |
540 | 12. No Surrender of Others' Freedom.
541 |
542 | If conditions are imposed on you (whether by court order, agreement or
543 | otherwise) that contradict the conditions of this License, they do not
544 | excuse you from the conditions of this License. If you cannot convey a
545 | covered work so as to satisfy simultaneously your obligations under this
546 | License and any other pertinent obligations, then as a consequence you may
547 | not convey it at all. For example, if you agree to terms that obligate you
548 | to collect a royalty for further conveying from those to whom you convey
549 | the Program, the only way you could satisfy both those terms and this
550 | License would be to refrain entirely from conveying the Program.
551 |
552 | 13. Use with the GNU Affero General Public License.
553 |
554 | Notwithstanding any other provision of this License, you have
555 | permission to link or combine any covered work with a work licensed
556 | under version 3 of the GNU Affero General Public License into a single
557 | combined work, and to convey the resulting work. The terms of this
558 | License will continue to apply to the part which is the covered work,
559 | but the special requirements of the GNU Affero General Public License,
560 | section 13, concerning interaction through a network will apply to the
561 | combination as such.
562 |
563 | 14. Revised Versions of this License.
564 |
565 | The Free Software Foundation may publish revised and/or new versions of
566 | the GNU General Public License from time to time. Such new versions will
567 | be similar in spirit to the present version, but may differ in detail to
568 | address new problems or concerns.
569 |
570 | Each version is given a distinguishing version number. If the
571 | Program specifies that a certain numbered version of the GNU General
572 | Public License "or any later version" applies to it, you have the
573 | option of following the terms and conditions either of that numbered
574 | version or of any later version published by the Free Software
575 | Foundation. If the Program does not specify a version number of the
576 | GNU General Public License, you may choose any version ever published
577 | by the Free Software Foundation.
578 |
579 | If the Program specifies that a proxy can decide which future
580 | versions of the GNU General Public License can be used, that proxy's
581 | public statement of acceptance of a version permanently authorizes you
582 | to choose that version for the Program.
583 |
584 | Later license versions may give you additional or different
585 | permissions. However, no additional obligations are imposed on any
586 | author or copyright holder as a result of your choosing to follow a
587 | later version.
588 |
589 | 15. Disclaimer of Warranty.
590 |
591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
599 |
600 | 16. Limitation of Liability.
601 |
602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
610 | SUCH DAMAGES.
611 |
612 | 17. Interpretation of Sections 15 and 16.
613 |
614 | If the disclaimer of warranty and limitation of liability provided
615 | above cannot be given local legal effect according to their terms,
616 | reviewing courts shall apply local law that most closely approximates
617 | an absolute waiver of all civil liability in connection with the
618 | Program, unless a warranty or assumption of liability accompanies a
619 | copy of the Program in return for a fee.
620 |
621 | END OF TERMS AND CONDITIONS
622 |
623 | How to Apply These Terms to Your New Programs
624 |
625 | If you develop a new program, and you want it to be of the greatest
626 | possible use to the public, the best way to achieve this is to make it
627 | free software which everyone can redistribute and change under these terms.
628 |
629 | To do so, attach the following notices to the program. It is safest
630 | to attach them to the start of each source file to most effectively
631 | state the exclusion of warranty; and each file should have at least
632 | the "copyright" line and a pointer to where the full notice is found.
633 |
634 |
635 | Copyright (C)
636 |
637 | This program is free software: you can redistribute it and/or modify
638 | it under the terms of the GNU General Public License as published by
639 | the Free Software Foundation, either version 3 of the License, or
640 | (at your option) any later version.
641 |
642 | This program is distributed in the hope that it will be useful,
643 | but WITHOUT ANY WARRANTY; without even the implied warranty of
644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
645 | GNU General Public License for more details.
646 |
647 | You should have received a copy of the GNU General Public License
648 | along with this program. If not, see .
649 |
650 | Also add information on how to contact you by electronic and paper mail.
651 |
652 | If the program does terminal interaction, make it output a short
653 | notice like this when it starts in an interactive mode:
654 |
655 | Copyright (C)
656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
657 | This is free software, and you are welcome to redistribute it
658 | under certain conditions; type `show c' for details.
659 |
660 | The hypothetical commands `show w' and `show c' should show the appropriate
661 | parts of the General Public License. Of course, your program's commands
662 | might be different; for a GUI interface, you would use an "about box".
663 |
664 | You should also get your employer (if you work as a programmer) or school,
665 | if any, to sign a "copyright disclaimer" for the program, if necessary.
666 | For more information on this, and how to apply and follow the GNU GPL, see
667 | .
668 |
669 | The GNU General Public License does not permit incorporating your program
670 | into proprietary programs. If your program is a subroutine library, you
671 | may consider it more useful to permit linking proprietary applications with
672 | the library. If this is what you want to do, use the GNU Lesser General
673 | Public License instead of this License. But first, please read
674 | .
675 |
--------------------------------------------------------------------------------
/Pipfile:
--------------------------------------------------------------------------------
1 | [[source]]
2 | url = "https://pypi.org/simple"
3 | verify_ssl = true
4 | name = "pypi"
5 |
6 | [packages]
7 | ansible-cmdb = ">=1.31"
8 | ansible-core = ">=2.17.1"
9 | ansible-lint = {extras = ["yamllint"], version = ">=6.18.0"}
10 | dnspython = ">=2.3.0"
11 | #jmespath = "==0.10.0"
12 | zabbix-api = ">=0.5.5"
13 | netaddr = ">=0.8.0"
14 | #awscli = ">=1.29.47" # OK >=1.27.165
15 | #awscli-plugin-endpoint = ">=0.4"
16 | cryptography = ">=42.0.8"
17 |
18 | [dev-packages]
19 | ansible-lint = {extras = ["yamllint"], version = ">=6.17.2"}
20 | ansible-navigator = ">=1.1.0"
21 | ansible-runner = ">=2.2.1"
22 | ansible-builder = ">=1.1.0"
23 | ansible-playbook-grapher = ">=1.1.0"
24 | bindep = ">=2.11.0"
25 | checkov = ">=3.2.128"
26 | semgrep = ">=1.15.0"
27 | #pipenv = ">=2023.7.23"
28 | pre-commit = ">=2.20.0"
29 | pre-commit-hooks = ">=4.4.0"
30 | #git-pre-commit-hook-utils = ">=0.0.5"
31 | # yamllint = "~=6.17.2"
32 | pyyaml = ">=5.4.1"
33 |
34 | [requires]
35 | python_version = "3.11"
36 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # [](https://github.com/AlbanAndrieu) roles/alban_andrieu_eclipse
2 |
3 | This file was generated by Ansigenome. Do not edit this file directly but instead have a look at the files in the ./meta/ directory.
4 |
5 | [](http://www.apache.org/licenses/LICENSE-2.0.html)
6 | [](https://gitter.im/nabla-eclipse/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
7 | [](https://img.shields.io/badge/java-1.8-yellow.svg)
8 |
9 | [](https://github.com/AlbanAndrieu/ansible-eclipse/tree/master)
10 | [](https://galaxy.ansible.com/alban.andrieu/eclipse)
11 | [](#)
12 | [](https://hub.docker.com/r/nabla/ansible-eclipse)
13 |
14 | Ensures that eclipse is properly installed and configured on `Ubuntu` using `Ansible` script.
15 | Default settings is using Eclipse luna.
16 | This ``Simple`` role allows you to install [Eclipse](https://www.eclipse.org) with basic plugins.
17 |
18 | This playbook is be used by [Docker Hub](https://hub.docker.com) to create a [Docker](http://docker.io) image.
19 |
20 | See role [ansible-eclipse](https://github.com/AlbanAndrieu/ansible-eclipse) and image [ansible-eclipse](https://hub.docker.com/r/nabla/ansible-eclipse/)
21 |
22 | # Table of contents
23 |
24 |
25 |
26 | - [Taken from](#taken-from)
27 | * [Requirements](#requirements)
28 | * [Installation](#installation)
29 | * [Documentation](#documentation)
30 | * [Role variables](#role-variables)
31 | * [Detailed usage guide](#detailed-usage-guide)
32 | * [Contributor](#contributor)
33 | * [pre-commit](#pre-commit)
34 | * [npm-groovy-lint groovy formating for Jenkinsfile](#npm-groovy-lint-groovy-formating-for-jenkinsfile)
35 | * [Linting](#linting)
36 | - [Update README.md](#update-readmemd)
37 | * [Contributing](#contributing)
38 | * [Authors and license](#authors-and-license)
39 | - [License](#license)
40 | * [Feedback, bug-reports, requests, ...](#feedback-bug-reports-requests-)
41 |
42 |
43 |
44 | Taken from
45 | ------------------
46 |
47 | https://www.eclipse.org/downloads/
48 |
49 | ### Requirements
50 |
51 | Tools which might be needed by [Eclipse](https://www.eclipse.org), like jdk, maven...
52 | See available playbook on [GitHub](https://github.com/search?p=3&q=user%3AAlbanAndrieu+ansible%2A&type=Repositories)
53 |
54 | ### Installation
55 |
56 | This role requires at least Ansible `v2.3.1.0`. To install it, run:
57 |
58 | Using `ansible-galaxy`:
59 | ```shell
60 | $ ansible-galaxy install alban.andrieu.eclipse
61 | ```
62 |
63 | Using `arm` ([Ansible Role Manager](https://github.com/mirskytech/ansible-role-manager/)):
64 | ```shell
65 | $ arm install alban.andrieu.eclipse
66 | ```
67 |
68 | Using `git`:
69 | ```shell
70 | $ git clone https://github.com/AlbanAndrieu/ansible-eclipse.git
71 | ```
72 |
73 | ### Documentation
74 |
75 | More information about `alban.andrieu.eclipse` can be found in the
76 | TODO [official alban.andrieu.eclipse documentation](https://docs.debops.org/en/latest/ansible/roles/ansible-eclipse/docs/).
77 |
78 |
79 | ### Role variables
80 |
81 | List of default variables available in the inventory:
82 |
83 | ```YAML
84 | eclipse_enabled: yes # Enable module
85 |
86 | #user: 'albandri' #please override me
87 | user: "{{ lookup('env','USER') }}"
88 | eclipse_owner: "{{ user }}"
89 | eclipse_group: "{{ eclipse_owner }}"
90 | #home: '~' #please override me
91 | home: "{{ lookup('env','HOME') }}"
92 | eclipse_owner_home: "{{ home }}"
93 | eclipse_base_dir: "/usr/local/eclipse"
94 | eclipse_link_base_dir: "/opt"
95 | eclipse_dir_tmp: "/tmp" # or override with "{{ tempdir.stdout }} in order to have be sure to download the file"
96 | #cur_dir: "{{lookup('pipe','pwd')}}"
97 | ## Most likely you dont need to edit
98 | #todo eclipse_service_enabled : 'yes'
99 |
100 | #eclipse_name: "kepler" 3.7.2.1
101 | #eclipse_name: "luna" 4.4
102 | #eclipse_name: "mars" 4.5
103 | #eclipse_name: "neon" 4.6
104 | eclipse_name: "neon"
105 | eclipse_major: "4"
106 | eclipse_minor: "6"
107 | eclipse_version: "{{eclipse_major}}.{{eclipse_minor}}"
108 |
109 | eclipse_archive_extracted: "eclipse"
110 | #modeling
111 | #eclipse_archive: "eclipse-modeling-{{eclipse_name}}-R-linux-gtk-x86_64.tar.gz"
112 | #java
113 | #eclipse_archive: "eclipse-java-{{eclipse_name}}-SR1-linux-gtk-x86_64.tar.gz"
114 | #javaee
115 | #eclipse_archive: "eclipse-jee-{{eclipse_name}}-SR1-linux-gtk-x86_64.tar.gz"
116 | #eclipse_archive: "eclipse-jee-{{eclipse_name}}-R-linux-gtk-x86_64.tar.gz"
117 | eclipse_archive: "eclipse-jee-{{eclipse_name}}-3-RC3-linux-gtk-x86_64.tar.gz"
118 |
119 | #eclipse_url: "https://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/{{eclipse_name}}/R/{{eclipse_archive}}&r=1"
120 | #eclipse_url: "http://eclipse.mirror.triple-it.nl/technology/epp/downloads/release/{{eclipse_name}}/R/{{eclipse_archive}}"
121 | eclipse_url: "http://eclipse.mirror.triple-it.nl/technology/epp/downloads/release/{{eclipse_name}}/3.RC3/{{eclipse_archive}}"
122 |
123 | eclipse_home_dir: "{{ eclipse_base_dir }}/{{ eclipse_name }}-{{ eclipse_version }}"
124 | #eclipse_desktop: "/usr/share/applications/eclipse.desktop"
125 | eclipse_desktop: "{{ eclipse_owner_home }}/.local/share/applications/eclipse.desktop"
126 |
127 | eclipse_plugins_enabled: yes # Enable plugins
128 | eclipse_plugins_emf_enabled: no # Enable plugins
129 | eclipse_plugins_cdt_enabled: no # Enable plugins
130 | eclipse_plugins_cmakeed_enabled: no # Enable plugins
131 | eclipse_plugins_openinterminal_enabled: no # Enable plugins
132 | eclipse_plugins_protobuf_enabled: no # Enable plugins
133 | eclipse_plugins_yedit_enabled: no # Enable plugins
134 | eclipse_plugins_shelled_enabled: no # Enable plugins
135 | eclipse_plugins_webpageed_enabled: no # Enable plugins
136 | eclipse_plugins_pydev_enabled: no # Enable plugins
137 | eclipse_plugins_m2e_enabled: no # Enable plugins
138 | eclipse_plugins_subclipse_enabled: no # Enable plugins
139 |
140 | eclipse_ini_enabled: yes # Enable overriding eclipse.ini
141 | #default is 256m
142 | #eclipse_launcher_XXMaxPermSize: "512m"
143 | eclipse_launcher_XXMaxPermSize: ""
144 | #default is 256m
145 | #eclipse_XXMaxPermSize: "1024m"
146 | eclipse_XXMaxPermSize: ""
147 | #default is -Xms40m
148 | eclipse_Xms: "512m"
149 | #default is -Xmx512m
150 | eclipse_Xmx: "2048m"
151 |
152 | docker_files_generated_directory: "./"
153 | docker_files_enable: no
154 | docker_volume_directory : "{{ eclipse_base_dir }}"
155 | docker_working_directory : "/home/vagrant"
156 | docker_image_name : "nabla/ansible-eclipse"
157 | ```
158 |
159 | List of internal variables used by the role:
160 |
161 | eclipse_folder
162 | eclipse_home
163 | eclipse
164 | ### Detailed usage guide
165 |
166 | Use :
167 |
168 | `docker run -e "DISPLAY=`ipconfig getifaddr en0`:0.0" nabla/ansible-eclipse`
169 | `docker run -it --entrypoint /bin/bash nabla/ansible-eclipse`
170 |
171 | Once [Eclipse](https://www.eclipse.org) is installed using ansible, a [Docker](https://www.docker.com/) [image](https://registry.hub.docker.com/u/nabla/ansible-eclipse/) is automatically created by [Docker Hub](https://registry.hub.docker.com/),
172 | so please do not hesitate to enhance ansible script it will then improve docker image automatically.
173 |
174 | Run the following command :
175 |
176 | ```bash
177 | ansible -m setup localhost
178 | cd roles
179 | ln -s ../ albanandrieu.eclipse
180 | cd ..
181 | ansible-playbook -i hosts -c local eclipse.yml -vvv --ask-become-pass --become | tee setup.log
182 | ANSIBLE_NOCOLOR=True && ansible-playbook -i hosts -c local -v eclipse.yml -vvv --ask-become-pass --become > eclipse.log 2>&1
183 | ```
184 |
185 | ### Contributor
186 |
187 | - Yngve Inntjore Levinsen
188 | - Alban Andrieu, alban.andrieu@free.com### Testing
189 | ```shell
190 | $ ansible-galaxy install alban.andrieu.eclipse
191 | $ vagrant up
192 | ```
193 |
194 |
195 | ### pre-commit
196 |
197 | See [pre-commit](http://pre-commit.com/)
198 | Run `pre-commit install`
199 |
200 | First time run `cp hooks/hooks/* .git/hooks/`
201 | or `git clone git@github.com:AlbanAndrieu/nabla-hooks.git hooks && rm -Rf ./.git/hooks && ln -s ../hooks/hooks ./.git/hooks`
202 |
203 | Run `pre-commit run --all-files`
204 |
205 | Run `SKIP=ansible-lint git commit -am 'Add key'`
206 | Run `git commit -am 'Add key' --no-verify`
207 |
208 | ### npm-groovy-lint groovy formating for Jenkinsfile
209 |
210 | Tested with nodejs 12 and 16 on ubuntu 20 and 21 (not working with nodejs 11 and 16)
211 |
212 | ```bash
213 | npm install -g npm-groovy-lint@8.2.0
214 | npm-groovy-lint --format
215 | ls -lrta .groovylintrc.json
216 | ```
217 |
218 | ### Linting
219 |
220 | ```shell
221 | $ git add tasks/features.yml # First add your file, then
222 | $ pre-commit run ansible-lint
223 | ```
224 |
225 |
226 |
227 | ## Update README.md
228 |
229 |
230 | * [github-markdown-toc](https://github.com/jonschlinkert/markdown-toc)
231 | * With [github-markdown-toc](https://github.com/Lucas-C/pre-commit-hooks-nodejs)
232 |
233 | ```bash
234 | npm install --save markdown-toc
235 | markdown-toc README.md
236 | markdown-toc CHANGELOG.md -i
237 | ```
238 |
239 | ```
240 | git add README.md
241 | pre-commit run markdown-toc
242 | ```
243 |
244 | ### Contributing
245 |
246 | The [issue tracker](https://github.com/AlbanAndrieu/ansible-eclipse/issues) is the preferred channel for bug reports, features requests and submitting pull requests.
247 |
248 | For pull requests, editor preferences are available in the [editor config](.editorconfig) for easy use in common text editors. Read more and download plugins at .
249 |
250 | In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests and examples for any new or changed functionality.
251 |
252 | 1. Fork it
253 | 2. Create your feature branch (`git checkout -b my-new-feature`)
254 | 3. Commit your changes (`git commit -am 'Add some feature'`)
255 | 4. Push to the branch (`git push origin my-new-feature`)
256 | 5. Create new Pull Request
257 |
258 | ### Authors and license
259 |
260 | `roles/alban_andrieu_eclipse` role was written by:
261 |
262 | - Yngve Inntjore Levinsen | [GitHub](https://github.com/ Eothred)
263 | - [Alban Andrieu](fr.linkedin.com/in/nabla/) | [e-mail](mailto:alban.andrieu@free.com) | [Twitter](https://twitter.com/AlbanAndrieu) | [GitHub](https://github.com/AlbanAndrieu)
264 |
265 | License
266 | -------
267 |
268 | - License: [GPLv3](https://tldrlegal.com/license/gnu-general-public-license-v3-%28gpl-3%29)
269 |
270 | ### Feedback, bug-reports, requests, ...
271 |
272 | Are [welcome](https://github.com/AlbanAndrieu/ansible-eclipse/issues)!
273 |
274 | ***
275 |
276 | This role is part of the [Nabla](https://github.com/AlbanAndrieu) project.
277 | README generated by [Ansigenome](https://github.com/nickjj/ansigenome/).
278 |
279 | ***
280 |
281 | Alban Andrieu
282 |
283 | [linkedin](fr.linkedin.com/in/nabla/)
284 |
--------------------------------------------------------------------------------
/ansible.cfg:
--------------------------------------------------------------------------------
1 | [galaxy]
2 | ignore_certs=True
3 |
4 | [defaults]
5 | #host_key_checking=False
6 | #gathering=explicit
7 | validate_certs=False
8 | #vault_password_file=vault.passwd
9 | bin_ansible_callbacks=True
10 | #callback_whitelist = profile_tasks
11 | #callback_plugins=./callback_plugins
12 | #callback_plugins = ~/ansible/callback_plugins
13 | #library=./library
14 | #For MacOSX increase timeout
15 | timeout=30
16 | allow_world_readable_tmpfiles=True
17 |
18 | #Workaround for ansible solaris bug https://github.com/ansible/ansible/issues/21339
19 | remote_tmp=$HOME/.ansible/tmp
20 | local_tmp=$HOME/.ansible/tmp
21 | #transport=smart
22 | #display_skipped_hosts=False
23 | #host_key_checking=False
24 |
25 | [inventory]
26 | # enable inventory plugins, default: 'host_list', 'script', 'yaml', 'ini'
27 | enable_plugins=ini
28 |
29 | [privilege_escalation]
30 | #become=True
31 | #For MacOSX switch sudo to su become_method
32 | #become_method=su
33 | #For Jenkins switch sudo to su become_method
34 | become_method=sudo
35 |
36 | [ssh_connection]
37 | #pipelining=True
38 | pipelining=False
39 | ssh_args=-o ControlMaster=auto -o ControlPersist=1800s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null
40 | control_path=%(directory)s/%%h-%%r
41 |
--------------------------------------------------------------------------------
/defaults/main.yml:
--------------------------------------------------------------------------------
1 | ---
2 | eclipse_enabled: true # Enable module
3 |
4 | # user: 'albandri' #please override me
5 | user: "{{ lookup('env','USER') }}"
6 | eclipse_owner: "{{ user }}"
7 | eclipse_group: "{{ eclipse_owner }}"
8 | # home: '~' #please override me
9 | home: "{{ lookup('env','HOME') }}"
10 | eclipse_owner_home: "{{ home }}"
11 | eclipse_base_dir: "/usr/local/eclipse"
12 | eclipse_link_base_dir: "/opt"
13 | eclipse_dir_tmp: "/tmp"
14 | # eclipse_dir_tmp: "{{ tempdir.stdout }}"
15 | # cur_dir: "{{lookup('pipe','pwd')}}"
16 | # # Most likely you dont need to edit
17 | # todo eclipse_service_enabled : 'yes'
18 |
19 | # eclipse_name: "kepler" 3.7.2.1
20 | # eclipse_name: "luna" 4.4
21 | # eclipse_name: "mars" 4.5
22 | # eclipse_name: "neon" 4.6
23 | # eclipse_name: "oxygen" 4.7
24 | # eclipse_name: "photon" 4.8
25 | # eclipse_name: "2019-12"
26 | # eclipse_name: "2020-06"
27 | eclipse_name: "2021-03"
28 | eclipse_major: "4"
29 | eclipse_minor: "19"
30 | eclipse_version: "{{ eclipse_major }}.{{ eclipse_minor }}"
31 |
32 | eclipse_archive_extracted: "eclipse"
33 | # modeling
34 | # eclipse_archive: "eclipse-modeling-{{ eclipse_name }}-R-linux-gtk-x86_64.tar.gz"
35 | # java
36 | # eclipse_archive: "eclipse-java-{{ eclipse_name }}-SR1-linux-gtk-x86_64.tar.gz"
37 | # javaee
38 | # eclipse_archive: "eclipse-jee-{{ eclipse_name }}-SR1-linux-gtk-x86_64.tar.gz"
39 | # eclipse_archive: "eclipse-jee-{{ eclipse_name }}-R-linux-gtk-x86_64.tar.gz"
40 | # eclipse_archive: "eclipse-jee-{{ eclipse_name }}-3-RC3-linux-gtk-x86_64.tar.gz"
41 | # eclipse_archive: "eclipse-jee-{{ eclipse_name }}-M6-linux-gtk-x86_64.tar.gz"
42 | # eclipse_archive: "eclipse-jee-{{ eclipse_name }}-R-linux-gtk-x86_64.tar.gz"
43 | eclipse_archive: "eclipse-java-{{ eclipse_name }}-R-linux-gtk-x86_64.tar.gz"
44 |
45 | # https://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/2019-12/R/eclipse-jee-2019-12-R-linux-gtk-x86_64.tar.gz
46 | # https://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/2018-09/R/eclipse-dsl-2018-09-linux-gtk-x86_64.tar.gz
47 | # https://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/2018-09/R/eclipse-jee-2018-09-linux-gtk-x86_64.tar.gz
48 | # https://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/2018-09/R/eclipse-modeling-2018-09-linux-gtk-x86_64.tar.gz
49 | # https://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/2018-09/R/eclipse-committers-2018-09-linux-gtk-x86_64.tar.gz
50 | # https://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/2018-09/R/eclipse-cpp-2018-09-linux-gtk-x86_64.tar.gz
51 |
52 | # eclipse_url: "http://eclipse.mirror.triple-it.nl/technology/epp/downloads/release/{{ eclipse_name }}/M6/{{ eclipse_archive }}"
53 | # eclipse_url: "http://ftp.halifax.rwth-aachen.de/eclipse/technology/epp/downloads/release/{{ eclipse_name }}/R/{{ eclipse_archive }}"
54 | eclipse_url: "http://ftp.fau.de/eclipse/technology/epp/downloads/release/{{ eclipse_name }}/R/{{ eclipse_archive }}"
55 |
56 | eclipse_home_dir: "{{ eclipse_base_dir }}/{{ eclipse_name }}-{{ eclipse_version }}"
57 | # eclipse_desktop: "/usr/share/applications/eclipse.desktop"
58 | eclipse_desktop: "{{ eclipse_owner_home }}/.local/share/applications/eclipse.desktop"
59 |
60 | eclipse_plugins_enabled: true # Enable plugins
61 | eclipse_plugins_emf_enabled: false # Enable plugins
62 | eclipse_plugins_cdt_enabled: false # Enable plugins
63 | eclipse_plugins_cmakeed_enabled: false # Enable plugins
64 | eclipse_plugins_openinterminal_enabled: false # Enable plugins
65 | eclipse_plugins_protobuf_enabled: false # Enable plugins
66 | eclipse_plugins_yedit_enabled: false # Enable plugins
67 | eclipse_plugins_shelled_enabled: false # Enable plugins
68 | eclipse_plugins_webpageed_enabled: false # Enable plugins
69 | eclipse_plugins_pydev_enabled: false # Enable plugins
70 | eclipse_plugins_m2e_enabled: false # Enable plugins
71 | eclipse_plugins_subclipse_enabled: false # Enable plugins
72 |
73 | eclipse_ini_enabled: true # Enable overriding eclipse.ini
74 | # default is 256m
75 | # eclipse_launcher_XXMaxPermSize: "512m"
76 | eclipse_launcher_XXMaxPermSize: ""
77 | # default is 256m
78 | # eclipse_XXMaxPermSize: "1024m"
79 | eclipse_XXMaxPermSize: ""
80 | # default is -Xms40m
81 | eclipse_Xms: "512m"
82 | # default is -Xmx512m
83 | eclipse_Xmx: "2048m"
84 | eclipse_m2e_discovery_url: "http://download.eclipse.org/technology/m2e/discovery/directory-1.16.xml"
85 | eclipse_ipv4: "-Djava.net.preferIPv4Stack=true"
86 |
87 | docker_files_generated_directory: "./"
88 | docker_files_enable: false
89 | docker_volume_directory: "{{ eclipse_base_dir }}"
90 | docker_working_directory: "/home/vagrant"
91 | docker_image_name: "nabla/ansible-eclipse"
92 |
--------------------------------------------------------------------------------
/eclipse.yml:
--------------------------------------------------------------------------------
1 | ---
2 | - hosts: all
3 | tasks:
4 | - name: check that i have log file for all hosts on my local machine
5 | stat: path=/var/log/hosts/{{inventory_hostname}}.log
6 | delegate_to: localhost
7 |
8 | - hosts: localhost
9 | gather_facts: true
10 |
11 | tasks:
12 | - name: run_command
13 | # ansible.builtin.command: date
14 | ansible.builtin.shell: date
15 | delegate_to: localhost
16 | register: user
17 |
18 | - debug: msg="{{ user.stdout }}"
19 |
20 | - debug: msg="Hostname is {{ ansible_hostname }}"
21 |
22 | - name: Install eclipse to all nodes
23 | hosts: localhost
24 | gather_facts: false
25 | # become: true
26 |
27 | roles:
28 | - {role: ./, docker_files_enable: false, user: root, home: /root, eclipse_dir_tmp: '{{ tempdir.stdout }}', eclipse_plugins_emf_enabled: false,
29 | eclipse_plugins_cdt_enabled: true, eclipse_plugins_cmakeed_enabled: true, eclipse_plugins_openinterminal_enabled: false, eclipse_plugins_protobuf_enabled: false,
30 | eclipse_plugins_yedit_enabled: false, eclipse_plugins_shelled_enabled: false, eclipse_plugins_webpageed_enabled: false, eclipse_plugins_pydev_enabled: false,
31 | eclipse_plugins_m2e_enabled: false, eclipse_plugins_subclipse_enabled: true}
32 |
--------------------------------------------------------------------------------
/files/add_pydev_certificate.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 | # -*- coding: utf-8 -*-
3 | # Add PyDev's certificate to Java's key and certificate database
4 | # Certificate file here: http://pydev.org/pydev_certificate.cer
5 | import os
6 |
7 | import pexpect
8 | import urllib2
9 |
10 |
11 | def find_java_home():
12 |
13 | if os.environ['JAVA_HOME']:
14 | return os.environ['JAVA_HOME']
15 |
16 | import subprocess
17 | return_value = subprocess.call('which java', stdin=java_path)
18 |
19 | if not return_value:
20 | return java_path.replace('bin/java', '')
21 |
22 | # fall back to original path..
23 | return '/usr/lib/jvm/default-java'
24 |
25 |
26 | def main():
27 | # NOTE: You may have to update the path to your system's cacerts file
28 |
29 | certs_file = os.path.join(find_java_home(), 'jre/lib/security/cacerts')
30 | if not os.path.isfile(certs_file):
31 | raise ValuError('Wrong path to certs file')
32 |
33 | pydev_certs_url = 'http://pydev.org/pydev_certificate.cer'
34 | print('Adding pydev_certificate.cer to %s' % (certs_file))
35 | pydev_cert = open('pydev_certificate.cer', 'w')
36 | pydev_cert.write(urllib2.urlopen(pydev_certs_url).read())
37 | pydev_cert.close()
38 | cmd = 'keytool -import -file ./pydev_certificate.cer -keystore %s' % (
39 | certs_file
40 | )
41 | child = pexpect.spawn(cmd)
42 | child.expect('Enter keystore password:')
43 | child.sendline('changeit')
44 | if child.expect(['Trust this certificate?', 'already exists']) == 0:
45 | child.sendline('yes')
46 | # try:
47 | # child.interact()
48 | # except OSError:
49 | # pass
50 | print('done')
51 |
52 |
53 | if __name__ == '__main__':
54 | main()
55 |
--------------------------------------------------------------------------------
/files/bookmarks.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
--------------------------------------------------------------------------------
/handlers/main.yml:
--------------------------------------------------------------------------------
1 | ---
2 | - name: restart eclipse
3 | service:
4 | name=eclipse
5 | state=restarted
6 | enabled={{ eclipse_service_enabled }}
7 | notify: wait for eclipse to start
8 |
--------------------------------------------------------------------------------
/hosts:
--------------------------------------------------------------------------------
1 | # file: production
2 | [all]
3 | localhost ansible_connection: local
4 |
--------------------------------------------------------------------------------
/meta/ansigenome.yml:
--------------------------------------------------------------------------------
1 | ---
2 |
3 | ansigenome_info: # noqa 701
4 | galaxy_id: '1776'
5 | galaxy_url: https://galaxy.ansible.com/AlbanAndrieu/eclipse/
6 | galaxy_user: alban.andrieu
7 | galaxy_name: eclipse
8 | galaxy_docker_name: ansible-eclipse
9 |
10 | travis: true
11 |
12 | authors:
13 | - name: Yngve Inntjore Levinsen
14 | github: ' Eothred'
15 | - name: Alban Andrieu
16 | url: fr.linkedin.com/in/nabla/
17 | email: alban.andrieu@free.fr
18 | twitter: AlbanAndrieu
19 | github: AlbanAndrieu
20 |
21 | description: A role for installing eclipse
22 | company: Nabla
23 | license: Apache
24 | min_ansible_version: 2.7.8
25 |
26 | platforms:
27 | - name: Ubuntu
28 | versions:
29 | - all
30 | - name: EL
31 | versions:
32 | - all
33 | - name: MacOSX
34 | versions:
35 | - all
36 | galaxy_tags:
37 | - development
38 | - ide
39 | - java
40 | - eclipse
41 |
42 | synopsis: |
43 | Ensures that eclipse is properly installed and configured on `Ubuntu` using `Ansible` script.
44 | Default settings is using Eclipse luna.
45 | This ``Simple`` role allows you to install [Eclipse](https://www.eclipse.org) with basic plugins.
46 |
47 | This playbook is be used by [Docker Hub](https://hub.docker.com) to create a [Docker](http://docker.io) image.
48 |
49 | See role [ansible-eclipse](https://github.com/AlbanAndrieu/ansible-eclipse) and image [ansible-eclipse](https://hub.docker.com/r/nabla/ansible-eclipse/)
50 |
51 | Taken from
52 | ------------------
53 |
54 | https://www.eclipse.org/downloads/
55 |
56 | ### Requirements
57 |
58 | Tools which might be needed by [Eclipse](https://www.eclipse.org), like jdk, maven...
59 | See available playbook on [GitHub](https://github.com/search?p=3&q=user%3AAlbanAndrieu+ansible%2A&type=Repositories)
60 |
61 | usage: |
62 | Use :
63 |
64 | `docker run -e "DISPLAY=`ipconfig getifaddr en0`:0.0" nabla/ansible-eclipse`
65 |
66 | Once [Eclipse](https://www.eclipse.org) is installed using ansible, a [Docker](https://www.docker.com/) [image](https://registry.hub.docker.com/u/nabla/ansible-eclipse/) is automatically created by [Docker Hub](https://registry.hub.docker.com/),
67 | so please do not hesitate to enhance ansible script it will then improve docker image automatically.
68 |
69 | Run the following command :
70 |
71 | ```bash
72 | ansible -m setup localhost
73 | cd roles
74 | ln -s ../ albanandrieu.eclipse
75 | cd ..
76 | ansible-playbook -i hosts -c local eclipse.yml -vvv --ask-become-pass --become | tee setup.log
77 | ANSIBLE_NOCOLOR=True && ansible-playbook -i hosts -c local -v eclipse.yml -vvv --ask-become-pass --become > eclipse.log 2>&1
78 | ```
79 |
80 | Build the docker image :
81 |
82 | `scripts/docker-build.sh
83 |
84 | custom: |
85 | ### Contributor
86 |
87 | - Yngve Inntjore Levinsen
88 | - Alban Andrieu, alban.andrieu@free.com
89 |
--------------------------------------------------------------------------------
/meta/main.yml:
--------------------------------------------------------------------------------
1 | ---
2 | dependencies: []
3 |
4 | galaxy_info:
5 | author: Alban Andrieu
6 | description: A role for installing eclipse
7 | role_name: eclipse
8 | namespace: albanandrieu
9 | company: Nabla
10 | license: GPLv3
11 | min_ansible_version: 2.7.8
12 | platforms:
13 | - name: Ubuntu
14 | versions:
15 | - all
16 | - name: EL
17 | versions:
18 | - all
19 | - name: MacOSX
20 | versions:
21 | - all
22 | galaxy_tags:
23 | - development
24 | - ide
25 | - java
26 | - eclipse
27 |
--------------------------------------------------------------------------------
/molecule/default/Dockerfile.j2:
--------------------------------------------------------------------------------
1 | # Molecule managed
2 |
3 | {% if item.registry is defined %}
4 | FROM {{ item.registry.url }}/{{ item.image }}
5 | {% else %}
6 | FROM {{ item.image }}
7 | {% endif %}
8 |
9 | RUN if [ $(command -v apt-get) ]; then apt-get update && apt-get install -y python sudo bash ca-certificates && apt-get clean; \
10 | elif [ $(command -v dnf) ]; then dnf makecache && dnf --assumeyes install python sudo python-devel python2-dnf bash && dnf clean all; \
11 | elif [ $(command -v yum) ]; then yum makecache fast && yum install -y python sudo yum-plugin-ovl bash && sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf && yum clean all; \
12 | elif [ $(command -v zypper) ]; then zypper refresh && zypper install -y python sudo bash python-xml && zypper clean -a; \
13 | elif [ $(command -v apk) ]; then apk update && apk add --no-cache python sudo bash ca-certificates; \
14 | elif [ $(command -v xbps-install) ]; then xbps-install -Syu && xbps-install -y python sudo bash ca-certificates && xbps-remove -O; fi
15 |
--------------------------------------------------------------------------------
/molecule/default/INSTALL.rst:
--------------------------------------------------------------------------------
1 | *******
2 | Docker driver installation guide
3 | *******
4 |
5 | Requirements
6 | ============
7 |
8 | * General molecule dependencies (see https://molecule.readthedocs.io/en/latest/installation.html)
9 | * Docker Engine
10 | * docker-py
11 | * docker
12 |
13 | Install
14 | =======
15 |
16 | $ sudo pip install docker-py
17 |
--------------------------------------------------------------------------------
/molecule/default/converge.yml:
--------------------------------------------------------------------------------
1 | ---
2 |
3 | - name: Converge
4 | hosts: all
5 | roles:
6 | - role: ../ # albanandrieu.eclipse
7 | verbose: true
8 | no_log: false
9 |
--------------------------------------------------------------------------------
/molecule/default/molecule.yml:
--------------------------------------------------------------------------------
1 | ---
2 | dependency:
3 | name: galaxy
4 | enabled: false
5 | options:
6 | ignore-errors: true
7 | driver:
8 | name: docker
9 | # name: podman
10 | platforms:
11 | # - name: eclipse-centos
12 | # image: milcom/centos7-systemd:latest
13 | # groups:
14 | # - group1
15 | # privileged: true
16 | # - name: eclipse-debian-jessie
17 | # image: maint/debian-systemd:latest
18 | # groups:
19 | # - group1
20 | # privileged: true
21 | # - name: eclipse-debian-stretch
22 | # image: minimum2scp/systemd-stretch:latest
23 | # command: /sbin/init
24 | # groups:
25 | # - group1
26 | # - name: eclipse-ubuntu-xenial
27 | # image: solita/ubuntu-systemd:xenial
28 | # groups:
29 | # - group1
30 | # privileged: true
31 | # - name: eclipse-ubuntu-bionic
32 | # image: solita/ubuntu-systemd:bionic
33 | # groups:
34 | # - group1
35 | # privileged: true
36 | # - name: instance
37 | # image: ubuntu:22.04
38 | # groups:
39 | # - group1
40 | # privileged: true
41 | # pre_build_image: true
42 | - name: ubuntu
43 | image: geerlingguy/docker-ubuntu2004-ansible
44 | tmpfs:
45 | - /run
46 | - /tmp
47 | volumes:
48 | - /sys/fs/cgroup:/sys/fs/cgroup:ro
49 | capabilities:
50 | - SYS_ADMIN
51 | command: /lib/systemd/systemd
52 | pre_build_image: true
53 | provisioner:
54 | name: ansible
55 | scenario:
56 | name: default
57 | create_sequence:
58 | - dependency
59 | - create
60 | - prepare
61 | check_sequence:
62 | - dependency
63 | - cleanup
64 | - destroy
65 | - create
66 | - prepare
67 | - converge
68 | - check
69 | - destroy
70 | converge_sequence:
71 | - dependency
72 | - create
73 | - prepare
74 | - converge
75 | destroy_sequence:
76 | - dependency
77 | - cleanup
78 | - destroy
79 | test_sequence:
80 | # - lint
81 | - dependency
82 | - cleanup
83 | - destroy
84 | - syntax
85 | - create
86 | - prepare
87 | - converge
88 | # EXAMPLE_6: idempotence is hard. Look at molecule scenarios for CI.
89 | - idempotence
90 | - side_effect
91 | - verify
92 | - cleanup
93 | - destroy
94 | verifier:
95 | name: testinfra
96 | lint: |
97 | set -e
98 | yamllint .
99 | ansible-lint .
100 |
--------------------------------------------------------------------------------
/molecule/default/tests/__pycache__/test_default.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlbanAndrieu/ansible-eclipse/761e529da3fe430f5ce9360b36e9e8cf1bcd1882/molecule/default/tests/__pycache__/test_default.cpython-36.pyc
--------------------------------------------------------------------------------
/molecule/default/tests/test_default.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | import os
3 |
4 | import testinfra.utils.ansible_runner
5 |
6 | testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
7 | os.environ['MOLECULE_INVENTORY_FILE'],
8 | ).get_hosts('all')
9 |
10 |
11 | def test_hosts_file(host):
12 | f = host.file('/etc/hosts')
13 |
14 | assert f.exists
15 | assert f.user == 'root'
16 | assert f.group == 'root'
17 |
--------------------------------------------------------------------------------
/requirements.yml:
--------------------------------------------------------------------------------
1 | ---
2 | # from galaxy
3 | # ansible-galaxy install -r requirements.yml -p ./roles/ --ignore-errors
4 |
5 | - src: https://github.com/AlbanAndrieu/ansible-administration.git
6 | name: albanandrieu.administration
7 | version: master
8 |
9 | #- src: https://github.com/AlbanAndrieu/ansible-awstats.git
10 | # name: albanandrieu.awstats
11 | # version: master
12 |
13 | - src: https://github.com/AlbanAndrieu/ansible-cmake.git
14 | name: albanandrieu.cmake
15 | version: master
16 |
17 | - src: https://github.com/AlbanAndrieu/ansible-common.git
18 | name: albanandrieu.ansible_common
19 | version: master
20 |
21 | #- src: https://github.com/AlbanAndrieu/ansible-conky.git
22 | # name: albanandrieu.conky
23 | # version: master
24 |
25 | - src: https://github.com/AlbanAndrieu/ansible-cpp.git
26 | name: albanandrieu.cpp
27 | version: master
28 |
29 | #- src: 'https://github.com/AlbanAndrieu/ansible-css'
30 | # name: 'albanandrieu.css'
31 | # version: master
32 |
33 | - src: https://github.com/AlbanAndrieu/ansible-dns.git
34 | name: albanandrieu.ansible_dns
35 | version: master
36 |
37 | #- src: https://github.com/AlbanAndrieu/ansible-dropbox.git
38 | # name: albanandrieu.dropbox
39 | # version: master
40 |
41 | #- src: https://github.com/AlbanAndrieu/ansible-eclipse.git
42 | # name: albanandrieu.eclipse
43 | # version: master
44 | #
45 | #- src: https://github.com/AlbanAndrieu/ansible-evasive.git
46 | # name: albanandrieu.evasive
47 | # version: master
48 |
49 | - src: https://github.com/AlbanAndrieu/ansible-gcc.git
50 | name: albanandrieu.gcc
51 | version: master
52 |
53 | #- src: 'https://github.com/AlbanAndrieu/ansible-grive'
54 | # name: 'albanandrieu.grive'
55 | # version: master
56 | #
57 | ##TODO
58 | ##- src: https://github.com/Stouts/Stouts.hostname
59 | ## version: master
60 | ## name: Stouts.hostname
61 | #
62 | - src: https://github.com/AlbanAndrieu/ansible-hostname.git
63 | name: albanandrieu.ansible_hostname
64 | version: master
65 |
66 | #- src: 'https://github.com/AlbanAndrieu/ansible-jboss'
67 | # name: 'albanandrieu.jboss'
68 | # version: master
69 | #
70 | #- src: 'https://github.com/AlbanAndrieu/ansible-jdiskreport'
71 | # name: 'albanandrieu.jdiskreport'
72 | # version: master
73 |
74 | - src: https://github.com/AlbanAndrieu/ansible-jenkins-slave.git
75 | name: albanandrieu.jenkins_slave
76 | version: master
77 |
78 | #- src: 'https://github.com/AlbanAndrieu/ansible-jenkins-swarm'
79 | # name: 'albanandrieu.jenkins-swarm'
80 | # version: master
81 | #
82 | #- src: 'https://github.com/AlbanAndrieu/ansible-jmeter'
83 | # name: 'albanandrieu.jmeter'
84 | # version: master
85 | #
86 | #- src: 'https://github.com/AlbanAndrieu/ansible-logstash-settings'
87 | # name: 'albanandrieu.logstash-settings'
88 | # version: master
89 | #
90 | #- src: 'https://github.com/AlbanAndrieu/ansible-mon'
91 | # name: 'albanandrieu.mon'
92 | # version: master
93 | #
94 | #- src: 'https://github.com/AlbanAndrieu/ansible-owasp-wte'
95 | # name: 'albanandrieu.owasp-wte'
96 | # version: master
97 | #
98 | #- src: 'https://github.com/AlbanAndrieu/ansible-pagespeed'
99 | # name: 'albanandrieu.pagespeed'
100 | # version: master
101 | #
102 | #- src: 'https://github.com/AlbanAndrieu/ansible-phpvirtualbox'
103 | # name: 'albanandrieu.phpvirtualbox'
104 | # version: master
105 | #
106 | #- src: 'https://github.com/AlbanAndrieu/ansible-private-bower'
107 | # name: 'albanandrieu.private-bower'
108 | # version: master
109 |
110 | - src: https://github.com/AlbanAndrieu/ansible-scons.git
111 | name: albanandrieu.scons
112 | version: master
113 |
114 | - src: https://github.com/AlbanAndrieu/ansible-selenium.git
115 | name: albanandrieu.selenium
116 | version: master
117 |
118 | #- src: 'https://github.com/AlbanAndrieu/ansible-shell'
119 | # name: 'albanandrieu.shell'
120 | # version: master
121 | #
122 | #- src: 'https://github.com/AlbanAndrieu/ansible-solaris'
123 | # name: 'albanandrieu.solaris'
124 | # version: master
125 | #
126 | #- src: 'https://github.com/AlbanAndrieu/ansible-squirrel'
127 | # name: 'albanandrieu.squirrel'
128 | # version: master
129 | #
130 | #- src: 'https://github.com/AlbanAndrieu/ansible-sublimetext'
131 | # name: 'albanandrieu.sublimetext'
132 | # version: master
133 | #
134 | #- src: 'https://github.com/AlbanAndrieu/ansible-subversion'
135 | # name: 'albanandrieu.subversion'
136 | # version: master
137 | #
138 | #- src: 'https://github.com/AlbanAndrieu/ansible-synergy'
139 | # name: 'albanandrieu.synergy'
140 | # version: master
141 | #
142 | - src: https://github.com/AlbanAndrieu/ansible-tomcat.git
143 | name: albanandrieu.tomcat
144 | version: master
145 |
146 | #- src: 'https://github.com/AlbanAndrieu/ansible-visualvm'
147 | # name: 'albanandrieu.visualvm'
148 | # version: master
149 | #
150 | #- src: https://github.com/AlbanAndrieu/ansible-web.git
151 | # name: albanandrieu.web
152 | # version: master
153 |
154 | #- src: https://github.com/AlbanAndrieu/ansible-webmin.git
155 | # name: albanandrieu.webmin
156 | # version: master
157 |
158 | #- src: 'https://github.com/AlbanAndrieu/ansible-workstation'
159 | # name: 'albanandrieu.workstation'
160 | # version: master
161 |
162 | - src: https://github.com/AlbanAndrieu/ansible-xvbf.git
163 | name: albanandrieu.xvbf
164 | version: master
165 |
166 | #- src: 'https://github.com/AlbanAndrieu/ansible-yourkit'
167 | # name: 'albanandrieu.yourkit'
168 | # version: master
169 | #
170 | #- src: 'https://github.com/AlbanAndrieu/ansible-zap'
171 | # name: 'albanandrieu.zap'
172 | # version: master
173 | #
174 | #- src: 'https://github.com/AlbanAndrieu/ansible-zfs'
175 | # name: 'albanandrieu.zfs'
176 | # version: master
177 | #
178 | #- src: 'https://github.com/AlbanAndrieu/ansible-login'
179 | # name: 'ansible-login'
180 | # version: master
181 | #
182 | #- src: 'https://github.com/AlbanAndrieu/ansible-newrelic'
183 | # name: 'newrelic'
184 | # version: master
185 |
186 | - src: https://github.com/AlbanAndrieu/devbox.chrome.git
187 | name: chrome
188 | version: master
189 |
190 | #- src: 'https://github.com/AlbanAndrieu/Stouts.collectd'
191 | # name: 'collectd'
192 | # version: master
193 | #
194 | ##- src: 'https://github.com/AlbanAndrieu/ansible-darthwade-wordpress'
195 | ## name: 'darthwade-wordpress'
196 | ## scm: 'git'
197 | ## version: 'master'
198 | ##
199 | ##- src: 'https://github.com/AlbanAndrieu/ansible-darthwade-wordpress-apache'
200 | ## name: 'darthwade-wordpress-apache'
201 | ## scm: 'git'
202 | ## version: 'master'
203 | #
204 | #- src: 'https://github.com/AlbanAndrieu/docker.ubuntu'
205 | # name: 'docker'
206 | # version: master
207 | #
208 | ##TODO nor more maintained
209 | ##- src: 'https://github.com/AlbanAndrieu/ansible-role-base'
210 | ## name: 'elao-base'
211 | ## scm: 'git'
212 | ## version: 'master'
213 | ##
214 | ##- src: 'https://github.com/AlbanAndrieu/ansible-role-ruby'
215 | ## name: 'elao-ruby'
216 | ## scm: 'git'
217 | ## version: 'master'
218 | ##
219 | ##- src: 'https://github.com/AlbanAndrieu/ansible-role-sass'
220 | ## name: 'elao-sass'
221 | ## scm: 'git'
222 | ## version: 'master'
223 | #
224 | #- src: 'https://github.com/AlbanAndrieu/ansible-role-apache'
225 | # name: 'geerlingguy.apache'
226 | # version: master
227 | #
228 | #- src: 'https://github.com/AlbanAndrieu/ansible-role-elasticsearch'
229 | # name: 'geerlingguy.elasticsearch'
230 | # version: master
231 | #
232 | #- src: 'https://github.com/AlbanAndrieu/ansible-role-elasticsearch-curator'
233 | # name: 'geerlingguy.elasticsearch-curator'
234 | # version: master
235 | #
236 | #- src: 'https://github.com/AlbanAndrieu/ansible-role-firewall'
237 | # name: 'geerlingguy.firewall'
238 | # version: master
239 | #
240 | #- src: 'https://github.com/AlbanAndrieu/ansible-role-git'
241 | # name: 'geerlingguy.git'
242 | # version: master
243 | #
244 | #- src: 'https://github.com/AlbanAndrieu/ansible-role-kibana'
245 | # name: 'geerlingguy.kibana'
246 | # version: master
247 | #
248 | #- src: 'https://github.com/AlbanAndrieu/ansible-role-logstash'
249 | # name: 'geerlingguy.logstash'
250 | # version: master
251 | #
252 | #- src: 'https://github.com/AlbanAndrieu/ansible-role-mysql'
253 | # name: 'geerlingguy.mysql'
254 | # version: master
255 | #
256 | #- src: 'https://github.com/AlbanAndrieu/ansible-role-nginx'
257 | # name: 'geerlingguy.nginx'
258 | # version: master
259 |
260 | - src: https://github.com/geerlingguy/ansible-role-ntp.git
261 | name: geerlingguy.ntp
262 | version: master
263 |
264 | #- src: 'https://github.com/AlbanAndrieu/ansible-role-php'
265 | # name: 'geerlingguy.php'
266 | # version: master
267 | #
268 | #- src: 'https://github.com/geerlingguy/ansible-role-php-mysql'
269 | # name: 'geerlingguy.php-mysql'
270 | # version: master
271 | #
272 | #- src: 'https://github.com/AlbanAndrieu/ansible-role-phpmyadmin'
273 | # name: 'geerlingguy.phpmyadmin'
274 | # version: master
275 | #
276 | #- src: 'https://github.com/AlbanAndrieu/ansible-role-redis'
277 | # name: 'geerlingguy.redis'
278 | # version: master
279 | #
280 | - src: https://github.com/geerlingguy/ansible-role-repo-epel.git
281 | name: geerlingguy.repo-epel
282 | version: master
283 |
284 | - src: https://github.com/geerlingguy/ansible-role-repo-remi.git
285 | name: geerlingguy.repo-remi
286 | version: master
287 |
288 | #- src: https://github.com/geerlingguy/ansible-role-pip.git
289 | # name: geerlingguy.pip
290 | # version: master
291 |
292 | - src: https://github.com/geerlingguy/ansible-role-docker.git
293 | name: geerlingguy.docker
294 | version: master
295 |
296 | #- src: 'https://github.com/geerlingguy/ansible-role-samba'
297 | # name: 'geerlingguy.samba'
298 | # version: master
299 | #
300 | ##- src: 'https://github.com/AlbanAndrieu/ansible-role-java'
301 | ## name: 'geerlingguy.java'
302 | ## scm: 'git'
303 | ## version: 'master'
304 | #
305 | ##- src: 'https://github.com/AlbanAndrieu/oracle-java'
306 | ## name: 'java'
307 | ## scm: 'git'
308 | ## version: 'master'
309 | #
310 | #- src: 'https://github.com/ansiblebit/oracle-java'
311 | # name: 'ansiblebit.oracle-java'
312 | # version: master
313 |
314 | - src: https://github.com/gantsign/ansible-role-maven.git
315 | name: maven
316 | version: master
317 |
318 | #- src: 'https://github.com/AlbanAndrieu/ansible-java-certificate'
319 | # name: 'java-certificate'
320 | # version: master
321 | #
322 | #- src: 'https://github.com/AlbanAndrieu/Stouts.jenkins'
323 | # name: 'jenkins-master'
324 | # version: master
325 |
326 | #- src: https://github.com/AlbanAndrieu/ansible-locale.git
327 | # name: locale
328 | # version: master
329 |
330 | #- src: 'https://github.com/AlbanAndrieu/ansible-role-maven'
331 | # name: 'maven'
332 | # version: master
333 | #
334 | #- src: 'https://github.com/AlbanAndrieu/ansible-role-maven-color'
335 | # name: 'maven-color'
336 | # version: master
337 | #
338 | ##- src: 'https://github.com/AlbanAndrieu/ansible-monit'
339 | ## name: 'monit'
340 | ## scm: 'git'
341 | ## version: 'master'
342 | #
343 | #- src: 'https://github.com/AlbanAndrieu/ansible-sonatype_nexus'
344 | # name: 'nexus'
345 | # version: master
346 |
347 | - src: https://github.com/AlbanAndrieu/ansible-nodejs.git
348 | name: geerlingguy.nodejs
349 | version: master
350 |
351 | - src: https://github.com/Stouts/Stouts.python.git
352 | name: python
353 | version: master
354 |
355 | #- src: 'https://github.com/AlbanAndrieu/ansible-role-security'
356 | # name: 'security'
357 | # version: master
358 |
359 | #- src: 'https://github.com/AlbanAndrieu/ansible-sonar'
360 | # name: 'sonar'
361 | # version: master
362 |
363 | - src: https://github.com/geerlingguy/ansible-role-sonar-runner.git
364 | name: geerlingguy.sonar-runner
365 | version: master
366 |
367 | #- src: 'https://github.com/AlbanAndrieu/ansible-role-ssl-certs'
368 | # name: 'ssl-certificate'
369 | # version: master
370 | #
371 | #- src: https://github.com/andrewrothstein/ansible-trust-ca.git
372 | # name: ssl-ca-certificate
373 | # version: master
374 | #
375 | #- src: https://github.com/andrewrothstein/ansible-tls.git
376 | # name: andrewrothstein.tls
377 | # version: master
378 | #
379 | #- src: 'https://github.com/AlbanAndrieu/ansible-supervisor_task'
380 | # name: 'supervisor'
381 | # version: master
382 | #
383 | #- src: 'https://github.com/AlbanAndrieu/ansible-vagrant-role'
384 | # name: 'vagrant'
385 | # version: master
386 | #
387 | #- src: https://github.com/AlbanAndrieu/ansible-galaxy.ubuntu.virtualbox.git
388 | # name: albanandrieu.virtualbox
389 | # version: master
390 | #
391 | #- src: https://github.com/dj-wasabi/ansible-zabbix-agent.git
392 | # name: dj-wasabi.zabbix-agent
393 | # version: master
394 |
395 | #- src: 'https://github.com/LIP-Computing/ansible-role-nvidia'
396 | # name: 'opencl'
397 | # version: master
398 |
399 | #- src: https://github.com/elliotweiser/ansible-osx-command-line-tools.git
400 | # name: elliotweiser.osx-command-line-tools
401 | # version: master
402 |
403 | #- src: https://github.com/geerlingguy/ansible-role-homebrew.git
404 | # name: geerlingguy.homebrew
405 | # version: master
406 |
407 | #- src: 'https://github.com/geerlingguy/ansible-role-dotfiles'
408 | # name: 'geerlingguy.dotfiles'
409 | # version: master
410 | #
411 | #- src: 'https://github.com/geerlingguy/ansible-role-mas'
412 | # name: 'geerlingguy.mas'
413 | # version: master
414 | #
415 | ##- src: 'https://github.com/geerlingguy/mac-dev-playbook'
416 | ## name: 'mac-dev-playbook'
417 | ## scm: 'git'
418 | ## version: 'master'
419 | #
420 | #- src: https://github.com/AlbanAndrieu/ansible-role-yarn.git
421 | # name: yarn
422 | # version: master
423 | #
424 | #- src: 'https://github.com/geerlingguy/ansible-role-nfs'
425 | # name: 'geerlingguy.nfs'
426 | # version: master
427 | #
428 | #- src: https://github.com/Oefenweb/ansible-swapfile.git
429 | # version: master
430 | # name: ansible-swapfile
431 | #
432 | #- src: 'https://github.com/andrewrothstein/ansible-kubernetes-helm'
433 | # name: 'andrewrothstein.kubernetes-helm'
434 | # version: master
435 | #
436 | #- src: 'https://github.com/andrewrothstein/ansible-kubectl'
437 | # name: 'andrewrothstein.kubectl'
438 | # version: master
439 |
440 | #- src: https://github.com/andrewrothstein/ansible-terraform.git
441 | # name: andrewrothstein.terraform
442 | # version: master
443 |
--------------------------------------------------------------------------------
/tasks/cleanups.yml:
--------------------------------------------------------------------------------
1 | ---
2 |
3 | - name: eclipse | Cleaning
4 | file: path="{{ item }}" state=absent
5 | with_fileglob:
6 | - "{{ eclipse_home }}/plugins/org.eclipse.jpt.*"
7 | - "{{ eclipse_home }}/features/org.eclipse.jpt.*"
8 | - "{{ eclipse_home }}/plugins/*jgit*"
9 | - "{{ eclipse_home }}/features/*jgit*"
10 | - "{{ eclipse_home }}/plugins/*egit*"
11 | - "{{ eclipse_home }}/features/*egit*"
12 | # those seems to break some stuff, need more testing...
13 | # - "{{ eclipse_home }}/plugins/org.eclipse.pde*"
14 | # - "{{ eclipse_home }}/features/org.eclipse.pde*"
15 | # - "{{ eclipse_home }}/plugins/*validation*"
16 | # - "{{ eclipse_home }}/features/*validation*"
17 | ignore_errors: true
18 |
--------------------------------------------------------------------------------
/tasks/config.yml:
--------------------------------------------------------------------------------
1 | ---
2 | #- name: eclipse | Configure eclipse ini configuration (-Xverify:none)
3 | # lineinfile: dest={{ eclipse_home }}/eclipse.ini line='-Xverify:none'
4 | # become: true
5 |
6 | - name: eclipse | Configure eclipse ini configuration (clean)
7 | lineinfile: dest={{ eclipse_home }}/eclipse.ini line='-clean' insertbefore='-startup'
8 | become: true
9 |
10 | #- name: eclipse | Configure eclipse ini configuration (Launcher XXMaxPermSize)
11 | # replace: dest={{ eclipse_home }}/eclipse.ini regexp='(--launcher\.XXMaxPermSize)\n256m' replace='\1\n{{ eclipse_launcher_XXMaxPermSize }}'
12 | # when: eclipse_launcher_XXMaxPermSize | length > 0
13 | # become: true
14 | #
15 | #- name: eclipse | Configure eclipse ini configuration (XXMaxPermSize)
16 | # lineinfile: regexp="^-XX:MaxPermSize=256m" line="-XX:MaxPermSize={{ eclipse_XXMaxPermSize }}" dest={{ eclipse_home }}/eclipse.ini
17 | # when: eclipse_XXMaxPermSize | length > 0
18 | # become: true
19 |
20 | - name: eclipse | Configure eclipse ini configuration (Xms)
21 | lineinfile: regexp="^-Xms40m" line="-Xms{{ eclipse_Xms }}" dest={{ eclipse_home }}/eclipse.ini
22 | when: eclipse_Xms | length > 0
23 | become: true
24 |
25 | - name: eclipse | Configure eclipse ini configuration (Xmx)
26 | lineinfile: regexp="^-Xmx512m" line="-Xmx{{ eclipse_Xmx }}" dest={{ eclipse_home }}/eclipse.ini
27 | when: eclipse_Xmx | length > 0
28 | become: true
29 |
30 | #- name: eclipse | Configure eclipse ini configuration (M2E)
31 | # lineinfile: dest={{ eclipse_home }}/eclipse.ini line='-Dm2e.discovery.url={{ eclipse_m2e_discovery_url }}'
32 | # when: eclipse_m2e_discovery_url | length > 0
33 | # become: true
34 |
35 | #- name: eclipse | Configure eclipse ini configuration (IPV4)
36 | # lineinfile: dest={{ eclipse_home }}/eclipse.ini line='{{ eclipse_ipv4 }}'
37 | # when: eclipse_ipv4 | length > 0
38 | # become: true
39 |
40 | # - lineinfile: dest={{ eclipse_home }}/eclipse.ini line='--launcher.GTK_version\n'
41 |
--------------------------------------------------------------------------------
/tasks/eclipse.yml:
--------------------------------------------------------------------------------
1 | ---
2 | # This playbook contains common plays to install eclipse.
3 |
4 | - name: eclipse | Check user exists
5 | user: name={{ eclipse_owner }} state=present
6 |
7 | - name: eclipse | Check user home directory
8 | stat: path={{ eclipse_owner_home }}
9 | register: home_present
10 |
11 | - debug: msg=" eclipse | Path exists and is a directory"
12 | when: home_present.stat.isdir is defined and home_present.stat.isdir == true
13 |
14 | - name: eclipse | Create temporary directory
15 | tempfile:
16 | state: directory
17 | suffix: staging
18 | # path: "{{ lookup('env', 'HOME') }}"
19 | register: tempdir
20 | connection: local
21 | changed_when: false
22 | become: true
23 | tags: eclipse_setup
24 |
25 | - set_fact: eclipse_dir_tmp="{{ tempdir.path }}"
26 |
27 | - include: install_{{ ansible_distribution }}.yml
28 |
29 | - debug: var=eclipse_home
30 | - debug: var=eclipse
31 |
32 | - name: eclipse | Create a link to eclipse (1)
33 | file:
34 | src="{{ eclipse_home }}"
35 | dest="{{ eclipse_base_dir }}/eclipse-{{ eclipse_major }}"
36 | state=link
37 | owner="{{ eclipse_owner }}"
38 | # group="{{eclipse_group}}"
39 | become: true
40 | when: eclipse_download.changed
41 |
42 | - name: eclipse | Create a link to eclipse (2)
43 | file:
44 | src="{{ eclipse_home }}"
45 | dest="{{ eclipse_link_base_dir }}/eclipse-{{ eclipse_major }}"
46 | state=link
47 | owner="{{ eclipse_owner }}"
48 | # group="{{eclipse_group}}"
49 | become: true
50 | tags: eclipse_setup
51 |
52 | - name: eclipse | Create a link to eclipse (3)
53 | file:
54 | src="{{ eclipse }}"
55 | dest="/usr/local/bin/eclipse"
56 | state=link
57 | owner="{{ eclipse_owner }}"
58 | mode=0755
59 | become: true
60 | tags: eclipse_setup
61 |
62 | - include: cleanups.yml
63 |
64 | - include: lombok.yml
65 |
66 | - include: config.yml
67 | when: eclipse_ini_enabled
68 |
69 | - name: eclipse | Install eclipse MoDisco & EMF Facet plugins
70 | command: "{{ eclipse }} -nosplash \
71 | -application org.eclipse.equinox.p2.director \
72 | -destination {{ eclipse_home }} \
73 | -repository \
74 | http://download.eclipse.org/releases/{{ eclipse_name }}/,\
75 | http://download.eclipse.org/tools/orbit/downloads/drops/S20110515001817/repository/,\
76 | http://download.eclipse.org/technology/swtbot/helios/dev-build/update-site,\
77 | http://eclipse-cs.sf.net/update/,\
78 | jar:file:org.eclipse.releng.tools-3.7M7.zip \
79 | -installIU \
80 | org.eclipse.birt.feature.group,\
81 | org.eclipse.mylyn.wikitext_feature.feature.group,\
82 | org.eclipse.acceleo.sdk.feature.group,\
83 | org.eclipse.m2m.atl.sdk.feature.group,\
84 | org.eclipse.emf.cdo.sdk.feature.group,\
85 | org.eclipse.emf.ecoretools.sdk.feature.group,\
86 | org.eclipse.emf.sdk.feature.group,\
87 | org.eclipse.emf.compare.sdk.feature.group,\
88 | org.eclipse.emf.query.sdk.feature.group,\
89 | org.eclipse.emf.validation.sdk.feature.group,\
90 | org.eclipse.jet.sdk.feature.group,\
91 | org.eclipse.net4j.sdk.feature.group,\
92 | org.eclipse.ocl.all.sdk.feature.group,\
93 | org.eclipse.m2m.qvt.oml.sdk.feature.group,\
94 | org.eclipse.uml2.sdk.feature.group,\
95 | org.antlr.runtime,\
96 | org.apache.derby,\
97 | org.apache.derby.source,\
98 | org.apache.log4j,\
99 | org.apache.log4j.source,\
100 | org.apache.commons.lang,\
101 | org.apache.commons.lang.source,\
102 | org.apache.commons.jxpath,\
103 | org.apache.commons.jxpath.source,\
104 | net.sourceforge.nattable.core,\
105 | net.sourceforge.nattable.core.source,\
106 | org.prefuse,\
107 | org.prefuse.source,\
108 | org.eclipse.releng.tools.feature.group,\
109 | org.eclipse.swtbot.eclipse.feature.group,\
110 | org.eclipse.swtbot.feature.group,\
111 | net.sf.eclipsecs.feature.group"
112 | when: eclipse_plugins_emf_enabled and eclipse_plugins_enabled
113 |
114 | # TODO failed
115 | - name: eclipse | Install eclipse CDT plugins
116 | command: "{{ eclipse }} -nosplash \
117 | -application org.eclipse.equinox.p2.director \
118 | -destination {{ eclipse_home }} \
119 | -repository http://download.eclipse.org/releases/{{ eclipse_name }}/,http://download.eclipse.org/tools/cdt/releases/helios/ \
120 | -installIU org.eclipse.cdt.feature.group \
121 | -installIU org.eclipse.cdt.sdk.feature.group \
122 | -installIU org.eclipse.cdt.platform.feature.group \
123 | -installIU org.eclipse.cdt.debug.ui.memory.feature.group \
124 | -installIU org.eclipse.cdt.debug.edc.feature.group \
125 | -installIU org.eclipse.cdt.util.feature.group"
126 | when: eclipse_plugins_cdt_enabled and eclipse_plugins_enabled
127 | ignore_errors: true
128 |
129 | # cmakeed - CMake editor
130 | - name: eclipse | Install eclipse CMake editor plugins
131 | command: "{{ eclipse }} -nosplash \
132 | -application org.eclipse.equinox.p2.director \
133 | -destination {{ eclipse_home }} \
134 | -repository http://download.eclipse.org/releases/{{ eclipse_name }}/,http://cmakeed.sourceforge.net/eclipse/ \
135 | -installIU com.cthing.cmakeed.feature.feature.group"
136 | when: eclipse_plugins_cmakeed_enabled and eclipse_plugins_enabled
137 | ignore_errors: true
138 |
139 | # OpenInTerminal - Add option in context menu
140 | - name: eclipse | Install eclipse Open In Terminal plugins
141 | command: "{{ eclipse }} -nosplash \
142 | -application org.eclipse.equinox.p2.director \
143 | -destination {{ eclipse_home }} \
144 | -repository http://download.eclipse.org/releases/{{ eclipse_name }}/,http://eclipse-openinterminal.googlecode.com/svn/trunk/site/ \
145 | -installIU OpenInTerminal.feature.group"
146 | when: eclipse_plugins_openinterminal_enabled and eclipse_plugins_enabled
147 | ignore_errors: true
148 |
149 | # protobuf-dt - Google Protobuffer editor
150 | - name: eclipse | Install eclipse Proto buffer plugins
151 | command: "{{ eclipse }} -nosplash \
152 | -application org.eclipse.equinox.p2.director \
153 | -destination {{ eclipse_home }} \
154 | -repository http://download.eclipse.org/releases/{{ eclipse_name }}/,http://download.eclipse.org/modeling/tmf/xtext/updates/composite/releases/,http://protobuf-dt.googlecode.com/git/update-site \
155 | -installIU com.google.eclipse.protobuf.feature.group"
156 | when: eclipse_plugins_protobuf_enabled and eclipse_plugins_enabled
157 |
158 | # yedit - YAML Editor
159 | - name: eclipse | Install eclipse YAML Editor plugins
160 | command: "{{ eclipse }} -nosplash \
161 | -application org.eclipse.equinox.p2.director \
162 | -destination {{ eclipse_home }} \
163 | -repository http://download.eclipse.org/releases/{{ eclipse_name }}/,http://dadacoalition.org/yedit \
164 | -installIU org.dadacoalition.yedit.feature.group"
165 | when: eclipse_plugins_yedit_enabled and eclipse_plugins_enabled
166 | ignore_errors: true
167 |
168 | # shelled - Bash Script Editor
169 | - name: eclipse | Install eclipse Bash Script Editor plugins
170 | command: "{{ eclipse }} -nosplash \
171 | -application org.eclipse.equinox.p2.director \
172 | -destination {{ eclipse_home }} \
173 | -repository http://download.eclipse.org/technology/dltk/updates/,https://sourceforge.net/projects/shelled/files/shelled/update/ \
174 | -installIU net.sourceforge.shelled.feature.group"
175 | when: eclipse_plugins_shelled_enabled and eclipse_plugins_enabled
176 | ignore_errors: true
177 |
178 | # Web Page Editor
179 | # - name: eclipse | Install eclipse Web Page Editor plugins
180 | # command: "{{ eclipse }} -nosplash \
181 | # -application org.eclipse.equinox.p2.director \
182 | # -destination {{ eclipse_home }} \
183 | # -repository http://download.eclipse.org/technology/dltk/updates/,https://sourceforge.net/projects/shelled/files/shelled/update/ \
184 | # -installIU org.eclipse.jst.webpageeditor.feature.feature.group"
185 | # when: eclipse_plugins_webpageed_enabled and eclipse_plugins_enabled
186 | # ignore_errors: true
187 |
188 | # Pydev
189 | - name: eclipse | Install python pexpect for adding Pydev certificat (apt)
190 | apt: pkg={{ item }} state=present
191 | when: ansible_distribution == 'Debian' and eclipse_plugins_pydev_enabled and eclipse_plugins_enabled
192 | with_items:
193 | - python-pexpect
194 |
195 | - name: eclipse | Install python pexpect for adding Pydev certificat (yum)
196 | yum: name={{ item }} state=present
197 | when: ansible_distribution == 'CentOS' and eclipse_plugins_pydev_enabled and eclipse_plugins_enabled
198 | with_items:
199 | - pexpect
200 |
201 | - name: eclipse | Transfer eclipse Pydev certificate
202 | copy: src=add_pydev_certificate.py dest={{ eclipse_dir_tmp }} mode=0777 force=yes owner={{ eclipse_owner }} group={{ eclipse_group }}
203 | when: eclipse_plugins_pydev_enabled and eclipse_plugins_enabled
204 | ignore_errors: "{{ ansible_check_mode }}"
205 |
206 | - name: eclipse | Add eclipse Pydev certificate
207 | command: python {{ eclipse_dir_tmp }}/add_pydev_certificate.py
208 | when: eclipse_plugins_pydev_enabled and eclipse_plugins_enabled
209 | ignore_errors: "{{ ansible_check_mode }}"
210 |
211 | - name: eclipse | Install eclipse Pydev plugins
212 | command: "{{ eclipse }} -nosplash \
213 | -application org.eclipse.equinox.p2.director \
214 | -destination {{ eclipse_home }} \
215 | -repository http://download.eclipse.org/technology/dltk/updates/,http://pydev.org/updates/ \
216 | -installIU org.python.pydev.feature.feature.group"
217 | when: eclipse_plugins_pydev_enabled and eclipse_plugins_enabled
218 | ignore_errors: true
219 |
220 | # Subclipse
221 | - name: eclipse | Install JavaHL for subclipse (apt)
222 | apt: pkg={{ item }} state=present
223 | become: true
224 | when: ansible_distribution == 'Debian' and eclipse_plugins_subclipse_enabled and eclipse_plugins_enabled
225 | with_items:
226 | - libsvn-java
227 |
228 | - name: eclipse | Install JavaHL for subclipse (yum)
229 | yum: name={{ item }} state=present
230 | become: true
231 | when: ansible_distribution == 'CentOS' and eclipse_plugins_subclipse_enabled and eclipse_plugins_enabled
232 | with_items:
233 | - subversion-javahl
234 |
235 | - name: eclipse | Install eclipse Subversion plugins
236 | command: "{{ eclipse }} -nosplash \
237 | -application org.eclipse.equinox.p2.director \
238 | -destination {{ eclipse_home }} \
239 | -repository http://download.eclipse.org/releases/{{ eclipse_name }}/,http://subclipse.tigris.org/update_1.10.x \
240 | -installIU org.tigris.subversion.subclipse.feature.group \
241 | -installIU org.tigris.subversion.clientadapter.feature.feature.group \
242 | -installIU org.tigris.subversion.clientadapter.svnkit.feature.feature.group \
243 | -installIU org.tigris.subversion.clientadapter.javahl.feature.feature.group \
244 | -installIU org.tigris.subversion.subclipse.graph.feature.feature.group"
245 | when: eclipse_plugins_subclipse_enabled and eclipse_plugins_enabled
246 | ignore_errors: true
247 |
248 | # Maven m2e
249 | - name: eclipse | Install eclipse Maven m2e plugins
250 | command: "{{ eclipse }} -nosplash \
251 | -application org.eclipse.equinox.p2.director \
252 | -destination {{ eclipse_home }} \
253 | -repository http://download.eclipse.org/releases/{{ eclipse_name }}/,http://download.eclipse.org/technology/m2e/releases/1.5/1.5.0.20140606-0033 \
254 | -installIU org.eclipse.m2e.feature.feature.group,org.eclipse.m2e.logback.feature.feature.group"
255 | when: eclipse_plugins_m2e_enabled and eclipse_plugins_enabled
256 | ignore_errors: true
257 |
258 | - include: features.yml
259 |
260 | - name: eclipse | fix permissions eclipse home
261 | file: recurse=yes owner={{ eclipse_owner }} group={{ eclipse_group }} dest={{ eclipse_home }}
262 | tags: eclipse_setup
263 | become: true
264 |
265 | - name: eclipse | Stat {{ eclipse_home }}
266 | stat: path={{ eclipse_home }}
267 | register: eclipse_archive_extracted_present
268 | become: true
269 |
270 | - debug: msg=" eclipse | Path exists and is a directory"
271 | when: eclipse_archive_extracted_present.stat.isdir is defined and eclipse_archive_extracted_present.stat.isdir == true
272 |
273 | - fail: msg=" eclipse | Whoops! file ownership has changed"
274 | when: eclipse_archive_extracted_present.stat.pw_name != '{{ eclipse_owner }}'
275 |
276 | - name: eclipse | Cleanup temporary directory
277 | file: name={{ eclipse_dir_tmp }} state=absent
278 | tags: eclipse_setup
279 | connection: local
280 | changed_when: false
281 | # ignore_errors: "{{ ansible_check_mode }}"
282 | ignore_errors: true
283 | become: true
284 |
285 | - debug: msg=" eclipse | Start eclipse {{ eclipse }}"
286 |
--------------------------------------------------------------------------------
/tasks/features.yml:
--------------------------------------------------------------------------------
1 | ---
2 | - shell: eclipse -application org.eclipse.equinox.p2.director -noSplash -repository {{ item.repo }} -installIUs {{ item.feature }}
3 | with_items:
4 | # EclEmma Java Code Coverage 2.3.3.201602231923 com.mountainminds.eclemma.feature.feature.group Mountainminds GmbH & Co. KG
5 | - { repo: 'http://update.eclemma.org/', feature: 'com.mountainminds.eclemma.feature.feature.group'}
6 | - { repo: 'http://download.eclipse.org/technology/m2e/releases/', feature: 'org.eclipse.m2e.feature.feature.group'}
7 | - { repo: 'http://download.jboss.org/jbosstools/mars/development/updates/', feature: 'org.jboss.ide.eclipse.as.feature.feature.group'}
8 | - { repo: 'http://velo.github.io/maven-formatter-plugin/p2/1.5.0', feature: 'com.marvinformatics.formatter.feature.feature.group'}
9 | - { repo: 'http://repo1.maven.org/maven2/.m2e/connectors/m2eclipse-buildhelper/0.15.0/N/0.15.0.201405280027/', feature: 'org.sonatype.m2e.buildhelper.feature.feature.group'}
10 | # - { repo: 'http://beust.com/eclipse/', feature: 'org.testng.eclipse.feature.group'}
11 | - { repo: 'http://download.jboss.org/jbosstools/updates/m2e-extensions/m2e-apt', feature: 'org.jboss.tools.maven.apt.feature.feature.group'}
12 | - { repo: 'https://raw.githubusercontent.com/wakatime/eclipse-wakatime/master/update-site/', feature: 'com.wakatime.eclipse.feature.feature.group'}
13 | # - { repo: 'http://download.eclipse.org/technology/dltk/updates/', feature: 'org.eclipse.jst.webpageeditor.feature.feature.group'}
14 | # TODO install dbeaver https://marketplace.eclipse.org/content/dbeaver
15 | # DBeaver Core 3.8.5 org.jkiss.dbeaver.core.feature.feature.group Serge Rider
16 | # - { repo: 'http://dbeaver.jkiss.org/update/latest/', feature: 'org.jkiss.dbeaver.core.feature.feature.group'}
17 | # TODO valgrind http://download.eclipse.org/linuxtools/update
18 | # Vagrant Tooling 2.2.0.201612072123 org.eclipse.linuxtools.vagrant.feature.feature.group Eclipse Linux Tools
19 | # - { repo: 'http://download.eclipse.org/linuxtools/update/', feature: 'org.eclipse.linuxtools.vagrant.feature.feature.group'}
20 | # TODO install Shell Script Editor for Eclipse https://marketplace.eclipse.org/category/free-tagging/shell-script
21 | # Dynamic Languages Toolkit - ShellEd IDE 5.7.0.201610180416 org.eclipse.dltk.sh.feature.group Eclipse DLTK
22 | # - { repo: 'http://download.eclipse.org/technology/dltk/updates/', feature: 'org.eclipse.dltk.sh.feature.group'}
23 | # TODO See https://mcuoneclipse.com/2012/06/25/5-best-eclipse-plugins-1-eclox-with-doxygen-graphviz-and-mscgen/
24 | # http://download.gna.org/eclox/update/
25 | # TODO install groovy compiler
26 | # See https://stackoverflow.com/questions/22875051/eclipse-cant-create-groovy-class-in-4-3-2
27 | # Groovy-Eclipse Feature 2.9.2.xx-201702282040-e46 org.codehaus.groovy.eclipse.feature.feature.group Codehaus.org
28 | # - { repo: 'http://dist.springsource.org/snapshot/GRECLIPSE/e4.6', feature: 'org.codehaus.groovy.eclipse.feature.feature.group'}
29 | # TODO sconsolidator
30 | # http://www.sconsolidator.com/update
31 | ignore_errors: true
32 |
--------------------------------------------------------------------------------
/tasks/install_CentOS.yml:
--------------------------------------------------------------------------------
1 | ---
2 | - set_fact: eclipse_home={{ eclipse_home_dir }}
3 |
4 | - set_fact: eclipse="{{ eclipse_home_dir }}/eclipse"
5 |
6 | - name: eclipse | Download eclipse on 'master' if we don't have it
7 | connection: local
8 | unarchive: src={{ eclipse_url }} dest={{ eclipse_dir_tmp }} copy=no
9 | register: eclipse_download
10 | become: true
11 |
12 | - name: eclipse | Create base directory
13 | file:
14 | dest="{{ eclipse_home }}"
15 | state=directory
16 | owner="{{ eclipse_owner }}"
17 | group="{{ eclipse_group }}"
18 | become: true
19 | when: eclipse_download.changed
20 | tags: eclipse_setup
21 |
22 | - name: eclipse | Copy eclipse into place
23 | copy: src={{ eclipse_dir_tmp }}/eclipse/ dest="{{ eclipse_home }}" owner="{{ eclipse_owner }}" group="{{ eclipse_group }}"
24 | become: true
25 | tags: eclipse_setup
26 |
27 | - name: eclipse | Install tar
28 | yum:
29 | name=tar
30 | state=present
31 | tags: eclipse_setup
32 |
33 | - name: eclipse | Configure eclipse icon
34 | template: src=eclipse.desktop.j2 dest={{ eclipse_desktop }}
35 | when: (ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux')
36 | ignore_errors: true
37 | tags: eclipse_setup
38 |
--------------------------------------------------------------------------------
/tasks/install_MacOSX.yml:
--------------------------------------------------------------------------------
1 | ---
2 | - homebrew_cask: name=eclipse-jee
3 |
4 | - set_fact: eclipse_folder='/Applications/Eclipse.app'
5 |
6 | - set_fact: eclipse_home="{{ eclipse_folder }}/Contents/Eclipse"
7 |
8 | - set_fact: eclipse="{{ eclipse_folder }}/Contents/MacOS/eclipse"
9 |
--------------------------------------------------------------------------------
/tasks/install_Ubuntu.yml:
--------------------------------------------------------------------------------
1 | ---
2 | - set_fact: eclipse_home={{ eclipse_home_dir }}
3 |
4 | - set_fact: eclipse="{{ eclipse_home_dir }}/eclipse"
5 |
6 | - name: eclipse | Download eclipse
7 | connection: local
8 | unarchive: src="{{ eclipse_url }}" dest="/tmp" copy=no
9 | register: eclipse_download
10 | become: true
11 |
12 | - name: eclipse | Create base directory
13 | file:
14 | dest="{{ eclipse_home }}"
15 | state=directory
16 | owner="{{ eclipse_owner }}"
17 | group="{{ eclipse_group }}"
18 | become: true
19 | when: eclipse_download.changed
20 | tags: eclipse_setup
21 |
22 | - name: eclipse | Change eclipse ownership
23 | file: path="/tmp" owner="{{ eclipse_owner }}" group="{{ eclipse_group }}" state=directory recurse=yes
24 | # when: eclipse_download.changed
25 | become: true
26 | tags: eclipse_setup
27 |
28 | - name: eclipse | Copy eclipse into place
29 | copy: src="/tmp/eclipse/" dest="{{ eclipse_home }}" owner="{{ eclipse_owner }}" group="{{ eclipse_group }}"
30 | become: true
31 | tags: eclipse_setup
32 |
33 | - name: eclipse | Install tar
34 | apt:
35 | pkg=tar
36 | state=present
37 | tags: eclipse_setup
38 |
39 | - name: eclipse | Configure eclipse icon
40 | template: src=eclipse.desktop.j2 dest={{ eclipse_desktop }}
41 | when: (ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu')
42 | ignore_errors: true
43 | tags: eclipse_setup
44 |
45 | - name: eclipse | Install eclipse javaHL requirement
46 | action: "{{ ansible_pkg_mgr }} name={{ item }} state={{ util_pkg_state|default('present') }} update_cache=yes"
47 | when: (ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu') and (ansible_distribution_version not in ['12.04'])
48 | tags: eclipse_setup
49 | with_items:
50 | - libsvn-java
51 | become: true
52 | ignore_errors: true
53 |
--------------------------------------------------------------------------------
/tasks/lombok.yml:
--------------------------------------------------------------------------------
1 | ---
2 | - get_url: url=http://projectlombok.org/downloads/lombok.jar dest={{ eclipse_home }}/lombok.jar
3 | become: true
4 |
5 | - lineinfile: dest={{ eclipse_home }}/eclipse.ini line='-javaagent:{{ eclipse_home }}/lombok.jar'
6 | become: true
7 |
--------------------------------------------------------------------------------
/tasks/main.yml:
--------------------------------------------------------------------------------
1 | ---
2 | # This playbook contains common plays that will be run on all nodes.
3 |
4 | - import_tasks: eclipse.yml
5 | when: eclipse_enabled
6 | # and not ansible_check_mode
7 | tags: [eclipse]
8 |
9 | - name: Copy Dockerfile
10 | template: src=Dockerfile.j2 dest={{ docker_files_generated_directory }}/Dockerfile mode=0777
11 | when: docker_files_enable
12 |
13 | - name: Copy build.sh
14 | template: src=build.sh.j2 dest={{ docker_files_generated_directory }}/build.sh mode=0777
15 | when: docker_files_enable
16 |
--------------------------------------------------------------------------------
/templates/Dockerfile.j2:
--------------------------------------------------------------------------------
1 | # This file was generated by ansible for {{ansible_fqdn}}
2 | #FROM debian:jessie
3 | FROM ubuntu:16.04
4 |
5 | # Volume can be accessed outside of container
6 | VOLUME [{{ docker_volume_directory }}]
7 |
8 | MAINTAINER Alban Andrieu "https://github.com/AlbanAndrieu"
9 |
10 | ENV DEBIAN_FRONTEND noninteractive
11 | ENV ECLIPSE_HOME {{ eclipse_base_dir }}
12 | ENV WORKDIR /home/vagrant
13 |
14 | # Working dir
15 | WORKDIR {{ docker_working_directory }}
16 |
17 | # Because docker replaces /sbin/init: https://github.com/dotcloud/docker/issues/1024
18 | #RUN dpkg-divert --local --rename --add /sbin/initctl
19 |
20 | # Make sure the package repository is up to date.
21 | RUN apt-get clean && apt-get -y update
22 |
23 | # Install ansible
24 | RUN apt-get install -y git unzip python-dev python-yaml python-jinja2 python-pip ansible
25 |
26 | # ADD
27 | ADD defaults $WORKDIR/ansible-eclipse/defaults
28 | ADD meta $WORKDIR/ansible-eclipse/meta
29 | ADD files $WORKDIR/ansible-eclipse/files
30 | ADD handlers $WORKDIR/ansible-eclipse/handlers
31 | ADD tasks $WORKDIR/ansible-eclipse/tasks
32 | ADD templates $WORKDIR/ansible-eclipse/templates
33 | #ADD vars $WORKDIR/ansible-eclipse/vars
34 |
35 | # Here we continue to use add because
36 | # there are a limited number of RUNs
37 | # allowed.
38 | ADD hosts /etc/ansible/hosts
39 | ADD eclipse.yml $WORKDIR/ansible-eclipse/eclipse.yml
40 |
41 | # Execute
42 | #RUN pwd
43 | #RUN ls -lrta
44 | #RUN ansible --version
45 | RUN echo localhost > hosts && ansible-playbook $WORKDIR/ansible-eclipse/eclipse.yml -c local -vvvv
46 |
47 | # Clean up APT when done.
48 | RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
49 |
50 | #EXPOSE 21:9999
51 | ENTRYPOINT ["{{eclipse_base_dir}}/eclipse-{{eclipse_major}}/eclipse"]
52 | CMD ["-g", "deamon off;"]
53 |
--------------------------------------------------------------------------------
/templates/build.sh.j2:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # This file was generated by ansible for {{ansible_fqdn}}
3 |
4 | DOCKERNAME="{{ docker_image_name }}"
5 |
6 | time docker build -t $DOCKERNAME .
7 |
8 | echo
9 | echo "This image is a trusted docker.io Image."
10 | echo
11 | echo "To pull it"
12 | echo " docker pull $DOCKERNAME"
13 | echo
14 | echo "To use this docker:"
15 | echo " docker run -d -P $DOCKERNAME"
16 | echo " - to attach your container directly to the host's network interfaces"
17 | echo " docker run --net host -d -P $DOCKERNAME"
18 | echo
19 | echo "To run in interactive mode for debug:"
20 | echo " docker run -t -i $DOCKERNAME bash"
21 | echo
22 |
--------------------------------------------------------------------------------
/templates/eclipse.desktop.j2:
--------------------------------------------------------------------------------
1 | # This file was generated by ansible for {{ansible_fqdn}}
2 | [Desktop Entry]
3 | Encoding=UTF-8
4 | Version={{ eclipse_major }}
5 | Name=Eclipse {{ eclipse_version }}
6 | GenericName=Text Editor
7 |
8 | Exec={{ eclipse_base_dir }}/eclipse-{{ eclipse_major }}/eclipse %F
9 | Terminal=false
10 | #Icon=/usr/lib/eclipse/icon.xpm
11 | #** something like /opt/eclipse/icon.xpm **
12 | Icon={{ eclipse_base_dir }}/eclipse-{{ eclipse_major }}/icon.xpm
13 | Type=Application
14 | MimeType=text/plain
15 | Categories=TextEditor;Development;Utility;IDE;Development
16 | Comment=Integrated Development Environment
17 | NoDisplay=false
18 | StartupNotify=true
19 | StartupWMClass=Eclipse
20 | OnlyShowIn=Unity;
21 | X-UnityGenerated=true
22 |
23 | X-Ayatana-Desktop-Shortcuts=NewWindow
24 |
25 | [NewWindow Shortcut Group]
26 | Name=New Window
27 | #Exec=eclipse -n
28 | # ** something like /opt/eclipse/eclipse **
29 | Exec={{ eclipse_base_dir }}/eclipse-{{ eclipse_major }}/eclipse
30 | TargetEnvironment=Unity
31 |
--------------------------------------------------------------------------------
/tests-TODELETE/.travis.yml:
--------------------------------------------------------------------------------
1 | ---
2 | sudo: required
3 |
4 | env:
5 | - distribution: centos
6 | version: 6
7 | init: /sbin/init
8 | run_opts: ""
9 | - distribution: centos
10 | version: 7
11 | init: /usr/lib/systemd/systemd
12 | run_opts: "--privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro"
13 | - distribution: ubuntu # phusion/baseimage
14 | version: 14.04
15 | init: /sbin/my_init
16 | run_opts: ""
17 | - distribution: ubuntu
18 | version: 12.04
19 | init: /sbin/init
20 | run_opts: ""
21 |
22 | services:
23 | - docker
24 |
25 | before_install:
26 | # Customize container
27 | - 'sudo docker build --rm=true --file=tests/Dockerfile.${distribution}-${version} --tag=${distribution}-${version}:ansible tests'
28 |
29 | script:
30 | - container_id=$(mktemp)
31 | # Run container in detached state
32 | - 'sudo docker run --detach --volume="${PWD}":/etc/ansible/roles/role_under_test:ro ${run_opts} ${distribution}-${version}:ansible "${init}" > "${container_id}"'
33 |
34 | # Ansible syntax check.
35 | - 'sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm ansible-playbook /etc/ansible/roles/role_under_test/tests/test.yml --syntax-check'
36 |
37 | # Test role.
38 | - 'sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm ansible-playbook /etc/ansible/roles/role_under_test/tests/test.yml'
39 |
40 | # Test role idempotence.
41 | - >
42 | sudo docker exec "$(cat ${container_id})" ansible-playbook /etc/ansible/roles/role_under_test/tests/test.yml
43 | | grep -q 'changed=0.*failed=0'
44 | && (echo 'Idempotence test: pass' && exit 0)
45 | || (echo 'Idempotence test: fail' && exit 1)
46 |
47 | # Make sure fail2ban process is running.
48 | - >
49 | sudo docker exec "$(cat ${container_id})" ps -ax | grep -q 'fail2ban'
50 | && (echo 'fail2ban is on: pass' && exit 0)
51 | || (echo 'fail2ban is on: fail' && exit 1)
52 |
53 | # Clean up
54 | - 'sudo docker stop "$(cat ${container_id})"'
55 |
56 | notifications:
57 | webhooks: https://galaxy.ansible.com/api/v1/notifications/
58 |
--------------------------------------------------------------------------------
/tests-TODELETE/requirements.yml:
--------------------------------------------------------------------------------
1 | ---
2 | # ansible-galaxy install -r requirements.yml -p ./roles/ --ignore-errors
3 |
4 | - src: https://github.com/AlbanAndrieu/ansible-java.git
5 | name: java
6 | scm: git
7 |
--------------------------------------------------------------------------------
/tests-TODELETE/test.yml:
--------------------------------------------------------------------------------
1 | ---
2 |
3 | - hosts: all
4 |
5 | pre_tasks:
6 | - name: Ensure build dependencies are installed (RedHat).
7 | yum: 'name="{{ item }}" state=present'
8 | with_items:
9 | - openssh-server
10 | - openssh-clients
11 | when: ansible_os_family == 'RedHat'
12 |
13 | - name: Ensure build dependencies are installed (Debian).
14 | apt: 'name="{{ item }}" state=installed'
15 | with_items:
16 | - openssh-server
17 | - openssh-client
18 | when: ansible_os_family == 'Debian'
19 |
20 | roles:
21 | - { role: ../,
22 | sudoers_enabled: false
23 | }
24 |
--------------------------------------------------------------------------------