Jetbrains スペース オートメーション


Jetbrains スペースは昨日の GA のものです.私はGitlabとそのCIの長年のユーザーであり、本当に気に入っていますが、別の製品を試してみたかったので、Githubを試してみましたが、CIの実装(githubアクション)が好きではありません.だから昨日私は Spaces 自動化と IMO を試しました.gitlab から space への設定を簡単に書き換えることができます.

例として、Webページを展開するために使用するスクリプトを次に示します.

stages:
  - build
  - deploy

# Build site with hugo and upload cache and artifacts
pages:
  stage: build
  image: pkg.cloud.themaymeow.com/ci/hugo:extended-v0.75.1
  cache:
    key: themaymeow-com-build
    paths:
      - public
    policy: push
  script:
    - hugo --config ./production.config.toml --enableGitInfo
  artifacts:
    expire_in: 1 week
    paths:
      - public
  only:
    - master
  tags:
    - docker
    - digitalocean

deploy to azure:
  stage: deploy
  image: maymeow/minio-cli
  cache:
    key: themaymeow-com-build
    paths:
      - public
    policy: pull
  dependencies:
    - pages
  script:
    - mc config host add cdn https://storage.googleapis.com $ACCESS $SECRET --api s3v4
    - cd public
    - mc cp -r . cdn/www.themaymeow.com
    - mc ls cdn/www.themaymeow.com
  only:
    - master
  tags:
    - docker
    - digitalocean


以下はスペース自動化に書き直されます

/**
* JetBrains Space Automation
* This Kotlin-script file lets you automate build activities
* For more info, see https://www.jetbrains.com/help/space/automation.html
*/

job("Build page and deploy") {
    startOn {
        gitPush { enabled = true }
    }

    // compile page
    container("compiled.registry.jetbrains.space/p/blog/containers/hugo:0.0.1") {
        shellScript {
            content = """
                hugo --config ./production.config.toml --enableGitInfo
                mv ./public /mnt/space/share
            """
        }
    }

    // publish page to cloud
    container("maymeow/minio-cli") {
        env["KEY"] = Secrets("key")
        env["SECRET"] = Secrets("secret")
        shellScript {
            content = """
                mc config host add cdn https://storage.googleapis.com ${'$'}KEY ${'$'}SECRET --api s3v4
                cd /mnt/space/share/public
                mc cp -r . cdn/www.themaymeow.com
                mc ls cdn/www.themaymeow.com
            """
        }
    }

    // clean
    container("alpine") {
        shellScript {
            content = "rm -r ./public /mnt/space/share/public"
        }
    }
}


それで、あなたはどう思いますか?