diff --git a/gitlab-ci.yml b/gitlab-ci.yml new file mode 100644 index 0000000..257111a --- /dev/null +++ b/gitlab-ci.yml @@ -0,0 +1,57 @@ +variables: + REPO_NAME: codeberg.org/librarian/librarian + DOCKER_HOST: tcp://docker:2375 + +stages: + - build + - buildx + - deploy + +bin: + stage: build + needs: [] + image: golang:latest + script: + - mkdir -p $GOPATH/src/$(dirname $REPO_NAME) + - ln -svf $CI_PROJECT_DIR $GOPATH/src/$REPO_NAME + - cd $GOPATH/src/$REPO_NAME + - go build -ldflags "-extldflags '-static'" -o $CI_PROJECT_DIR/librarian-linux-amd64 + - GOARCH=arm64 GOOS=linux go build -ldflags "-extldflags '-static'" -o $CI_PROJECT_DIR/librarian-linux-arm64 + - GOARCH=amd64 GOOS=openbsd go build -ldflags "-extldflags '-static'" -o $CI_PROJECT_DIR/librarian-openbsd-amd64 + artifacts: + paths: + - librarian-linux-amd64 + - librarian-linux-arm64 + - librarian-openbsd-amd64 + +buildx: + image: docker:20-git + stage: buildx + variables: + GIT_STRATEGY: none + artifacts: + paths: + - buildx + expire_in: 1 hour + services: + - docker:20-dind + script: + - export DOCKER_BUILDKIT=1 + - git clone git://github.com/docker/buildx ./docker-buildx + - docker build --platform=local -o . ./docker-buildx + +deploy: + image: docker:20 + stage: deploy + services: + - name: docker:20-dind + command: ["--experimental"] + before_script: + - mkdir -p ~/.docker/cli-plugins + - mv buildx ~/.docker/cli-plugins/docker-buildx + - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + script: + - docker login -u $DOCKER_USERNAME -p $DOCKER_ACCESS_TOKEN + - docker context create mybuilder + - docker buildx create --use --name mybuilder mybuilder + - docker buildx build --platform linux/amd64,linux/arm64 --push -t nineteengladespool/librarian:latest . \ No newline at end of file