mirror of
https://github.com/apple/pkl.git
synced 2026-01-11 22:30:54 +01:00
- Update google-java-format to a version compatible with JDK 21 and run "gw spotlessApply". - Fix wrong test assumption JavaCodeGenerator writes a properties file using java.util.Properties, which doesn't guarantee order of entries. - Fix most deprecation warnings - Add CI job for JDK 21
216 lines
5.4 KiB
Groovy
216 lines
5.4 KiB
Groovy
//===----------------------------------------------------------------------===//
|
|
// 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.1.0#/PklCI.pkl"
|
|
|
|
import "jobs/BuildNativeJob.pkl"
|
|
import "jobs/GradleCheckJob.pkl"
|
|
import "jobs/DeployJob.pkl"
|
|
import "jobs/SimpleGradleJob.pkl"
|
|
|
|
local prbJobs: Listing<String> = (gradleCheckJobs.keys.toListing()) {
|
|
"check-patch-file"
|
|
}
|
|
|
|
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"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// TODO: remove me once policy allows these jobs without approval
|
|
circleCi {
|
|
workflows {
|
|
["release-branch"] {
|
|
jobs = new Listing<*Mapping<String, WorkflowJob>|String> {
|
|
new {
|
|
["hold"] {
|
|
type = "approval"
|
|
}
|
|
}
|
|
new {
|
|
["pr-approval/authenticate"] {
|
|
context = "pkl-pr-approval"
|
|
}
|
|
}
|
|
for (job in super.jobs) {
|
|
job |> requireApproval
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// TODO: remove me once policy allows these jobs without approval
|
|
local requireApproval = (it: String|Mapping<String, WorkflowJob>) ->
|
|
if (it is String)
|
|
new Mapping<String, WorkflowJob> {
|
|
[it] {
|
|
requires { "hold" }
|
|
}
|
|
}
|
|
else
|
|
(it) {
|
|
[it.keys.first] {
|
|
requires { "hold" }
|
|
}
|
|
}
|
|
|
|
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 (_arch in List("amd64", "aarch64")) {
|
|
for (_os in List("macOS", "linux")) {
|
|
["pkl-cli-\(_os)-\(_arch)-\(_dist)"] {
|
|
arch = _arch
|
|
os = _os
|
|
isRelease = _dist == "release"
|
|
}
|
|
}
|
|
}
|
|
["pkl-cli-linux-alpine-amd64-\(_dist)"] {
|
|
arch = "amd64"
|
|
os = "linux"
|
|
musl = true
|
|
isRelease = _dist == "release"
|
|
}
|
|
}
|
|
}
|
|
|
|
local gradleCheckJobs: Mapping<String, GradleCheckJob> = new {
|
|
["gradle-check-jdk11"] {
|
|
javaVersion = "11.0"
|
|
isRelease = false
|
|
}
|
|
["gradle-check-jdk17"] {
|
|
javaVersion = "17.0"
|
|
isRelease = false
|
|
}
|
|
["gradle-check-jdk21"] {
|
|
javaVersion = "21.0"
|
|
isRelease = false
|
|
}
|
|
}
|
|
|
|
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 \
|
|
:pkl-gradle:compatibilityTestCandidate
|
|
"""#
|
|
}.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 pkl-cli/build/executable/*.build_artifacts.txt
|
|
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}" \
|
|
pkl-cli/build/executable/*
|
|
"""#
|
|
}
|
|
}
|
|
}
|
|
["check-patch-file"] {
|
|
docker {
|
|
new { image = "cimg/base:current" }
|
|
}
|
|
steps {
|
|
"checkout"
|
|
new RunStep {
|
|
// language=bash
|
|
command = #"""
|
|
git apply --reject patches/graalVm23.patch
|
|
"""#
|
|
}
|
|
}
|
|
resource_class = "small"
|
|
}
|
|
}
|