--- kind: pipeline type: docker name: build-amd64 platform: os: linux arch: amd64 workspace: base: /go path: src/srs.epita.fr/fic-server steps: - name: get deps image: golang:alpine commands: - apk --no-cache add git - go get -v -d srs.epita.fr/fic-server/admin - go get -v -d srs.epita.fr/fic-server/backend - go get -v -d srs.epita.fr/fic-server/frontend - go get -v -d srs.epita.fr/fic-server/dashboard - go get -v -d srs.epita.fr/fic-server/repochecker - go get -v -d srs.epita.fr/fic-server/qa - mkdir deploy - name: vet image: golang:alpine commands: - apk --no-cache add build-base - go vet -v srs.epita.fr/fic-server/admin - go vet -v srs.epita.fr/fic-server/backend - go vet -v srs.epita.fr/fic-server/frontend - go vet -v srs.epita.fr/fic-server/dashboard - go vet -v srs.epita.fr/fic-server/repochecker - go vet -v srs.epita.fr/fic-server/qa - name: build admin image: golang:alpine commands: - go build -v -o deploy/admin-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} srs.epita.fr/fic-server/admin - tar chjf deploy/htdocs-admin.tar.bz2 htdocs-admin environment: CGO_ENABLED: 0 - name: build backend image: golang:alpine commands: - go build -v -o deploy/backend-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} srs.epita.fr/fic-server/backend environment: CGO_ENABLED: 0 - name: build frontend image: golang:alpine commands: - go build -v -o deploy/frontend-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} srs.epita.fr/fic-server/frontend - tar chjf deploy/htdocs-frontend.tar.bz2 htdocs-frontend environment: CGO_ENABLED: 0 - name: build frontend ui image: node:lts-alpine commands: - apk --no-cache add python2 build-base - cd frontend/ui - npm install --network-timeout=100000 - sed -i 's!@popperjs/core/dist/esm/popper!@popperjs/core!' node_modules/sveltestrap/src/*.js node_modules/sveltestrap/src/*.svelte - npm run build - name: build dashboard image: golang:alpine commands: - go build -v -o deploy/dashboard-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} srs.epita.fr/fic-server/dashboard - tar chjf deploy/htdocs-dashboard.tar.bz2 htdocs-dashboard environment: CGO_ENABLED: 0 - name: build repochecker image: golang:alpine commands: - go build --tags checkupdate -v -o deploy/repochecker-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} srs.epita.fr/fic-server/repochecker - grep "const version" repochecker/update.go | sed -r 's/^.*=\s*(\S.*)$/\1/' > deploy/repochecker.version environment: CGO_ENABLED: 0 - name: build repochecker for macOS image: golang:alpine commands: - go build --tags checkupdate -v -o deploy/repochecker-darwin-${DRONE_STAGE_ARCH} srs.epita.fr/fic-server/repochecker environment: CGO_ENABLED: 0 GOOS: darwin GOARCH: amd64 - name: build qa image: golang:alpine commands: - go build -v -o deploy/qa-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} srs.epita.fr/fic-server/qa - tar chjf deploy/htdocs-qa.tar.bz2 htdocs-qa environment: CGO_ENABLED: 0 - name: deploy image: appleboy/drone-scp settings: tar_tmp_path: /tmp/ host: srs.nemunai.re target: /var/www/nemunai.re/srs/fic-binaries/${DRONE_BRANCH//\//-} source: deploy/* strip_components: 1 username: from_secret: ssh_username key: from_secret: deploy_key port: from_secret: ssh_port when: event: exclude: - pull_request - name: docker admin image: plugins/docker settings: username: from_secret: docker_username password: from_secret: docker_password repo: nemunaire/fic-admin auto_tag: true auto_tag_suffix: ${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} dockerfile: Dockerfile-admin when: branch: - master - name: docker backend image: plugins/docker settings: username: from_secret: docker_username password: from_secret: docker_password repo: nemunaire/fic-backend auto_tag: true auto_tag_suffix: ${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} dockerfile: Dockerfile-backend when: branch: - master - name: docker frontend image: plugins/docker settings: username: from_secret: docker_username password: from_secret: docker_password repo: nemunaire/fic-frontend auto_tag: true auto_tag_suffix: ${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} dockerfile: Dockerfile-frontend when: branch: - master - name: docker frontend nginx image: plugins/docker settings: username: from_secret: docker_username password: from_secret: docker_password repo: nemunaire/fic-nginx auto_tag: true auto_tag_suffix: ${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} dockerfile: Dockerfile-nginx when: branch: - master - name: docker frontend ui image: plugins/docker settings: username: from_secret: docker_username password: from_secret: docker_password repo: nemunaire/fic-frontend-ui auto_tag: true auto_tag_suffix: ${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} dockerfile: Dockerfile-frontend-ui when: branch: - master - name: docker dashboard image: plugins/docker settings: username: from_secret: docker_username password: from_secret: docker_password repo: nemunaire/fic-dashboard auto_tag: true auto_tag_suffix: ${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} dockerfile: Dockerfile-dashboard when: branch: - master - name: docker qa image: plugins/docker settings: username: from_secret: docker_username password: from_secret: docker_password repo: nemunaire/fic-qa auto_tag: true auto_tag_suffix: ${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} dockerfile: Dockerfile-qa when: branch: - master - name: docker repochecker image: plugins/docker settings: username: from_secret: docker_username password: from_secret: docker_password repo: nemunaire/fic-repochecker auto_tag: true auto_tag_suffix: ${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} dockerfile: Dockerfile-repochecker when: branch: - master - name: docker remote-scores-sync-zqds image: plugins/docker settings: username: from_secret: docker_username password: from_secret: docker_password repo: nemunaire/fic-remote-scores-sync-zqds auto_tag: true auto_tag_suffix: ${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} dockerfile: Dockerfile-remote-scores-sync-zqds when: branch: - master --- kind: pipeline type: docker name: build-arm64 platform: os: linux arch: arm64 workspace: base: /go path: src/srs.epita.fr/fic-server steps: - name: get deps image: golang:alpine commands: - apk --no-cache add git - go get -v -d srs.epita.fr/fic-server/admin - go get -v -d srs.epita.fr/fic-server/backend - go get -v -d srs.epita.fr/fic-server/frontend - go get -v -d srs.epita.fr/fic-server/dashboard - name: build admin image: golang:alpine commands: - go build -v -o deploy/admin-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} srs.epita.fr/fic-server/admin environment: CGO_ENABLED: 0 - name: build backend image: golang:alpine commands: - go build -v -o deploy/backend-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} srs.epita.fr/fic-server/backend environment: CGO_ENABLED: 0 - name: build frontend image: golang:alpine commands: - go build -v -o deploy/frontend-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} srs.epita.fr/fic-server/frontend environment: CGO_ENABLED: 0 - name: build frontend ui image: node:lts-alpine commands: - apk --no-cache add python2 build-base - cd frontend/ui - npm install --network-timeout=100000 - sed -i 's!@popperjs/core/dist/esm/popper!@popperjs/core!' node_modules/sveltestrap/src/*.js node_modules/sveltestrap/src/*.svelte - npm run build - name: build dashboard image: golang:alpine commands: - go build -v -o deploy/dashboard-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} srs.epita.fr/fic-server/dashboard environment: CGO_ENABLED: 0 - name: build repochecker image: golang:alpine commands: - go build --tags checkupdate -v -o deploy/repochecker-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} srs.epita.fr/fic-server/repochecker environment: CGO_ENABLED: 0 - name: build repochecker for macOS image: golang:alpine commands: - apk --no-cache add build-base - go build --tags checkupdate -v -o deploy/repochecker-darwin-${DRONE_STAGE_ARCH} srs.epita.fr/fic-server/repochecker environment: CGO_ENABLED: 0 GOOS: darwin GOARCH: arm64 - name: build qa image: golang:alpine commands: - go build -v -o deploy/qa-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} srs.epita.fr/fic-server/qa environment: CGO_ENABLED: 0 - name: deploy image: appleboy/drone-scp settings: tar_tmp_path: /tmp/ host: srs.nemunai.re target: /var/www/nemunai.re/srs/fic-binaries/${DRONE_BRANCH//\//-} source: deploy/* strip_components: 1 username: from_secret: ssh_username key: from_secret: deploy_key port: from_secret: ssh_port when: event: exclude: - pull_request - name: docker admin image: plugins/docker settings: username: from_secret: docker_username password: from_secret: docker_password repo: nemunaire/fic-admin auto_tag: true auto_tag_suffix: ${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} dockerfile: Dockerfile-admin when: branch: - master - name: docker backend image: plugins/docker settings: username: from_secret: docker_username password: from_secret: docker_password repo: nemunaire/fic-backend auto_tag: true auto_tag_suffix: ${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} dockerfile: Dockerfile-backend when: branch: - master - name: docker frontend image: plugins/docker settings: username: from_secret: docker_username password: from_secret: docker_password repo: nemunaire/fic-frontend auto_tag: true auto_tag_suffix: ${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} dockerfile: Dockerfile-frontend when: branch: - master - name: docker frontend nginx image: plugins/docker settings: username: from_secret: docker_username password: from_secret: docker_password repo: nemunaire/fic-nginx auto_tag: true auto_tag_suffix: ${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} dockerfile: Dockerfile-nginx when: branch: - master - name: docker dashboard image: plugins/docker settings: username: from_secret: docker_username password: from_secret: docker_password repo: nemunaire/fic-dashboard auto_tag: true auto_tag_suffix: ${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} dockerfile: Dockerfile-dashboard when: branch: - master - name: docker qa image: plugins/docker settings: username: from_secret: docker_username password: from_secret: docker_password repo: nemunaire/fic-qa auto_tag: true auto_tag_suffix: ${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} dockerfile: Dockerfile-qa when: branch: - master - name: docker repochecker image: plugins/docker settings: username: from_secret: docker_username password: from_secret: docker_password repo: nemunaire/fic-repochecker auto_tag: true auto_tag_suffix: ${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} dockerfile: Dockerfile-repochecker when: branch: - master --- kind: pipeline name: docker-manifest steps: - name: publish admin image: plugins/manifest settings: auto_tag: true ignore_missing: true spec: .drone-manifest-fic-admin.yml username: from_secret: docker_username password: from_secret: docker_password - name: publish backend image: plugins/manifest settings: auto_tag: true ignore_missing: true spec: .drone-manifest-fic-backend.yml username: from_secret: docker_username password: from_secret: docker_password - name: publish frontend image: plugins/manifest settings: auto_tag: true ignore_missing: true spec: .drone-manifest-fic-frontend.yml username: from_secret: docker_username password: from_secret: docker_password - name: publish frontend nginx image: plugins/manifest settings: auto_tag: true ignore_missing: true spec: .drone-manifest-fic-nginx.yml username: from_secret: docker_username password: from_secret: docker_password - name: publish dashboard image: plugins/manifest settings: auto_tag: true ignore_missing: true spec: .drone-manifest-fic-dashboard.yml username: from_secret: docker_username password: from_secret: docker_password - name: publish repochecker image: plugins/manifest settings: auto_tag: true ignore_missing: true spec: .drone-manifest-fic-repochecker.yml username: from_secret: docker_username password: from_secret: docker_password - name: publish qa image: plugins/manifest settings: auto_tag: true ignore_missing: true spec: .drone-manifest-fic-qa.yml username: from_secret: docker_username password: from_secret: docker_password - name: docker remote-scores-sync-zqds image: plugins/docker settings: username: from_secret: docker_username password: from_secret: docker_password repo: nemunaire/fic-remote-scores-sync-zqds auto_tag: true auto_tag_suffix: ${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} dockerfile: Dockerfile-remote-scores-sync-zqds when: branch: - master trigger: event: - push - tag depends_on: - build-amd64 - build-arm64