Compare commits

...

3 commits
v1.0.0 ... main

4 changed files with 27 additions and 5 deletions

View file

@ -21,6 +21,10 @@ This is a fork of [wirgen/portainer-stack-redeploy-action](https://github.com/wi
ID of endpoint (environment). Required if your stack is not in local environment
### `repositoryAuthentication`
Use stored credentials to pull docker-compose.yaml from git repository. When credentials are stored, but this is not set to `true`, the action will fail
### `environment`
Environment variables to set on the stack. When omitted, all existing variables will be cleared from the stack. Must be input as a JSON String; one array of objects each with the keys `name` and `value`

View file

@ -16,12 +16,16 @@ inputs:
description: 'Endpoint ID'
required: false
default: ''
repositoryAuthentication:
description: 'Use stored credentials to pull docker-compose.yaml from git repository'
required: false
default: false
environment:
description: 'Environment variables'
required: false
runs:
using: 'node16'
using: 'node20'
main: 'dist/index.js'
branding:

11
dist/index.js vendored
View file

@ -2819,10 +2819,13 @@ var __webpack_exports__ = {};
(() => {
const core = __nccwpck_require__(186)
console.log('Preparing stack deployment')
let portainerUrl = core.getInput("portainerUrl")
const accessToken = core.getInput("accessToken")
const stackId = parseInt(core.getInput("stackId"))
const endpointId = parseInt(core.getInput("endpointId"))
const repositoryAuthentication = core.getInput("repositoryAuthentication")
const environmentVariables = core.getInput("environment")
if (isNaN(stackId)) {
@ -2853,14 +2856,17 @@ const postDataObject = {
pullImage: true,
}
console.dir(environmentVariables)
if (repositoryAuthentication === true || repositoryAuthentication === 'true') {
postDataObject.repositoryAuthentication = true
}
if (environmentVariables !== undefined && environmentVariables !== "") {
postDataObject.env = JSON.parse(environmentVariables)
}
const postData = JSON.stringify(postDataObject)
console.dir(postData)
console.log(`Deploying stack ${stackId} on portainer host ${portainerUrl} ${postDataObject.env ? 'With environment variables ' + JSON.stringify(postDataObject.env) : 'clearing all environment variables.'}`)
const req = client.request(`${portainerUrl}/api/stacks/${stackId}/git/redeploy` + (isNaN(endpointId) ? "" : `?endpointId=${endpointId}`), {
method: "PUT",
@ -2874,6 +2880,7 @@ const req = client.request(`${portainerUrl}/api/stacks/${stackId}/git/redeploy`
core.setFailed(res.statusMessage)
process.exit(2)
}
console.log('Stack deployed successfully')
})
.on("error", (error) => {
core.setFailed(error.message)

View file

@ -1,9 +1,12 @@
const core = require("@actions/core")
console.log('Preparing stack deployment')
let portainerUrl = core.getInput("portainerUrl")
const accessToken = core.getInput("accessToken")
const stackId = parseInt(core.getInput("stackId"))
const endpointId = parseInt(core.getInput("endpointId"))
const repositoryAuthentication = core.getInput("repositoryAuthentication")
const environmentVariables = core.getInput("environment")
if (isNaN(stackId)) {
@ -34,14 +37,17 @@ const postDataObject = {
pullImage: true,
}
console.dir(environmentVariables)
if (repositoryAuthentication === true || repositoryAuthentication === 'true') {
postDataObject.repositoryAuthentication = true
}
if (environmentVariables !== undefined && environmentVariables !== "") {
postDataObject.env = JSON.parse(environmentVariables)
}
const postData = JSON.stringify(postDataObject)
console.dir(postData)
console.log(`Deploying stack ${stackId} on portainer host ${portainerUrl} ${postDataObject.env ? 'With environment variables ' + JSON.stringify(postDataObject.env) : 'clearing all environment variables.'}`)
const req = client.request(`${portainerUrl}/api/stacks/${stackId}/git/redeploy` + (isNaN(endpointId) ? "" : `?endpointId=${endpointId}`), {
method: "PUT",
@ -55,6 +61,7 @@ const req = client.request(`${portainerUrl}/api/stacks/${stackId}/git/redeploy`
core.setFailed(res.statusMessage)
process.exit(2)
}
console.log('Stack deployed successfully')
})
.on("error", (error) => {
core.setFailed(error.message)