| image: node:latest |
| |
| stages: |
| - test |
| - build |
| - deploy |
| |
| cache: |
| paths: |
| - node_modules/ |
| |
| # Run npm tests |
| test: |
| stage: test |
| before_script: |
| - npm install |
| script: |
| - npm test |
| |
| # Test Docker image build |
| test-docker-image: |
| image: docker:latest |
| stage: test |
| variables: |
| FF_NETWORK_PER_BUILD: "true" |
| services: |
| - name: docker:dind |
| alias: docker |
| command: ["--dns=127.0.0.11", "--dns=8.8.8.8"] |
| before_script: |
| - apk update |
| - apk add --no-cache bash |
| script: |
| - docker build -t korap/conllu-cmc:test . |
| - echo "Testing help display..." |
| - docker run --rm korap/conllu-cmc:test --help |
| - echo "Testing basic annotation..." |
| - echo -e "1\tš\t_\t_\t_\t_\t_\t_\t_\t_" | docker run --rm -i korap/conllu-cmc:test |
| |
| # Build Docker image |
| build-docker-image: |
| image: docker:latest |
| stage: build |
| variables: |
| FF_NETWORK_PER_BUILD: "true" |
| services: |
| - name: docker:dind |
| alias: docker |
| command: ["--dns=127.0.0.11", "--dns=8.8.8.8"] |
| rules: |
| - if: $CI_COMMIT_TAG =~ /.+/ |
| variables: |
| VID: $CI_COMMIT_TAG |
| - when: manual |
| variables: |
| VID_ALT: $CI_COMMIT_BRANCH-$CI_COMMIT_SHORT_SHA |
| VID: snapshot |
| cache: |
| key: conllu-cmc |
| paths: |
| - cache/ |
| before_script: |
| - mkdir -p cache |
| - apk update |
| - apk add --no-cache bash xz |
| script: |
| - docker build -t korap/conllu-cmc:latest . |
| - docker tag korap/conllu-cmc:latest korap/conllu-cmc:$VID |
| - | |
| if [ -n "$VID_ALT" ]; then |
| docker tag korap/conllu-cmc:latest korap/conllu-cmc:$VID_ALT |
| fi |
| - docker save korap/conllu-cmc | xz -T0 > conllu-cmc.xz |
| artifacts: |
| paths: |
| - conllu-cmc.xz |
| |
| # Deploy to Docker Hub |
| deploy-to-docker-hub: |
| image: docker:latest |
| stage: deploy |
| variables: |
| FF_NETWORK_PER_BUILD: "true" |
| services: |
| - name: docker:dind |
| alias: docker |
| command: ["--dns=127.0.0.11", "--dns=8.8.8.8"] |
| rules: |
| - if: $CI_COMMIT_TAG =~ /.+/ |
| - when: manual |
| dependencies: |
| - build-docker-image |
| before_script: |
| - echo "Checking Docker Hub credentials..." |
| - test -n "$DOCKER_HUB_USER" || (echo "ERROR: DOCKER_HUB_USER is not set" && exit 1) |
| - test -n "$DOCKER_HUB_PASSWORD" || (echo "ERROR: DOCKER_HUB_PASSWORD is not set" && exit 1) |
| - echo "Logging in as user: $DOCKER_HUB_USER" |
| - echo "$DOCKER_HUB_PASSWORD" | docker login -u "$DOCKER_HUB_USER" --password-stdin |
| script: |
| - xz -d -c conllu-cmc.xz | docker load |
| - docker push --all-tags korap/conllu-cmc |
| |
| # Build standalone binaries |
| package: |
| stage: build |
| before_script: |
| - npm install |
| script: |
| - npm run pkg-linux |
| - npm run pkg-macos |
| artifacts: |
| paths: |
| - bin/ |