Skip to content
Snippets Groups Projects
.gitlab-ci.yml 1.72 KiB
Newer Older
kaiyou's avatar
kaiyou committed
stages:
  - build
  - test
kaiyou's avatar
kaiyou committed

compile:
  stage: build
  image: golang:alpine
kaiyou's avatar
kaiyou committed
  script:
kaiyou's avatar
kaiyou committed
    - source ./env
kaiyou's avatar
kaiyou committed
    - go build -buildmode=pie -tags "$TAGS" -ldflags "$LDFLAGS" ./cmd/hepto.go
kaiyou's avatar
kaiyou committed
  artifacts:
    paths:
      - hepto
kaiyou's avatar
kaiyou committed
    expire_in: 1 week
  variables:
    GIT_FETCH_EXTRA_FLAGS: --tags
  before_script:
kaiyou's avatar
kaiyou committed
    - apk add --no-cache git gcc g++ libseccomp-dev libseccomp-static
kaiyou's avatar
kaiyou committed
    - git fetch --tags
    - mkdir -p .go
kaiyou's avatar
kaiyou committed
  cache:
    paths:
      - .go/pkg/mod/
kaiyou's avatar
kaiyou committed
.before_script_template: &ansible-job
  image: docker.tedomum.net/acides/ansible-ci:main
  before_script:
    - chmod 750 ansible
    - echo "$VAULT_PASSWORD" > /tmp/vault
    - eval $(ssh-agent -s)
    - ssh-add <(echo "$SSH_KEY"|base64 -d)
  variables:
    # The ansible vault only contains secret variables, cluster config itself
    # is set from the documentation inventory
reminec's avatar
reminec committed
    ANSIBLE_ARGS: -i ../.ci-vault -i inventories/sample-cloud.yaml --vault-password-file /tmp/vault -e node_prefix=ci-$CI_JOB_ID
kaiyou's avatar
kaiyou committed
  needs:
    - compile
kaiyou's avatar
kaiyou committed
  <<: *ansible-job
  script:
reminec's avatar
reminec committed
    - cd ansible/
    - ansible $ANSIBLE_ARGS -m include_tasks -a file=playbooks/ciupload.yaml localhost
  
  stage: test
kaiyou's avatar
kaiyou committed
  needs:
    - upload
  dependencies: []
kaiyou's avatar
kaiyou committed
  <<: *ansible-job
kaiyou's avatar
kaiyou committed
  parallel:
    matrix:
      - PROVIDER: scaleway
        IMAGE:
        - debian12
kaiyou's avatar
kaiyou committed
        IMAGE:
        - debian12
  script:
reminec's avatar
reminec committed
    - cd ansible/
reminec's avatar
reminec committed
    - ansible-playbook $ANSIBLE_ARGS playbooks/deploy.yaml -e cloud_provider=$PROVIDER -e image=$IMAGE
    - ansible-playbook $ANSIBLE_ARGS playbooks/test_podinfo.yaml -e cloud_provider=$PROVIDER -e image=$IMAGE
  after_script:
reminec's avatar
reminec committed
    - cd ansible/
reminec's avatar
reminec committed
    - ansible-playbook $ANSIBLE_ARGS playbooks/cleanup.yaml -e cloud_provider=$PROVIDER -e image=$IMAGE