Filter updated: Thu, 13 Jan 2022 00:11:23 +0000
[urlhaus-filter.git] / .gitlab-ci.yml
blob6af3c51005a0bde3824e6e708d6989188d527fdf
1 stages:
2   - test
3   - deploy
4   - failed_stage
6 image: alpine:latest # Use the latest version of Alpine Linux docker image
8 build_job:
9   stage: test
11   before_script:
12     - 'which ssh-agent || (apk update && apk add curl openssh-client git grep)'
13     - eval $(ssh-agent -s)
14     - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
15     - mkdir -p ~/.ssh
16     - chmod 700 ~/.ssh
17     - echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
18     - chmod 644 ~/.ssh/known_hosts
20   script:
21     - sh src/script.sh
23     - git checkout master
24     - git config --global user.name "curben-bot"
25     - git config --global user.email "3048979-curben-bot@users.noreply.gitlab.com"
27     # Commit the changes
28     - sh src/commit.sh
30     # Generate successful status badge
31     - mkdir -p .gitlab/
32     - sh src/badge.sh "success"
33     - git add .gitlab/status.svg
34     # Only commit when diff exists https://stackoverflow.com/a/8123841
35     - git diff-index --quiet HEAD || git commit -m "Success pipeline"
37     - ssh -T git@gitlab.com
38     - git remote set-url origin git@gitlab.com:curben/urlhaus-filter.git
39     - git push origin master
41   rules:
42     # Only trigger through schedule job and "Run pipeline" in master branch
43     - if: '$CI_COMMIT_REF_NAME == "master" && ($CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "web")'
44       when: always
46   # Upload working folder as a job artifact
47   artifacts:
48     paths:
49       - tmp/
50     expire_in: 30 days
52 failed_job:
53   stage: failed_stage
55   before_script:
56     - 'which ssh-agent || (apk update && apk add curl openssh-client git grep)'
57     - eval $(ssh-agent -s)
58     - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
59     - mkdir -p ~/.ssh
60     - chmod 700 ~/.ssh
61     - echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
62     - chmod 644 ~/.ssh/known_hosts
64   script:
65     - git checkout master
66     - git config --global user.name "curben-bot"
67     - git config --global user.email "3048979-curben-bot@users.noreply.gitlab.com"
69     - mkdir -p .gitlab/
70     - sh src/badge.sh "failed"
71     - git add .gitlab/status.svg
72     - git diff-index --quiet HEAD || git commit -m "Failed pipeline"
73     - ssh -T git@gitlab.com
74     - git remote set-url origin git@gitlab.com:curben/urlhaus-filter.git
75     - git push origin master
77   rules:
78     - if: '$CI_COMMIT_REF_NAME == "master" && ($CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "web")'
79       # Run this job only when preceding jobs failed
80       when: on_failure