test-action-debian-package/main.js
Dawid Dziurla d9becc67b6
update
2020-03-26 13:26:07 +01:00

109 lines
3.3 KiB
JavaScript

const core = require("@actions/core")
const exec = require("@actions/exec")
const firstline = require("firstline")
const path = require("path")
const fs = require("fs")
async function main() {
try {
const sourceDirectory = core.getInput("source_directory", { required: true })
const artifactsDirectory = core.getInput("artifacts_directory", { required: true })
const os = core.getInput("os", { required: true })
const workspaceDirectory = process.cwd()
const file = path.join(workspaceDirectory, sourceDirectory, "debian/changelog")
const changelog = await firstline(file)
const regex = /^(?<package>.+) \((?<version>[^-]+)-?(?<revision>[^-]+)?\) (?<distribution>.+); (?<options>.+)$/
const match = changelog.match(regex)
const { package, version, revision, distribution } = match.groups
const container = package + "_" + version
const image = os + ":" + distribution.replace("UNRELEASED", "unstable")
fs.mkdirSync(artifactsDirectory, { recursive: true })
core.startGroup("Create container")
await exec.exec("docker", [
"create",
"--name", container,
"--volume", workspaceDirectory + ":" + workspaceDirectory,
"--workdir", path.join(workspaceDirectory, sourceDirectory),
"--tty",
image,
"sleep", "inf"
])
core.endGroup()
core.startGroup("Start container")
await exec.exec("docker", [
"start",
container
])
core.endGroup()
if (revision) {
core.startGroup("Create tarball")
await exec.exec("docker", [
"exec",
container,
"tar",
"--exclude-vcs",
"--exclude", "./debian",
"--transform", `s/^\./${package}-${version}/`,
"-cvzf", `../${package}_${version}.orig.tar.gz`,
"./"
])
core.endGroup()
}
core.startGroup("Update packages list")
await exec.exec("docker", [
"exec",
container,
"apt-get", "update"
])
core.endGroup()
core.startGroup("Install development packages")
await exec.exec("docker", [
"exec",
container,
"apt-get", "install", "-y", "dpkg-dev", "debhelper"
])
core.endGroup()
core.startGroup("Install build dependencies")
await exec.exec("docker", [
"exec",
container,
"apt-get", "build-dep", "-y", "./"
])
core.endGroup()
core.startGroup("Build package")
await exec.exec("docker", [
"exec",
container,
"dpkg-buildpackage", "-tc"
])
core.endGroup()
core.startGroup("Copy artifacts")
await exec.exec("docker", [
"exec",
container,
"find",
"..",
"-maxdepth", "1",
"-name", `${package}_${version}*.*`,
"-type", "f",
"-print",
"-exec", "cp", "{}", artifactsDirectory, ";"
])
core.endGroup()
} catch (error) {
core.setFailed(error.message)
}
}
main()