Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
a9a08c3855 | |||
9ad6913340 | |||
1dd8cf04c9 |
@ -29,4 +29,4 @@ jobs:
|
||||
|
||||
- name: Print Output
|
||||
id: output
|
||||
run: echo "${{ steps.test-action.outputs.go-version }}"
|
||||
run: echo "${{ steps.test-action.outputs.version }}"
|
||||
|
BIN
dist/index.js
generated
vendored
BIN
dist/index.js
generated
vendored
Binary file not shown.
BIN
dist/index.js.map
generated
vendored
BIN
dist/index.js.map
generated
vendored
Binary file not shown.
@ -5,9 +5,6 @@ import os from 'os'
|
||||
const DownloadBaseUrl = 'https://joylink.club/public-files/docker/'
|
||||
|
||||
export function getFileName(version: string, arch = os.arch()): string {
|
||||
if (!version) {
|
||||
version = 'v0.13.1'
|
||||
}
|
||||
return `buildx-${version}.linux-${arch}`
|
||||
}
|
||||
|
||||
@ -18,7 +15,7 @@ export function getFileName(version: string, arch = os.arch()): string {
|
||||
*/
|
||||
export async function download(fileName: string): Promise<string> {
|
||||
const downloadUrl = `${DownloadBaseUrl}${fileName}`
|
||||
core.info(`Downloading go from ${downloadUrl}`)
|
||||
core.info(`Downloading docker buildx from ${downloadUrl}`)
|
||||
const downloadPath = await tc.downloadTool(downloadUrl)
|
||||
return downloadPath
|
||||
}
|
||||
|
47
src/main.ts
47
src/main.ts
@ -1,14 +1,12 @@
|
||||
import * as core from '@actions/core'
|
||||
import * as io from '@actions/io'
|
||||
import * as cache from '@actions/cache'
|
||||
import os from 'os'
|
||||
import fs from 'fs'
|
||||
import path from 'path'
|
||||
import cp from 'child_process'
|
||||
import { getFileName, download } from './install'
|
||||
|
||||
const BinDir = '/denv/docker/bin'
|
||||
const BinName = 'buildx'
|
||||
// const BinDir = '/denv/docker-plugin'
|
||||
// const BinName = 'buildx'
|
||||
|
||||
/**
|
||||
* The main function for the action.
|
||||
@ -18,8 +16,7 @@ export async function run(): Promise<void> {
|
||||
try {
|
||||
// 获取输入的version
|
||||
const version: string = resolveVersionInput()
|
||||
// Debug logs are only output if the `ACTIONS_STEP_DEBUG` secret is true
|
||||
core.debug(`The input version is: ${version}`)
|
||||
core.debug(`The version is: ${version}`)
|
||||
// 获取输入的architecture
|
||||
let arch = core.getInput('architecture')
|
||||
if (!arch) {
|
||||
@ -30,12 +27,16 @@ export async function run(): Promise<void> {
|
||||
}
|
||||
// 构建文件名
|
||||
const dfn = getFileName(version, arch)
|
||||
if (!fs.existsSync(BinDir)) {
|
||||
fs.mkdirSync(BinDir, { recursive: true })
|
||||
const dest = path.join(os.homedir(), '.docker')
|
||||
const pluginsDir: string = path.join(dest, 'cli-plugins')
|
||||
if (!fs.existsSync(pluginsDir)) {
|
||||
fs.mkdirSync(pluginsDir, { recursive: true })
|
||||
}
|
||||
const cachePath = path.join(BinDir, BinName)
|
||||
const binName = 'docker-buildx'
|
||||
const pluginPath: string = path.join(pluginsDir, binName)
|
||||
// const cachePath = path.join(BinDir, BinName)
|
||||
// 尝试从缓存中恢复
|
||||
const rcr = await cache.restoreCache([cachePath], dfn)
|
||||
const rcr = await cache.restoreCache([pluginPath], dfn)
|
||||
if (!rcr) {
|
||||
core.info(`Cache not found for input key: ${dfn}`)
|
||||
// 缓存中没有找到,下载解压安装
|
||||
@ -43,23 +44,24 @@ export async function run(): Promise<void> {
|
||||
if (!filepath) {
|
||||
throw new Error(`Failed to download ${dfn}`)
|
||||
}
|
||||
core.info(`copy file from ${filepath} to ${cachePath}`)
|
||||
fs.copyFileSync(filepath, cachePath)
|
||||
core.info(`Success Installed to ${cachePath}`)
|
||||
core.info(`copy file from ${filepath} to ${pluginPath}`)
|
||||
fs.copyFileSync(filepath, pluginPath)
|
||||
core.info(`Success Installed docker-cli-plugin to ${pluginPath}`)
|
||||
// 保存到缓存
|
||||
await cache.saveCache([cachePath], dfn)
|
||||
await cache.saveCache([pluginPath], dfn)
|
||||
}
|
||||
// 设置可执行权限
|
||||
fs.chmodSync(cachePath, '0755')
|
||||
// 将bin目录添加到PATH
|
||||
core.addPath(BinDir)
|
||||
fs.chmodSync(pluginPath, '0755')
|
||||
// // 将bin目录添加到PATH
|
||||
// core.addPath(BinDir)
|
||||
// 测试输出版本
|
||||
const binPath = await io.which(BinName)
|
||||
const binVersion = (cp.execSync(`${binPath} version`) || '').toString()
|
||||
core.info(`${binPath} version cmd result is: ${binVersion}`)
|
||||
// const binPath = await io.which(BinName)
|
||||
// const cmd = `docker buildx version`
|
||||
// const binVersion = (cp.execSync(`${cmd}`) || '').toString()
|
||||
// core.info(`${cmd} version cmd result is: ${binVersion}`)
|
||||
|
||||
// 设置输出参数
|
||||
core.setOutput('version', binVersion)
|
||||
core.setOutput('version', version)
|
||||
} catch (error) {
|
||||
// Fail the workflow run if an error occurs
|
||||
if (error instanceof Error) core.setFailed(error.message)
|
||||
@ -71,6 +73,7 @@ function resolveVersionInput(): string {
|
||||
|
||||
if (version) {
|
||||
return version
|
||||
} else {
|
||||
return 'v0.13.1'
|
||||
}
|
||||
throw new Error(`没有指定版本`)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user