114 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
local pipeline(os, arch) = {
 | 
						|
  kind: "pipeline",
 | 
						|
  name: os + "/" + arch,
 | 
						|
  platform: {
 | 
						|
    "os": os,
 | 
						|
    "arch": arch,
 | 
						|
  },
 | 
						|
  steps: [{
 | 
						|
      name: "compile " + os + "/" + arch,
 | 
						|
      image: "golang:1.20.3-alpine3.17",
 | 
						|
      environment: {
 | 
						|
        "GOOS": os,
 | 
						|
        "GOARCH": arch,
 | 
						|
        "CGO_ENABLED": "0",
 | 
						|
      },
 | 
						|
      commands: [
 | 
						|
        'go build -ldflags "-s -w -X main.version=${DRONE_TAG##v}" -trimpath -o release/' + os + "/" + arch + "/ubnt-freifunk-map-api .",
 | 
						|
        "tar -cvzf release/ubnt-freifunk-map-api_"+ os + "-" + arch + ".tar.gz -C release/" + os + "/" + arch + " ubnt-freifunk-map-api" 
 | 
						|
      ],
 | 
						|
    },
 | 
						|
    {
 | 
						|
      name: "gitea_release " + os + "/" + arch,
 | 
						|
      image: "plugins/gitea-release",
 | 
						|
      settings: {
 | 
						|
        api_key: { "from_secret": "gitea_api_key" },
 | 
						|
        base_url: "https://git.freifunk-rhein-sieg.net",
 | 
						|
        files: "release/*.tar.gz"
 | 
						|
      },
 | 
						|
      when: {
 | 
						|
        event: "tag"
 | 
						|
      },
 | 
						|
    },
 | 
						|
    {
 | 
						|
      name: "upload to docker hub " + os + "/" + arch,
 | 
						|
      image: "plugins/docker:" + os + "-" + arch,
 | 
						|
      settings: {
 | 
						|
        repo: "git.freifunk-rhein-sieg.net/freifunk-froisdorf/ubnt-freifunk-map-api",
 | 
						|
        registry: "git.freifunk-rhein-sieg.net",
 | 
						|
        username: { "from_secret": "docker_username" },
 | 
						|
        password: { "from_secret": "docker_password" },
 | 
						|
        auto_tag: true,
 | 
						|
        auto_tag_suffix: os + "-" + arch
 | 
						|
      },
 | 
						|
      when: {
 | 
						|
        event: "tag"
 | 
						|
      },
 | 
						|
    },
 | 
						|
  ],
 | 
						|
};
 | 
						|
 | 
						|
local manifest() = {
 | 
						|
  kind: "pipeline",
 | 
						|
  type: "docker",
 | 
						|
  name: "manifest",
 | 
						|
  depends_on: ["linux/amd64"],
 | 
						|
  when: {
 | 
						|
    event: "tag"
 | 
						|
  },
 | 
						|
 | 
						|
  steps: [
 | 
						|
    {
 | 
						|
      name: "publish",
 | 
						|
      image: "plugins/manifest",
 | 
						|
      settings: {
 | 
						|
        auto_tag: true,
 | 
						|
        ignore_missing: true,
 | 
						|
        spec: "manifest.yml",
 | 
						|
        username: { "from_secret": "docker_username" },
 | 
						|
        password: { "from_secret": "docker_password" },
 | 
						|
      },
 | 
						|
      when: {
 | 
						|
        event: "tag"
 | 
						|
      },
 | 
						|
    },
 | 
						|
  ],
 | 
						|
};
 | 
						|
 | 
						|
local validateJSON() = {
 | 
						|
  kind: "pipeline",
 | 
						|
  type: "docker",
 | 
						|
  name: "validate json",
 | 
						|
  when: {
 | 
						|
    event: "push"
 | 
						|
  },
 | 
						|
 | 
						|
  steps: [
 | 
						|
    {
 | 
						|
      name: "validate ucDevices",
 | 
						|
      image: "fftdf/docker-json-validate",
 | 
						|
      commands: [
 | 
						|
        "jsonlint ucDevices.json"
 | 
						|
      ],
 | 
						|
      when: {
 | 
						|
        event: "push"
 | 
						|
      },
 | 
						|
    },
 | 
						|
    {
 | 
						|
      name: "validate Devices",
 | 
						|
      image: "fftdf/docker-json-validate",
 | 
						|
      commands: [
 | 
						|
        "jsonlint devices.json",
 | 
						|
      ],
 | 
						|
      when: {
 | 
						|
        event: "push"
 | 
						|
      },
 | 
						|
    },
 | 
						|
  ],
 | 
						|
};
 | 
						|
 | 
						|
[
 | 
						|
  pipeline("linux", "amd64"),
 | 
						|
  // pipeline("linux", "arm64"),
 | 
						|
  manifest()
 | 
						|
] |