mirror of
https://github.com/apple/pkl.git
synced 2026-01-11 22:30:54 +01:00
173 lines
4.6 KiB
Plaintext
173 lines
4.6 KiB
Plaintext
//===----------------------------------------------------------------------===//
|
|
// Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// https://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
//===----------------------------------------------------------------------===//
|
|
// File gets rendered to .circleci/config.yml via git hook.
|
|
amends "package://pkg.pkl-lang.org/pkl-project-commons/pkl.impl.circleci@1.2.1#/PklCI.pkl"
|
|
|
|
import "jobs/BuildNativeJob.pkl"
|
|
import "jobs/DeployJob.pkl"
|
|
import "jobs/GradleCheckJob.pkl"
|
|
import "jobs/SimpleGradleJob.pkl"
|
|
|
|
local prbJobs: Listing<String> = gradleCheckJobs.keys.toListing()
|
|
|
|
local buildAndTestJobs = (prbJobs) {
|
|
"bench"
|
|
"gradle-compatibility"
|
|
...buildNativeJobs.keys.filter((it) -> it.endsWith("snapshot"))
|
|
}
|
|
|
|
local releaseJobs = (prbJobs) {
|
|
"bench"
|
|
"gradle-compatibility"
|
|
...buildNativeJobs.keys.filter((it) -> it.endsWith("release"))
|
|
}
|
|
|
|
prb {
|
|
jobs = prbJobs
|
|
}
|
|
|
|
main {
|
|
jobs {
|
|
...buildAndTestJobs
|
|
new {
|
|
["deploy-snapshot"] {
|
|
requires = buildAndTestJobs
|
|
context = "pkl-maven-release"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
release {
|
|
jobs {
|
|
...releaseJobs
|
|
// do GitHub release first because we can overwrite the tag.
|
|
// publishing to Maven Central is final.
|
|
new {
|
|
["github-release"] {
|
|
requires = releaseJobs
|
|
context = "pkl-github-release"
|
|
}
|
|
}
|
|
new {
|
|
["deploy-release"] {
|
|
requires { "github-release" }
|
|
context = "pkl-maven-release"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
releaseBranch {
|
|
jobs = releaseJobs
|
|
}
|
|
|
|
triggerDocsBuild = "both"
|
|
|
|
triggerPackageDocsBuild = "release"
|
|
|
|
local buildNativeJobs: Mapping<String, BuildNativeJob> = new {
|
|
for (_dist in List("release", "snapshot")) {
|
|
for (_project in List("pkl-cli", "pkl-doc")) {
|
|
for (_arch in List("amd64", "aarch64")) {
|
|
for (_os in List("macOS", "linux")) {
|
|
["\(_project)-\(_os)-\(_arch)-\(_dist)"] {
|
|
arch = _arch
|
|
os = _os
|
|
isRelease = _dist == "release"
|
|
project = _project
|
|
}
|
|
}
|
|
}
|
|
["\(_project)-linux-alpine-amd64-\(_dist)"] {
|
|
arch = "amd64"
|
|
os = "linux"
|
|
musl = true
|
|
isRelease = _dist == "release"
|
|
project = _project
|
|
}
|
|
["\(_project)-windows-amd64-\(_dist)"] {
|
|
arch = "amd64"
|
|
os = "windows"
|
|
isRelease = _dist == "release"
|
|
project = _project
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
local gradleCheckJobs: Mapping<String, GradleCheckJob> = new {
|
|
["gradle-check"] {
|
|
javaVersion = "21.0"
|
|
isRelease = false
|
|
os = "linux"
|
|
}
|
|
["gradle-check-windows"] {
|
|
javaVersion = "21.0"
|
|
isRelease = false
|
|
os = "windows"
|
|
}
|
|
}
|
|
|
|
jobs {
|
|
for (jobName, job in buildNativeJobs) {
|
|
[jobName] = job.job
|
|
}
|
|
for (jobName, job in gradleCheckJobs) {
|
|
[jobName] = job.job
|
|
}
|
|
["bench"] = new SimpleGradleJob { command = "bench:jmh" }.job
|
|
["gradle-compatibility"] =
|
|
new SimpleGradleJob {
|
|
name = "gradle compatibility"
|
|
command =
|
|
#"""
|
|
:pkl-gradle:build \
|
|
:pkl-gradle:compatibilityTestReleases
|
|
"""#
|
|
}.job
|
|
["deploy-snapshot"] = new DeployJob { command = "publishToSonatype" }.job
|
|
["deploy-release"] =
|
|
new DeployJob {
|
|
isRelease = true
|
|
command = "publishToSonatype closeAndReleaseSonatypeStagingRepository"
|
|
}.job
|
|
["github-release"] {
|
|
docker {
|
|
new { image = "maniator/gh:v2.40.1" }
|
|
}
|
|
steps {
|
|
new AttachWorkspaceStep { at = "." }
|
|
new RunStep {
|
|
name = "Publish release on GitHub"
|
|
command =
|
|
#"""
|
|
# exclude build_artifacts.txt from publish
|
|
rm -f */build/executable/*.build_artifacts.txt
|
|
find */build/executable/* -type d | xargs rm -rf
|
|
gh release create "${CIRCLE_TAG}" \
|
|
--title "${CIRCLE_TAG}" \
|
|
--target "${CIRCLE_SHA1}" \
|
|
--verify-tag \
|
|
--notes "Release notes: https://pkl-lang.org/main/current/release-notes/changelog.html#release-${CIRCLE_TAG}" \
|
|
--repo "${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}" \
|
|
*/build/executable/*
|
|
"""#
|
|
}
|
|
}
|
|
}
|
|
}
|