Git Product home page Git Product logo

setup-packer's Introduction

GitHub Action: setup-packer

The hashicorp/setup-packer Action sets up the Packer CLI in your GitHub Actions workflow by adding the packer binary to PATH.

GitHub Action: Self-Test

Table of Contents

Requirements

This GitHub Actions supports all commands that are available in the packer CLI.

The build command may require access to provider-specific credentials.

Other environment variables (such as PACKER_LOG) may be set as normal and will be picked up accordingly.

Usage

Create a GitHub Actions Workflow file (e.g.: .github/workflows/packer.yml):

name: packer

on:
  push:

env:
  PRODUCT_VERSION: "1.10.0" # or: "latest"

jobs:
  packer:
    runs-on: ubuntu-latest
    name: Run Packer
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup `packer`
        uses: hashicorp/setup-packer@main
        id: setup
        with:
          version: ${{ env.PRODUCT_VERSION }}

      - name: Run `packer init`
        id: init
        run: "packer init ./image.pkr.hcl"

      - name: Run `packer validate`
        id: validate
        run: "packer validate ./image.pkr.hcl"

In the above example, the following definitions have been set.

  • The event trigger has been set to push. For a complete list, see Events that trigger workflows.
  • The origin of this GitHub Action has been set as hashicorp/setup-packer@main. For newer versions, see the Releases.
  • The version of packer to set up has been set as 1.10.0. For a complete list, see releases.hashicorp.com.
  • The Packer manifest to interact with has been set as ./image.pkr.hcl.

These definitions may require updating to suit your deployment, such as specifying self-hosted runners.

Additionally, you may configure outputs to consume return values from the Action's operations.

Inputs

This section contains a list of all inputs that may be set for this Action.

  • version - The version of packer to install. Defaults to latest if unset.

Note

To retrieve the latest version, this GitHub Action polls the HashiCorp Releases API and finds the latest released version of Packer that isn't marked as a pre-release (is_prerelease).

Outputs

This section contains a list of all outputs that can be consumed from this Action.

  • version - The version of packer that was installed.

Integrating with HCP Packer

To integrate with HCP Packer, add your HCP Client ID and HCP Client secret as environment variables to the Packer build call.

We add an HCP_PACKER_BUILD_FINGERPRINT in this example that is based on the workflow run ID, that way it is always unique

We recommend storing these in GitHub Actions Secrets (as opposed to plain-text).

For more information on using HCP Packer, see the Getting Started tutorial.

name: hcp-packer

on:
  - push

jobs:
  hcp-packer:
    runs-on: ubuntu-latest
    name: Run Packer
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup `packer`
        uses: hashicorp/setup-packer@main
        id: setup
        with:
          version: "latest"

      - name: Run `packer init`
        id: init
        run: "packer init ./image.pkr.hcl"

      - name: Run `packer validate`
        id: validate
        run: "packer validate ./image.pkr.hcl"

      - name: Build Artifact
        run: packer build -color=false -on-error=abort ./image.pkr.hcl
        env:
          HCP_CLIENT_ID: ${{ secrets.HCP_CLIENT_ID }}
          HCP_CLIENT_SECRET: ${{ secrets.HCP_CLIENT_SECRET }}
          HCP_PACKER_BUILD_FINGERPRINT: "run.id.${{ github.run_id }}.run.attempt.${{ github.run_attempt }}"

Author Information

This GitHub Action is maintained by the contributors listed on GitHub.

The original code of this repository is based on work done by Matthew Sanabria as part of the setup-packer GitHub Action.

License

Licensed under the Apache License, Version 2.0 (the "License").

You may obtain a copy of the License at 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.

setup-packer's People

Contributors

ahanoff avatar askldjd avatar attesch avatar dependabot[bot] avatar devsecfranklin avatar docemmetbrown avatar frankjl avatar hashicorp-copywrite[bot] avatar hashicorp-tsccr[bot] avatar hexedpackets avatar jasoniamaunixadmin avatar jengoldstrich avatar krewenki avatar ksatirli avatar kuldeeprishi avatar lomar92 avatar palfrey avatar sylviamoss avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

setup-packer's Issues

Broken github action for latest ?

Hello there,
I maintain the LaluBuntu linux distro (offensive work), and it's relying on packer & github actions for daily builds (docker mostly). We live on latest as it's a rolling distro, and this morning, things broke in the latest github action, any chance you could have a look ? :)
Cheers ! ๐ŸŒน

Expected Behavior

packer version should work :)

Current Behavior

packer version doesn't work anymore :(

image

Steps to Reproduce

Simply add the packer setup workflow

[...]
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup `packer`
        uses: hashicorp/setup-packer@main
        id: setup
        env:
          PACKER_LOG: "0"
          PRODUCT_VERSION: latest

Environment

Have a nice day ! ๐ŸŒˆ

Fixed packer version, 1.7.8

Currently this action uses Packer 1.7.8, which at time of writing is 8 months old and does not include any of the improvements made in March with Packer 1.8.x. This has led to our CI pipelines preventing us from adopting Packer 1.8.x features.

Could we see this Action updated with the latest Packer version? And/or can we be allowed to specify which version of Packer to be used?

Expected Behavior

The configuration is valid.

Current Behavior

The "env" property was introduced in Packer 1.8.

Error: Failed preparing provisioner-block "shell" ""

  on packer.pkr.hcl line 39:
  (source code not available)

packer.pkr.hcl:40,5-8: Unsupported argument; An argument named "env" is not
expected here.

Steps to Reproduce

Use a Packer 1.8 feature in any Packer definition, such as env in a Shell provisioner.

Set up this Action in your CI pipeline. For example:

    steps:
      - uses: actions/checkout@v2

      - name: Validate Template
        uses: hashicorp/packer-github-actions@master
        with:
          command: validate
          target: packer.pkr.hcl
          working_directory: packer

Use version from packerfile

It would be nice if the action can parse the required_version from the packerfile and use that to select the version.

This prevents duplication where we have the version set in both the packerfile and setup-packer's version input.

Plugin host rate limited the plugin getter

Expected Behavior

Packer should not throw rate limit error.

Current Behavior

During packer init the packer is trying to pull the plugins but it says Plugin host rate limited the plugin getter. I'm using GitHub actions and have no control over the host.

Steps to Reproduce

Create a GitHub action to run packer and it's coming intermittently.

default value for `target` is not `.`

The docs state that if you don't provide a target that it will default to ., however it's defaulting to artifacts.pkr.json

Expected Behavior

Either the docs need to be updated to show it's not an optional input, or the default needs to be corrected.

Current Behavior

I get an error stating artfacts.pkr.json not found.

Steps to Reproduce

jobs:
  validate:
    runs-on: ubuntu-20.04
    name: Packer Validate
    steps:
      - uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579
      - name: Validate Template
        uses: hashicorp/packer-github-actions@2ef5cf325f2beace99a1742903eb52542765c08f
        with:
          command: validate
          arguments: -syntax-only

Results in:

2022-07-07T18:33:39.7264837Z ##[group]Run hashicorp/packer-github-actions@2ef5cf325f2beace99a1742903eb52542765c08f
2022-07-07T18:33:39.7265123Z with:
2022-07-07T18:33:39.7265299Z   command: validate
2022-07-07T18:33:39.7265480Z   arguments: -syntax-only
2022-07-07T18:33:39.7265693Z   target: artifacts.pkr.json
2022-07-07T18:33:39.7265889Z ##[endgroup]
2022-07-07T18:33:39.7435546Z ##[command]/usr/bin/docker run --name cd98fbeb5b0b74e3c418fa6b6a148096b039b_20d32f --label 4cd98f --workdir /github/workspace --rm {SNIP}
2022-07-07T18:33:40.1234057Z Failed to parse template: open artifacts.pkr.json: no such file or directory
2022-07-07T18:33:40.6843913Z Post job cleanup.

m2 mac-mini self-hosted fails to see parallels plugin

Expected Behavior

packer build to provision server and start build process

Current Behavior

When using the [email protected] or main packer is installed and packer init installs the parallels plugin even though the server already has the plugin. Then during the build job it fails with an error saying that parallels plugin is not found and that packer init needs to be ran. Packer is also locally installed on the self-hosted runner through home brew and If I remove the setup-packer action step the build runs as expected. The same job setup is also done on an Intel Mac Mini without any issues.

Here's current output of job run

Setup Packer Step >
Run hashicorp/[email protected]
  with:
    version: latest
  
Installing packer:latest and adding it to GitHub Actions Path
Downloading packer_1.8.6_darwin_arm64.zip.
/usr/bin/unzip -o -q /Users/coreyhemminger/actions-runner3/_work/_temp/packer_1.8.6_darwin_arm64.zip
packer:latest added to path

Packer Init Step >
Run packer init -upgrade packer_templates
  packer init -upgrade packer_templates
  shell: /bin/bash -e {0}
  env:
    PACKER_GITHUB_API_TOKEN: ***
Installed plugin github.com/hashicorp/parallels v1.0.3 in "/Users/coreyhemminger/.config/packer/plugins/github.com/hashicorp/parallels/packer-plugin-parallels_v1.0.3_x5.0_darwin_arm64"

Packer Build Step >
Run packer build -timestamp-ui -only=virtualbox-iso.vm -var-file=os_pkrvars/$(echo almalinux-8 | cut -d "-" -f 1)/"almalinux-8-aarch64.pkrvars.hcl" packer_templates
  packer build -timestamp-ui -only=virtualbox-iso.vm -var-file=os_pkrvars/$(echo almalinux-8 | cut -d "-" -f 1)/"almalinux-8-aarch64.pkrvars.hcl" packer_templates
  shell: /bin/bash -e {0}
  
Error: no plugin installed for github.com/hashicorp/parallels >= 1.0.1

Did you run packer init for this project ?


Error: Process completed with exit code 1.

Steps to Reproduce

M2 Mac Mini with self-hosted github actions runner installed and running as a service.
Homebrew install of Parallels, Virtualbox, Vmware-Fusion, qemu, packer
Clone of Bento project at github.com/chef/bento
Update ci.yml in .github > workflows directory to enable an arm build job
create a pr and watch job run

exec: "docker": executable file not found in $PATH

Expected Behavior

Packer build to succeed just like it does on my local machine

Current Behavior

Packer build always fails with the same error, despite Docker being available in the Github Actions VM

Steps to Reproduce

Github Actions Workflow:

name: Deployment

on:
  push:
    branches: main

jobs:
  deploy:
    needs: test
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: deployment
    steps:
      - uses: actions/checkout@v2

      - name: Initialise Packer
        uses: hashicorp/packer-github-actions@master
        with:
          command: init
          target: carto.pkr.hcl

      - name: Validate Packer Template
        uses: hashicorp/packer-github-actions@master
        with:
          command: validate
          arguments: -syntax-only
          target: carto.pkr.hcl

      - name: Check if Docker exists
        run: docker --version

      - name: Build and Push Container
        uses: hashicorp/packer-github-actions@master
        with:
          command: build
          arguments: "-color=false -on-error=abort"
          target: carto.pkr.hcl
        env:
          PACKER_LOG: 1

Output:

/usr/bin/docker run --name a33c12322f8a924574dc38fbec9262f3df46b_5ee040 --label 8a33c1 --workdir /github/workspace --rm -e TERRAFORM_CLI_PATH -e CLOUDSDK_METRICS_ENVIRONMENT -e GCLOUD_PROJECT -e GOOGLE_APPLICATION_CREDENTIALS -e PACKER_LOG -e INPUT_COMMAND -e INPUT_ARGUMENTS -e INPUT_TARGET -e INPUT_WORKING_DIRECTORY -e HOME -e GITHUB_JOB -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_REPOSITORY_OWNER -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RETENTION_DAYS -e GITHUB_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_SERVER_URL -e GITHUB_API_URL -e GITHUB_GRAPHQL_URL -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e GITHUB_ACTION_REPOSITORY -e GITHUB_ACTION_REF -e GITHUB_PATH -e GITHUB_ENV -e RUNNER_OS -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -e ACTIONS_RUNTIME_URL -e ACTIONS_RUNTIME_TOKEN -e ACTIONS_CACHE_URL -e GITHUB_ACTIONS=true -e CI=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/home/runner/work/_temp/_github_home":"/github/home" -v "/home/runner/work/_temp/_github_workflow":"/github/workflow" -v "/home/runner/work/_temp/_runner_file_commands":"/github/file_commands" -v "/home/runner/work/carto/carto":"/github/workspace" 8a33c1:2322f8a924574dc38fbec9262f3df46b
2021/05/31 17:13:28 [INFO] Packer version: 1.7.0 [go1.15.8 linux amd64]
2021/05/31 17:13:28 [TRACE] discovering plugins in /bin
2021/05/31 17:13:28 [TRACE] discovering plugins in /github/home/.packer.d/plugins
2021/05/31 17:13:28 [TRACE] discovering plugins in .
2021/05/31 17:13:28 [INFO] PACKER_CONFIG env var not set; checking the default config file path
2021/05/31 17:13:28 [INFO] PACKER_CONFIG env var set; attempting to open config file: /github/home/.packerconfig
2021/05/31 17:13:28 [WARN] Config file doesn't exist: /github/home/.packerconfig
2021/05/31 17:13:28 [INFO] Setting cache directory: /github/workspace/packer_cache
Running in background, not using a TTY
2021/05/31 17:13:28 [TRACE] validateValue: not active for workdir, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for port, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for project-id, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for workdir, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for port, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for project-id, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for workdir, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for port, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for project-id, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for workdir, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for port, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for project-id, so skipping
2021/05/31 17:13:28 [TRACE] listing potential installations for "github.com/hashicorp/docker" that match ">= 0.0.7". plugingetter.ListInstallationsOptions{FromFolders:[]string{"/bin/packer", ".", "/github/home/.packer.d/plugins"}, BinaryInstallationOptions:plugingetter.BinaryInstallationOptions{APIVersionMajor:"5", APIVersionMinor:"0", OS:"linux", ARCH:"amd64", Ext:"", Checksummers:[]plugingetter.Checksummer{plugingetter.Checksummer{Type:"sha256", Hash:(*sha256.digest)(0xc000042180)}}}}
2021/05/31 17:13:28 [TRACE] Found the following "github.com/hashicorp/docker" installations: [{/github/home/.packer.d/plugins/github.com/hashicorp/docker/packer-plugin-docker_v0.0.7_x5.0_linux_amd64 v0.0.7}]
2021/05/31 17:13:28 [INFO] found external [-packer-default-plugin-name-] builders from docker plugin
2021/05/31 17:13:28 [INFO] found external [import push save tag] post-processors from docker plugin
2021/05/31 17:13:28 [TRACE] validateValue: not active for workdir, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for port, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for project-id, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for workdir, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for port, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for project-id, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for project-id, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for workdir, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for port, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for workdir, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for port, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for project-id, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for workdir, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for port, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for project-id, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for workdir, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for port, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for project-id, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for workdir, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for port, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for project-id, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for project-id, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for workdir, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for port, so skipping
2021/05/31 17:13:28 [TRACE] Starting external plugin /github/home/.packer.d/plugins/github.com/hashicorp/docker/packer-plugin-docker_v0.0.7_x5.0_linux_amd64 start builder -packer-default-plugin-name-
2021/05/31 17:13:28 Starting plugin: /github/home/.packer.d/plugins/github.com/hashicorp/docker/packer-plugin-docker_v0.0.7_x5.0_linux_amd64 []string{"/github/home/.packer.d/plugins/github.com/hashicorp/docker/packer-plugin-docker_v0.0.7_x5.0_linux_amd64", "start", "builder", "-packer-default-plugin-name-"}
2021/05/31 17:13:28 Waiting for RPC address for: /github/home/.packer.d/plugins/github.com/hashicorp/docker/packer-plugin-docker_v0.0.7_x5.0_linux_amd64
2021/05/31 17:13:28 packer-plugin-docker_v0.0.7_x5.0_linux_amd64 plugin: 2021/05/31 17:13:28 Plugin address: unix /tmp/packer-plugin270514859
2021/05/31 17:13:28 Received unix RPC address for /github/home/.packer.d/plugins/github.com/hashicorp/docker/packer-plugin-docker_v0.0.7_x5.0_linux_amd64: addr is /tmp/packer-plugin270514859
2021/05/31 17:13:28 packer-plugin-docker_v0.0.7_x5.0_linux_amd64 plugin: 2021/05/31 17:13:28 Waiting for connection...
2021/05/31 17:13:28 packer-plugin-docker_v0.0.7_x5.0_linux_amd64 plugin: 2021/05/31 17:13:28 Serving a plugin connection...
2021/05/31 17:13:28 packer-plugin-docker_v0.0.7_x5.0_linux_amd64 plugin: 2021/05/31 17:13:28 [TRACE] starting builder -packer-default-plugin-name-
2021/05/31 17:13:28 [TRACE] validateValue: not active for workdir, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for port, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for project-id, so skipping
2021/05/31 17:13:28 [TRACE] Starting internal plugin packer-provisioner-file
2021/05/31 17:13:28 Starting plugin: /bin/packer []string{"/bin/packer", "plugin", "packer-provisioner-file"}
2021/05/31 17:13:28 Waiting for RPC address for: /bin/packer
2021/05/31 17:13:28 packer-provisioner-file plugin: [INFO] Packer version: 1.7.0 [go1.15.8 linux amd64]
2021/05/31 17:13:28 packer-provisioner-file plugin: [INFO] PACKER_CONFIG env var not set; checking the default config file path
2021/05/31 17:13:28 packer-provisioner-file plugin: [INFO] PACKER_CONFIG env var set; attempting to open config file: /github/home/.packerconfig
2021/05/31 17:13:28 packer-provisioner-file plugin: [WARN] Config file doesn't exist: /github/home/.packerconfig
2021/05/31 17:13:28 packer-provisioner-file plugin: [INFO] Setting cache directory: /github/workspace/packer_cache
2021/05/31 17:13:28 packer-provisioner-file plugin: args: []string{"packer-provisioner-file"}
2021/05/31 17:13:28 Received unix RPC address for /bin/packer: addr is /tmp/packer-plugin189403135
2021/05/31 17:13:28 packer-provisioner-file plugin: Plugin address: unix /tmp/packer-plugin189403135
2021/05/31 17:13:28 packer-provisioner-file plugin: Waiting for connection...
2021/05/31 17:13:28 packer-provisioner-file plugin: Serving a plugin connection...
2021/05/31 17:13:28 [TRACE] Starting internal plugin packer-provisioner-shell
2021/05/31 17:13:28 Starting plugin: /bin/packer []string{"/bin/packer", "plugin", "packer-provisioner-shell"}
2021/05/31 17:13:28 Waiting for RPC address for: /bin/packer
2021/05/31 17:13:28 packer-provisioner-shell plugin: [INFO] Packer version: 1.7.0 [go1.15.8 linux amd64]
2021/05/31 17:13:28 packer-provisioner-shell plugin: [INFO] PACKER_CONFIG env var not set; checking the default config file path
2021/05/31 17:13:28 packer-provisioner-shell plugin: [INFO] PACKER_CONFIG env var set; attempting to open config file: /github/home/.packerconfig
2021/05/31 17:13:28 packer-provisioner-shell plugin: [WARN] Config file doesn't exist: /github/home/.packerconfig
2021/05/31 17:13:28 packer-provisioner-shell plugin: [INFO] Setting cache directory: /github/workspace/packer_cache
2021/05/31 17:13:28 packer-provisioner-shell plugin: args: []string{"packer-provisioner-shell"}
2021/05/31 17:13:28 packer-provisioner-shell plugin: Plugin address: unix /tmp/packer-plugin286216968
2021/05/31 17:13:28 packer-provisioner-shell plugin: Waiting for connection...
2021/05/31 17:13:28 Received unix RPC address for /bin/packer: addr is /tmp/packer-plugin286216968
2021/05/31 17:13:28 packer-provisioner-shell plugin: Serving a plugin connection...
2021/05/31 17:13:28 [TRACE] Starting internal plugin packer-provisioner-shell
2021/05/31 17:13:28 Starting plugin: /bin/packer []string{"/bin/packer", "plugin", "packer-provisioner-shell"}
2021/05/31 17:13:28 Waiting for RPC address for: /bin/packer
2021/05/31 17:13:28 packer-provisioner-shell plugin: [INFO] Packer version: 1.7.0 [go1.15.8 linux amd64]
2021/05/31 17:13:28 packer-provisioner-shell plugin: [INFO] PACKER_CONFIG env var not set; checking the default config file path
2021/05/31 17:13:28 packer-provisioner-shell plugin: [INFO] PACKER_CONFIG env var set; attempting to open config file: /github/home/.packerconfig
2021/05/31 17:13:28 packer-provisioner-shell plugin: [WARN] Config file doesn't exist: /github/home/.packerconfig
2021/05/31 17:13:28 packer-provisioner-shell plugin: [INFO] Setting cache directory: /github/workspace/packer_cache
2021/05/31 17:13:28 packer-provisioner-shell plugin: args: []string{"packer-provisioner-shell"}
2021/05/31 17:13:28 packer-provisioner-shell plugin: Plugin address: unix /tmp/packer-plugin260885246
2021/05/31 17:13:28 Received unix RPC address for /bin/packer: addr is /tmp/packer-plugin260885246
2021/05/31 17:13:28 packer-provisioner-shell plugin: Waiting for connection...
2021/05/31 17:13:28 packer-provisioner-shell plugin: Serving a plugin connection...
2021/05/31 17:13:28 [TRACE] validateValue: not active for workdir, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for port, so skipping
2021/05/31 17:13:28 [TRACE] validateValue: not active for project-id, so skipping
2021/05/31 17:13:28 [TRACE] Starting external plugin /github/home/.packer.d/plugins/github.com/hashicorp/docker/packer-plugin-docker_v0.0.7_x5.0_linux_amd64 start post-processor tag
2021/05/31 17:13:28 Starting plugin: /github/home/.packer.d/plugins/github.com/hashicorp/docker/packer-plugin-docker_v0.0.7_x5.0_linux_amd64 []string{"/github/home/.packer.d/plugins/github.com/hashicorp/docker/packer-plugin-docker_v0.0.7_x5.0_linux_amd64", "start", "post-processor", "tag"}
2021/05/31 17:13:28 Waiting for RPC address for: /github/home/.packer.d/plugins/github.com/hashicorp/docker/packer-plugin-docker_v0.0.7_x5.0_linux_amd64
2021/05/31 17:13:28 Received unix RPC address for /github/home/.packer.d/plugins/github.com/hashicorp/docker/packer-plugin-docker_v0.0.7_x5.0_linux_amd64: addr is /tmp/packer-plugin579846483
2021/05/31 17:13:28 packer-plugin-docker_v0.0.7_x5.0_linux_amd64 plugin: 2021/05/31 17:13:28 Plugin address: unix /tmp/packer-plugin579846483
2021/05/31 17:13:28 packer-plugin-docker_v0.0.7_x5.0_linux_amd64 plugin: 2021/05/31 17:13:28 Waiting for connection...
2021/05/31 17:13:28 packer-plugin-docker_v0.0.7_x5.0_linux_amd64 plugin: 2021/05/31 17:13:28 Serving a plugin connection...
2021/05/31 17:13:28 packer-plugin-docker_v0.0.7_x5.0_linux_amd64 plugin: 2021/05/31 17:13:28 [TRACE] starting post-processor tag
2021/05/31 17:13:28 [TRACE] Starting external plugin /github/home/.packer.d/plugins/github.com/hashicorp/docker/packer-plugin-docker_v0.0.7_x5.0_linux_amd64 start post-processor push
2021/05/31 17:13:28 Starting plugin: /github/home/.packer.d/plugins/github.com/hashicorp/docker/packer-plugin-docker_v0.0.7_x5.0_linux_amd64 []string{"/github/home/.packer.d/plugins/github.com/hashicorp/docker/packer-plugin-docker_v0.0.7_x5.0_linux_amd64", "start", "post-processor", "push"}
2021/05/31 17:13:28 Waiting for RPC address for: /github/home/.packer.d/plugins/github.com/hashicorp/docker/packer-plugin-docker_v0.0.7_x5.0_linux_amd64
2021/05/31 17:13:28 Received unix RPC address for /github/home/.packer.d/plugins/github.com/hashicorp/docker/packer-plugin-docker_v0.0.7_x5.0_linux_amd64: addr is /tmp/packer-plugin528156026
2021/05/31 17:13:28 packer-plugin-docker_v0.0.7_x5.0_linux_amd64 plugin: 2021/05/31 17:13:28 Plugin address: unix /tmp/packer-plugin528156026
2021/05/31 17:13:28 packer-plugin-docker_v0.0.7_x5.0_linux_amd64 plugin: 2021/05/31 17:13:28 Waiting for connection...
2021/05/31 17:13:28 packer-plugin-docker_v0.0.7_x5.0_linux_amd64 plugin: 2021/05/31 17:13:28 Serving a plugin connection...
2021/05/31 17:13:28 packer-plugin-docker_v0.0.7_x5.0_linux_amd64 plugin: 2021/05/31 17:13:28 [TRACE] starting post-processor push
2021/05/31 17:13:28 Build debug mode: false
2021/05/31 17:13:28 Force build: false
2021/05/31 17:13:28 On error: abort
2021/05/31 17:13:28 Waiting on builds to complete...
2021/05/31 17:13:28 Starting build run: docker.python
2021/05/31 17:13:28 Running builder: 
2021/05/31 17:13:28 [INFO] (telemetry) Starting builder 
2021/05/31 17:13:28 [INFO] (telemetry) ending 
==> Wait completed after 2 milliseconds 439 microseconds
2021/05/31 17:13:28 machine readable: error-count []string{"1"}
==> Some builds didn't complete successfully and had errors:
2021/05/31 17:13:28 machine readable: docker.python,error []string{"exec: \"docker\": executable file not found in $PATH"}
==> Builds finished but no artifacts were created.
Build 'docker.python' errored after 2 milliseconds 403 microseconds: exec: "docker": executable file not found in $PATH
2021/05/31 17:13:28 Cancelling builder after context cancellation context canceled

==> Wait completed after 2 milliseconds 439 microseconds

==> Some builds didn't complete successfully and had errors:
--> docker.python: exec: "docker": executable file not found in $PATH

==> Builds finished but no artifacts were created.
2021/05/31 17:13:28 [INFO] (telemetry) Finalizing.
2021/05/31 17:13:29 waiting for all plugin processes to complete...
2021/05/31 17:13:29 /github/home/.packer.d/plugins/github.com/hashicorp/docker/packer-plugin-docker_v0.0.7_x5.0_linux_amd64: plugin process exited
2021/05/31 17:13:29 /bin/packer: plugin process exited
2021/05/31 17:13:29 /bin/packer: plugin process exited
2021/05/31 17:13:29 /github/home/.packer.d/plugins/github.com/hashicorp/docker/packer-plugin-docker_v0.0.7_x5.0_linux_amd64: plugin process exited
2021/05/31 17:13:29 /bin/packer: plugin process exited
2021/05/31 17:13:29 /github/home/.packer.d/plugins/github.com/hashicorp/docker/packer-plugin-docker_v0.0.7_x5.0_linux_amd64: plugin process exited

Environment

1.) Link to a Gist of your Workflow configuration:
https://github.com/Carto-Discord/carto/blob/95f07449c46a177c21d1bcf64913614e4bd4e0da/.github/workflows/cd.yml

2.) Any other relevant environment information:
I'm also using Terraform and GCP actions, but only the docker authentication step runs before any Packer commands

Not support vagrant builder

Build 'vagrant' errored: Failed creating VirtualBox driver: Error: Packer cannot find Vagrant in the path: exec: "vagrant": executable file not found in $PATH

==> Some builds didn't complete successfully and had errors:
--> vagrant: Failed creating VirtualBox driver: Error: Packer cannot find Vagrant in the path: exec: "vagrant": executable file not found in $PATH

NodeJS 16 deprecation on Github Actions

Expected Behavior

Github deprecates the use of NodeJS 16 in Github Actions and asks to migrate to version 20.
See https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/

Current Behavior

All builds report a warning:

Node.js 16 actions are deprecated. Please update the following actions to use Node.js 20: hashicorp/[email protected]. For more information see: https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/.

Steps to Reproduce

Check annotations of your workflow.

Ansible provisioner does not work and no artifacts are created.

Expected Behavior

Able to build AMI using the ansible provisioner.

Current Behavior

Ansible provisioner does not work, and no artifacts are created.

2021/04/19 01:27:01 packer-provisioner-shell plugin: Serving a plugin connection...

  on example.pkr.hcl line 46:
Error: Failed preparing provisioner-block "ansible" ""
  (source code not available)

1 error(s) occurred:

* Error running "ansible-playbook --version": exec: "ansible-playbook":

  on example.pkr.hcl line 46:
executable file not found in $PATH
  (source code not available)

1 error(s) occurred:

2021/04/19 01:27:01 Build debug mode: false

* Error running "ansible-playbook --version": exec: "ansible-playbook":
2021/04/19 01:27:01 Force build: false
executable file not found in $PATH
2021/04/19 01:27:01 On error: abort

2021/04/19 01:27:01 Waiting on builds to complete...


==> Wait completed after 4 microseconds
==> Wait completed after 4 microseconds

==> Builds finished but no artifacts were created.
==> Builds finished but no artifacts were created.

Steps to Reproduce

The build that is executed on GitHubActions using the Ansible provider always fails.

Environment

1.) Link to a Gist of your Workflow configuration:
https://gist.github.com/MiyamotoTa/705b18449165f7472f42382adfe4807c

2.) Any other relevant environment information:

Running the same code on a local machine can build the AMI.
Local packer version: v1.7.2

Issue in automating the deployment of Compute Server Image onto GCE via GitHub Actions Workflow

Hey Team,

I have been trying to automate the process of packer GCE build image through the GitHub workflow actions and I am encountering the below error:

---ERROR---
Run packer validate build-img-packer.json
googlecompute: output will be in this color.

==> googlecompute: Checking image does not exist...
==> googlecompute: Creating temporary rsa SSH key for instance...
==> googlecompute: Error getting source image for instance creation: Could not find image, ubuntu-minimal-2004-lts, in projects, [*** centos-cloud cos-cloud coreos-cloud debian-cloud rhel-cloud rhel-sap-cloud suse-cloud suse-sap-cloud suse-byos-cloud ubuntu-os-cloud windows-cloud windows-sql-cloud gce-nvme google-containers opensuse-cloud]: 16 error(s) occurred:
==> googlecompute:
==> googlecompute: * Get "https://compute.googleapis.com/compute/v1/projects/***/global/images/family/ubuntu-minimal-2004-lts?alt=json&prettyPrint=false": oauth2: cannot fetch token: 400 Bad Request
==> googlecompute: Response: "error":"invalid_grant","error_description":"Invalid grant: account not found"
==> googlecompute: * Get "https://compute.googleapis.com/compute/v1/projects/centos-cloud/global/images/family/ubuntu-minimal-2004-lts?alt=json&prettyPrint=false": oauth2: cannot fetch token: 400 Bad Request
==> googlecompute: Response: "error":"invalid_grant","error_description":"Invalid grant: account not found"
==> googlecompute: * Get "https://compute.googleapis.com/compute/v1/projects/cos-cloud/global/images/family/ubuntu-minimal-2004-lts?alt=json&prettyPrint=false": oauth2: cannot fetch token: 400 Bad Request

Here are the steps which I have performed from my side -

  1. Created a service account for the packer and added the roles - Compute instance Admin and Service Account User. Generated a service account key in JSON format and updated the key in the secrets part of github.
  2. Created a package.json file that contains all the required fields for the builders and provisioners. In the account_file field of builders I had given the JSON key.
  3. Wrote a workflow file for the packer. Below is the configuration step that i have used.

jobs:
packer:
name: build image
runs-on: ubuntu-latest
steps:

  • name: Checkout
    uses: actions/checkout@v2

Setup gcloud CLI

  • uses: GoogleCloudPlatform/github-actions/setup-gcloud@master
    with:
    version: '270.0.0'
    service_account_key: ${{ secrets.PACKAGE_SERVICE_ACCOUNT_KEY }}
    project_id: ${{ secrets.PROJECT_ID }}
    service_account_email: ${{ secrets.GCP_SV_ACCOUNT_EMAIL }}

Create packer image

  • name: Build packer image
    run: |-
    packer validate build-img-packer.json
    packer build -force build-img-packer.json

Expected Behavior

I am getting the above-mentioned error on triggering the workflow. I would like to understand if there is an authentication step to be added before the packer build as the error states account not found.

My expected action is to deploy the compute server image with the help of packers onto GCE from the workflow.
I would appreciate it if there is any right documentation or steps that will help me to arrive at the desired result.

The latest release is quite old

I work at a company and would like to use this action, but we have a rule that we don't point to branches of workflows. The idea being that we test things before they change, and branches can move on without any notice/testing.

v0.2.0...master

There's a number of new features since the last release that would be nice to get a new release for.

Better documentation or support for spaces in arguments

Expected Behavior

The action should be able to parse arguments such as "-var ami_tags={ci-run-id = \"${{ github.run_id }}\"} -except=vagrant.testing". This is something that works when running packer locally, without the github variable of course.

Current Behavior

The action exists with an error and prints the help text for the command.

Steps to Reproduce

Run a workflow with a step like this.

      - name: Build AWS AMI
        uses: hashicorp/packer-github-actions@master
        with:
          command: build
          arguments: "-var ami_tags={ci-run-id = \"${{ github.run_id }}\"} -except=vagrant.testing"
          target: packer.pkr.hcl
        env:
          PACKER_LOG: 1

Using SSM session provisioner does not work, because SSM session manager is not installed in the Docker container

Using Ubuntu 20.04 on Github Actions.
In the 'builders':

"builders": [
  ...
  "ssh_username": "ubuntu",
  "ssh_interface": "session_manager",
  "communicator": "ssh",
...
]

Current Behavior

==> amazon-ebs: exec: "session-manager-plugin": executable file not found in $PATH

Steps to Reproduce

Try to use a builder config that uses session_manager

"builders": [
  ...
  "ssh_username": "ubuntu",
  "ssh_interface": "session_manager",
  "communicator": "ssh",
...
]

Environment

1.) Link to a Gist of your Workflow configuration:

2.) Any other relevant environment information:

Add major version tags

Please follow GitHub documentation on versioning actions and add major version tags (v1, v2, v3).

Expected Behavior

I expect to be able to pull in the latest v2 for this action with a reference to hashicorp/setup-packer@v2 in my workflow.

Current Behavior

The workflow breaks because there is no v2 tag.

Steps to Reproduce

Create a workflow that includes the following step:

- uses: hashicorp/setup-packer@v2

Environment

Standard ubuntu-latest GitHub Actions runner.

Support for packer fmt

As a user, I would like to have a github action that runs packer fmt or packer fmt -check
I could then optionally have github-ci commit any linting changes to the branch automatically.

This was brought up originally here: hashicorp/packer#10452 (comment)

Step stdout appears to be empty

Expected Behavior

I'd like to be able to reference step output (stdout) in other steps.

Current Behavior

When referencing with something like steps.validate.outputs.stdout it appears to be empty.

Steps to Reproduce

name: "Packer"

on:
  workflow_dispatch:
  pull_request:
    branches:
      - master

jobs:
  packer:
    runs-on: ubuntu-latest
    name: packer

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2

      # validate templates
      - name: Validate Template
        id: validate
        uses: hashicorp/packer-github-actions@master
        with:
          command: validate
          arguments: -syntax-only
          target: packer.pkr.hcl
        continue-on-error: true

      - name: Comment
        uses: actions/[email protected]
        if: github.event_name == 'pull_request'
        env:
          VALIDATE: "packer\n${{ steps.validate.outputs.stdout }}"
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          script: |
            const output = `#### Packer Validate๐Ÿค–: \`${{ steps.validate.outcome }}\` 

            \`\`\`\n
            ${process.env.VALIDATE}
            \`\`\`

            *Pusher: @${{ github.actor }}, Action: \`${{ github.event_name }}\`*`;

            github.issues.createComment({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: output
            })

No '@master' in the uses section of Readme example

Hey I noticed in the README.md Usage example, in the build section, in the uses like, there is no @master.

e.g. as it is, it looks like uses: operatehappy/packer-github-action

The other sections look like uses: operatehappy/packer-github-action@master

Is the build section correct? Or should it be @master?

Packer validate and build failing when using "build_resource_group_name"

I am facing an issue with "setup-packer" when using "build_resource_group_name" in the packer configuration file.

The gitHub action pipeline fails with the error "Specify either a location to create the resource group in or an existing build_resource_group_name, but not both"

It will fail when location and build_resource_group_name parameters are used together, but my config doesn't have both parameters together.

  1. When both parameters are present - packer validate is succeeding, but packer build failing with the above-mentioned error.
  2. When the location parameter is not present and build_resource_group_name is present - packer validate is failing, it is not allowing my pipeline to move forward.

I tested the same code on my local by installing packer directly from Hashicorp website. I'm not facing any issues as mentioned above with that package.

packer version 1.10.2

action fails if packer already exists on the machine

If the setup-packer action is run and the agent already has packer installed, the step fails without providing any useful context.

Expected Behavior

I would expect the step to detect that the end result of the action has been acheived (i.e. the requested packer version is present on the agent) and the step succeeds

Current Behavior

Run hashicorp/setup-packer@v3
Installing packer:1.11.1 and adding it to GitHub Actions Path

## Steps to Reproduce

1. Create a github action that targets a runner with Packer installed
1. Call the setup-packer@v2 action
1. Execute your action

## Environment

Fix step doesn't support directories?

The tf fix step doesn't seem to support directories?

Expected Behavior

As per docs, it is implied that all commands support . (directory) values for target.

Current Behavior

Run hashicorp/packer-github-actions@master
  with:
    command: fix
    target: .
/usr/bin/docker run --name x --label x --workdir /github/workspace --rm -e INPUT_COMMAND -e INPUT_TARGET -e INPUT_ARGUMENTS -e INPUT_WORKING_DIRECTORY -e HOME -e GITHUB_JOB -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_REPOSITORY_OWNER -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RETENTION_DAYS -e GITHUB_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_SERVER_URL -e GITHUB_API_URL -e GITHUB_GRAPHQL_URL -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e GITHUB_ACTION_REPOSITORY -e GITHUB_ACTION_REF -e GITHUB_PATH -e GITHUB_ENV -e RUNNER_OS -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -e ACTIONS_RUNTIME_URL -e ACTIONS_RUNTIME_TOKEN -e ACTIONS_CACHE_URL -e GITHUB_ACTIONS=true -e CI=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/home/runner/work/_temp/_github_home":"/github/home" -v "/home/runner/work/_temp/_github_workflow":"/github/workflow" -v "/home/runner/work/_temp/_runner_file_commands":"/github/file_commands" -v "/home/runner/work/x/x":"/github/workspace" x:x
Error parsing template: read .: is a directory

Steps to Reproduce

Add the fix step to an action?

Environment

1.) Link to a Gist of your Workflow configuration:
N/A

2.) Any other relevant environment information:
N/A

Support providing packer version as input

Expected Behavior

I want to use newest version of packer without waiting for this repository to update the Dockerfile. Would be great if we could provide base image that will extend this repo entrypoint

Current Behavior

packer version is pinned

Steps to Reproduce

none

Environment

none

Default target is not useful

Expected Behavior

I am a bit confused with the default target. I would think that a default target of . is more useful. Something like -

- name: Check hcl format
   uses: operatehappy/[email protected]
   with:
      command: fmt
      arguments: -check

Failed creating VirtualBox driver: exec: "VBoxManage": executable file not found in $PATH

Expected Behavior

A Virtualbox image is build on a given ISO image.

Current Behavior

Build 'virtualbox-iso' errored after 4 milliseconds 350 microseconds: Failed creating VirtualBox driver: exec: "VBoxManage": executable file not found in $PATH

Steps to Reproduce

Configure and run the following Github action .github/workflows/packer.yml:

on:
  push: null

jobs:
  packer-action:
    runs-on: ubuntu-latest
    steps:
      - name: Minimal packer configuration
        run: |
          tee packer.json << EOF
          {
            "builders": [
              {
              "type": "virtualbox-iso",
              "guest_os_type": "Ubuntu_64",
              "iso_url": "http://releases.ubuntu.com/12.04/ubuntu-12.04.5-server-amd64.iso",
              "iso_checksum": "md5:769474248a3897f4865817446f9a4a53",
              "ssh_username": "packer",
              "ssh_password": "packer",
              "shutdown_command": "echo 'packer' | sudo -S shutdown -P now",
              "post_shutdown_delay": "2m",
              "headless": true,
              "vboxmanage": [
                  [ "startvm", "{{.Name}}", "--type", "headless" ]
                ]
              }
            ]
          }

      - name: Validate Template
        uses: hashicorp/packer-github-actions@master
        with:
          command: validate
          arguments: -syntax-only
          target: packer.json
      - name: Build Artifact
        uses: hashicorp/packer-github-actions@master
        with:
          command: build
          arguments: "-on-error=abort"
          target: packer.json
        env:
          PACKER_LOG: 1

Environment

Ambiguous Repo Rename Without Notice

This repository has been renamed from packer-github-actions to setup-packer without any kind of warning or even a reasonable advantage and yet it will cause issues for hundreds, if not thousands, of other people's work that were referencing it.

The new name is also less useful because it's not immediately obvious that the purpose of this repository is to store code for a GitHub action.

Can a reason be provided for this change?

Doesn't seem to work with map variables?

Expected Behavior

To be able to provide tags as variables in a packer build

Current Behavior

With a step like below the pipeline errors with a usage error i.e. Usage: packer build [options] TEMPLATE

      # Had issues with multiline for arguments
      - name: Build and Publish
        uses: hashicorp/packer-github-actions@master
        with:
          command: build
          arguments: |
            -on-error=abort
            -var security_group_id=sg-111111111111
            -var region=eu-west-1
            -var subnet_id=subnet-1111111111
            -var instance_type=t3.medium
            -var root_volume_size_gb=50
            -var runner_version=2.286.1
            -var tags="{ sandbox=${{ github.event.inputs.sandbox }} }"
          target: images/linux-amzn2/github_agent.linux.pkr.hcl
        env:
          PACKER_LOG: 1

I've tried various variations e.g.:

            -var tags="{ sandbox=${{ github.event.inputs.sandbox }} }"
            -var tags="{ sandbox=\"${{ github.event.inputs.sandbox }}\" }"
            -var tags="{ sandbox=true }"

I've also tried providing my arguments all on a single line and I get the same error.

If I remove the tag variable it works:

      # Had issues with multiline for arguments
      - name: Build and Publish
        uses: hashicorp/packer-github-actions@master
        with:
          command: build
          arguments: |
            -on-error=abort
            -var security_group_id=sg-111111111111
            -var region=eu-west-1
            -var subnet_id=subnet-1111111111
            -var instance_type=t3.medium
            -var root_volume_size_gb=50
            -var runner_version=2.286.1

Steps to Reproduce

  1. Create a packer template that takes in a variable with the tags structure shown abve
  2. Attempt to build said template providing the variable with the tags structure

net/http: TLS handshake timeout

Hello,

I have the following environment.

Kubernetes running in RKE and I deployed the runner and use docker in docker side car.

It seems when the packer init command runs, I get some errors.

Run hashicorp/packer-github-actions@master
/usr/bin/docker run --name c3f261da461fc0f72f447fa0a3d59193fe1b58_b1cf13 --label c3f261 --workdir /github/workspace --rm -e PKR_VAR_environment -e branch -e exclusions -e PKR_VAR_date -e PKR_VAR_AZ_CLIENT_ID -e PKR_VAR_AZ_CLIENT_SECRET -e PACKER_LOG -e INPUT_COMMAND -e INPUT_WORKING_DIRECTORY -e INPUT_ARGUMENTS -e INPUT_TARGET -e HOME -e GITHUB_JOB -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_REPOSITORY_OWNER -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RETENTION_DAYS -e GITHUB_RUN_ATTEMPT -e GITHUB_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_SERVER_URL -e GITHUB_API_URL -e GITHUB_GRAPHQL_URL -e GITHUB_REF_PROTECTED -e GITHUB_REF_TYPE -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e GITHUB_ACTION_REPOSITORY -e GITHUB_ACTION_REF -e GITHUB_PATH -e GITHUB_ENV -e GITHUB_STEP_SUMMARY -e RUNNER_OS -e RUNNER_ARCH -e RUNNER_NAME -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -e ACTIONS_RUNTIME_URL -e ACTIONS_RUNTIME_TOKEN -e GITHUB_ACTIONS=true -e CI=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/runner_dir/_temp/_github_home":"/github/home" -v "/runner_dir/_temp/_github_workflow":"/github/workflow" -v "/runner_dir/_temp/_runner_file_commands":"/github/file_commands" -v "/runner_dir/test/test":"/github/workspace" c3f261:da461fc0f72f447fa0a3d59193fe1b58
2022/07/25 22:48:53 [INFO] Packer version: 1.7.8 [go1.17.2 linux amd64]
2022/07/25 22:48:53 [TRACE] discovering plugins in /bin
2022/07/25 22:48:53 [TRACE] discovering plugins in /github/home/.config/packer/plugins
2022/07/25 22:48:53 [TRACE] discovering plugins in .
2022/07/25 22:48:53 [INFO] PACKER_CONFIG env var not set; checking the default config file path
2022/07/25 22:48:53 [INFO] PACKER_CONFIG env var set; attempting to open config file: /github/home/.packerconfig
2022/07/25 22:48:53 [WARN] Config file doesn't exist: /github/home/.packerconfig
2022/07/25 22:48:53 [INFO] Setting cache directory: /github/home/.cache/packer
e: Running in background, not using a TTY
2022/07/25 22:48:53 [TRACE] init: plugingetter.ListInstallationsOptions{FromFolders:[]string{"/bin/packer", ".", "/github/home/.config/packer/plugins"}, BinaryInstallationOptions:plugingetter.BinaryInstallationOptions{APIVersionMajor:"5", APIVersionMinor:"0", OS:"linux", ARCH:"amd64", Ext:"", Checksummers:[]plugingetter.Checksummer{plugingetter.Checksummer{Type:"sha256", Hash:(*sha256.digest)(0xc000374000)}}}}
2022/07/25 22:48:53 [TRACE] listing potential installations for "github.com/hashicorp/azure" that match ">= 1.2.0". plugingetter.ListInstallationsOptions{FromFolders:[]string{"/bin/packer", ".", "/github/home/.config/packer/plugins"}, BinaryInstallationOptions:plugingetter.BinaryInstallationOptions{APIVersionMajor:"5", APIVersionMinor:"0", OS:"linux", ARCH:"amd64", Ext:"", Checksummers:[]plugingetter.Checksummer{plugingetter.Checksummer{Type:"sha256", Hash:(*sha256.digest)(0xc000374000)}}}}
2022/07/25 22:48:53 [TRACE] for plugin github.com/hashicorp/azure found 0 matching installation(s)
2022/07/25 22:48:53 [TRACE] getting available versions for the github.com/hashicorp/azure plugin
Warning: 5 22:48:53 [WARNING] github-getter: no GitHub token set, if you intend to install plugins often, please set the PACKER_GITHUB_API_TOKEN env var
2022/07/25 22:48:53 [DEBUG] github-getter: getting "https://api.github.com/repos/hashicorp/packer-plugin-azure/git/matching-refs/tags"
2022/07/25 22:48:54 [DEBUG] will try to install: [1.2.0] 
2022/07/25 22:48:54 [TRACE] fetching checksums file for the "1.2.0" version of the github.com/hashicorp/azure plugin in "/github/home/.config/packer/plugins/github.com/hashicorp/azure"...
2022/07/25 22:48:54 [DEBUG] github-getter: getting "https://github.com/hashicorp/packer-plugin-azure/releases/download/v1.2.0/packer-plugin-azure_v1.2.0_SHA256SUMS"
2022/07/25 22:48:54 [ERR] Checkpoint error: Get "https://checkpoint-api.hashicorp.com/v1/check/packer?arch=amd64&os=linux&signature=062a3fc9-108b-d032-7eae-0abe617943c1&version=1.7.8": x509: certificate signed by unknown authority
2022/07/25 22:49:04 [TRACE] failed requesting: *url.Error. Get "https://objects.githubusercontent.com/github-production-release-asset-2e65be/361409316/970a2e76-c72f-408c-8872-6b06e7470ef0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20220725%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220725T224854Z&X-Amz-Expires=300&X-Amz-Signature=c12383c9a5fde0e883c995503c5c9f132789b6ac99a3bbc8171d92ba94bf2b00&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=361409316&response-content-disposition=attachment%3B%20filename%3Dpacker-plugin-azure_v1.2.0_SHA256SUMS&response-content-type=application%2Foctet-stream": net/http: TLS handshake timeout
Failed getting the "github.com/hashicorp/azure" plugin:
1 error occurred:
	* could not get sha256 checksum file for github.com/hashicorp/azure version 1.2.0. Is the file present on the release and correctly named ? Get "https://objects.githubusercontent.com/github-production-release-asset-2e65be/361409316/970a2e76-c72f-408c-8872-6b06e7470ef0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20220725%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220725T224854Z&X-Amz-Expires=300&X-Amz-Signature=c12383c9a5fde0e883c995503c5c9f132789b6ac99a3bbc8171d92ba94bf2b00&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=361409316&response-content-disposition=attachment%3B%20filename%3Dpacker-plugin-azure_v1.2.0_SHA256SUMS&response-content-type=application%2Foctet-stream": net/http: TLS handshake timeout

2022/07/25 22:49:04 [TRACE] could not get sha256 checksum file for github.com/hashicorp/azure version 1.2.0. Is the file present on the release and correctly named ? Get "https://objects.githubusercontent.com/github-production-release-asset-2e65be/361409316/970a2e76-c72f-408c-8872-6b06e7470ef0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20220725%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220725T224854Z&X-Amz-Expires=300&X-Amz-Signature=c12383c9a5fde0e883c995503c5c9f132789b6ac99a3bbc8171d92ba94bf2b00&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=361409316&response-content-disposition=attachment%3B%20filename%3Dpacker-plugin-azure_v1.2.0_SHA256SUMS&response-content-type=application%2Foctet-stream": net/http: TLS handshake timeout
	* could not get sha256 checksum file for github.com/hashicorp/azure version 1.2.0. Is the file present on the release and correctly named ? Get "https://objects.githubusercontent.com/github-production-release-asset-2e65be/361409316/970a2e76-c72f-408c-8872-6b06e7470ef0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20220725%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220725T224854Z&X-Amz-Expires=300&X-Amz-Signature=c12383c9a5fde0e883c995503c5c9f132789b6ac99a3bbc8171d92ba94bf2b00&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=361409316&response-content-disposition=attachment%3B%20filename%3Dpacker-plugin-azure_v1.2.0_SHA256SUMS&response-content-type=application%2Foctet-stream": net/http: TLS handshake timeout
2022/07/25 22:49:04 [INFO] (telemetry) Finalizing.
2022/07/25 22:49:04 waiting for all plugin processes to complete...

I am able to download the binary and use run and it works but the github action for packer still get TLS handshake timeout, it sometimes works 1 out of 20 times.

Run hashicorp/packer-github-actions@master
/usr/bin/docker run --name c3f261ef2fa102a4e24a968baa23a1dafcdfac_febddc --label c3f261 --workdir /github/workspace --rm -e PKR_VAR_environment -e branch -e exclusions -e PKR_VAR_date -e PKR_VAR_AZ_CLIENT_ID -e PKR_VAR_AZ_CLIENT_SECRET -e PACKER_LOG -e INPUT_COMMAND -e INPUT_WORKING_DIRECTORY -e INPUT_ARGUMENTS -e INPUT_TARGET -e HOME -e GITHUB_JOB -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_REPOSITORY_OWNER -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RETENTION_DAYS -e GITHUB_RUN_ATTEMPT -e GITHUB_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_SERVER_URL -e GITHUB_API_URL -e GITHUB_GRAPHQL_URL -e GITHUB_REF_PROTECTED -e GITHUB_REF_TYPE -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e GITHUB_ACTION_REPOSITORY -e GITHUB_ACTION_REF -e GITHUB_PATH -e GITHUB_ENV -e GITHUB_STEP_SUMMARY -e RUNNER_OS -e RUNNER_ARCH -e RUNNER_NAME -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -e ACTIONS_RUNTIME_URL -e ACTIONS_RUNTIME_TOKEN -e GITHUB_ACTIONS=true -e CI=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/runner_dir/_temp/_github_home":"/github/home" -v "/runner_dir/_temp/_github_workflow":"/github/workflow" -v "/runner_dir/_temp/_runner_file_commands":"/github/file_commands" -v "/runner_dir/test/test":"/github/workspace" c3f261:ef2fa102a4e24a968baa23a1dafcdfac
2022/07/25 22:46:57 [INFO] Packer version: 1.7.8 [go1.17.2 linux amd64]
2022/07/25 22:46:57 [TRACE] discovering plugins in /bin
2022/07/25 22:46:57 [TRACE] discovering plugins in /github/home/.config/packer/plugins
2022/07/25 22:46:57 [TRACE] discovering plugins in .
2022/07/25 22:46:57 [INFO] PACKER_CONFIG env var not set; checking the default config file path
2022/07/25 22:46:57 [INFO] PACKER_CONFIG env var set; attempting to open config file: /github/home/.packerconfig
2022/07/25 22:46:57 [WARN] Config file doesn't exist: /github/home/.packerconfig
2022/07/25 22:46:57 [INFO] Setting cache directory: /github/home/.cache/packer
e: Running in background, not using a TTY
2022/07/25 22:46:57 [TRACE] init: plugingetter.ListInstallationsOptions{FromFolders:[]string{"/bin/packer", ".", "/github/home/.config/packer/plugins"}, BinaryInstallationOptions:plugingetter.BinaryInstallationOptions{APIVersionMajor:"5", APIVersionMinor:"0", OS:"linux", ARCH:"amd64", Ext:"", Checksummers:[]plugingetter.Checksummer{plugingetter.Checksummer{Type:"sha256", Hash:(*sha256.digest)(0xc0006f8380)}}}}
2022/07/25 22:46:57 [TRACE] listing potential installations for "github.com/hashicorp/azure" that match ">= 1.2.0". plugingetter.ListInstallationsOptions{FromFolders:[]string{"/bin/packer", ".", "/github/home/.config/packer/plugins"}, BinaryInstallationOptions:plugingetter.BinaryInstallationOptions{APIVersionMajor:"5", APIVersionMinor:"0", OS:"linux", ARCH:"amd64", Ext:"", Checksummers:[]plugingetter.Checksummer{plugingetter.Checksummer{Type:"sha256", Hash:(*sha256.digest)(0xc0006f8380)}}}}
2022/07/25 22:46:57 [TRACE] for plugin github.com/hashicorp/azure found 0 matching installation(s)
2022/07/25 22:46:57 [TRACE] getting available versions for the github.com/hashicorp/azure plugin
Warning: 5 22:46:57 [WARNING] github-getter: no GitHub token set, if you intend to install plugins often, please set the PACKER_GITHUB_API_TOKEN env var
2022/07/25 22:46:57 [DEBUG] github-getter: getting "https://api.github.com/repos/hashicorp/packer-plugin-azure/git/matching-refs/tags"
2022/07/25 22:46:58 [DEBUG] will try to install: [1.2.0]
2022/07/25 22:46:58 [TRACE] fetching checksums file for the "1.2.0" version of the github.com/hashicorp/azure plugin in "/github/home/.config/packer/plugins/github.com/hashicorp/azure"...
2022/07/25 22:46:58 [DEBUG] github-getter: getting "https://github.com/hashicorp/packer-plugin-azure/releases/download/v1.2.0/packer-plugin-azure_v1.2.0_SHA256SUMS"
2022/07/25 22:46:58 [TRACE] ignoring invalid remote binary packer-plugin-azure_v1.2.0_x5.0_netbsd_arm.zip: wrong system, expected linux_amd64 
2022/07/25 22:46:58 [TRACE] ignoring invalid remote binary packer-plugin-azure_v1.2.0_x5.0_openbsd_amd64.zip: wrong system, expected linux_amd64 
2022/07/25 22:46:58 [TRACE] ignoring invalid remote binary packer-plugin-azure_v1.2.0_x5.0_freebsd_arm64.zip: wrong system, expected linux_amd64 
2022/07/25 22:46:58 [TRACE] ignoring invalid remote binary packer-plugin-azure_v1.2.0_x5.0_netbsd_amd64.zip: wrong system, expected linux_amd64 
2022/07/25 22:46:58 [TRACE] ignoring invalid remote binary packer-plugin-azure_v1.2.0_x5.0_windows_arm64.zip: wrong system, expected linux_amd64 
2022/07/25 22:46:58 [TRACE] ignoring invalid remote binary packer-plugin-azure_v1.2.0_x5.0_windows_386.zip: wrong system, expected linux_amd64 
2022/07/25 22:46:58 [TRACE] ignoring invalid remote binary packer-plugin-azure_v1.2.0_x5.0_freebsd_amd64.zip: wrong system, expected linux_amd64 
2022/07/25 22:46:58 [TRACE] ignoring invalid remote binary packer-plugin-azure_v1.2.0_x5.0_linux_arm64.zip: wrong system, expected linux_amd64 
2022/07/25 22:46:58 [TRACE] ignoring invalid remote binary packer-plugin-azure_v1.2.0_x5.0_linux_386.zip: wrong system, expected linux_amd64 
2022/07/25 22:46:58 [TRACE] ignoring invalid remote binary packer-plugin-azure_v1.2.0_x5.0_openbsd_arm.zip: wrong system, expected linux_amd64 
2022/07/25 22:46:58 [TRACE] ignoring invalid remote binary packer-plugin-azure_v1.2.0_x5.0_solaris_amd64.zip: wrong system, expected linux_amd64 
2022/07/25 22:46:58 [TRACE] ignoring invalid remote binary packer-plugin-azure_v1.2.0_x5.0_freebsd_386.zip: wrong system, expected linux_amd64 
2022/07/25 22:46:58 [TRACE] ignoring invalid remote binary packer-plugin-azure_v1.2.0_x5.0_openbsd_386.zip: wrong system, expected linux_amd64 
2022/07/25 22:46:58 [TRACE] ignoring invalid remote binary packer-plugin-azure_v1.2.0_x5.0_netbsd_386.zip: wrong system, expected linux_amd64 
2022/07/25 22:46:58 [TRACE] ignoring invalid remote binary packer-plugin-azure_v1.2.0_x5.0_freebsd_arm.zip: wrong system, expected linux_amd64 
2022/07/25 22:46:58 [TRACE] ignoring invalid remote binary packer-plugin-azure_v1.2.0_x5.0_linux_arm.zip: wrong system, expected linux_amd64 
2022/07/25 22:46:58 [TRACE] About to get: packer-plugin-azure_v1.2.0_x5.0_linux_amd64.zip
2022/07/25 22:46:58 [DEBUG] github-getter: getting "https://github.com/hashicorp/packer-plugin-azure/releases/download/v1.2.0/packer-plugin-azure_v1.2.0_x5.0_linux_amd64.zip"
2022/07/25 22:46:59 [INFO] (telemetry) Finalizing.
Installed plugin github.com/hashicorp/azure v1.2.0 in "/github/home/.config/packer/plugins/github.com/hashicorp/azure/packer-plugin-azure_v1.2.0_x5.0_linux_amd64"
2022/07/25 22:46:59 waiting for all plugin processes to complete...

Can someone help with this?

packer build exit error without any explanation in CI

Is it mandatory to have HCP_CLIENT_ID for the build to succeed? It builds fine in my laptop but not in the Github Action. Why?

Expected Behavior

packer build should succeed.

Current Behavior

+ packer init main.pkr.hcl
Installed plugin github.com/hashicorp/amazon v1.2.6 in "/home/runner/.config/packer/plugins/github.com/hashicorp/amazon/packer-plugin-amazon_v1.2.6_x5.0_linux_amd64"
+ packer build main.pkr.hcl
Error: Process completed with exit code 1.

Steps to Reproduce

jobs:
  packer:
    runs-on: ubuntu-latest
    name: Run Packer
    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Setup `packer`
        uses: hashicorp/setup-packer@main
        with:
          version: ${{ env.PACKER_VERSION }}

      - name: Build Image
        id: build
        run: |
          set -ex
          packer init $IMAGE_NAME.pkr.hcl
          packer build $IMAGE_NAME.pkr.hcl

Environment

see above

session-manager-plugin support

Expected Behavior

Be useful for AWS packer builds

Current Behavior

Not useful - forked

Dockerfile that works in my case:

FROM ubuntu:latest

RUN set -e;  \
    apt-get update && apt-get install -y curl apt-transport-https ca-certificates gnupg; \
    echo "deb [arch=amd64] https://apt.releases.hashicorp.com $(. /etc/lsb-release; echo "$DISTRIB_CODENAME") main" > /etc/apt/sources.list.d/hashicorp.list; \
    curl -fsSL https://apt.releases.hashicorp.com/gpg | apt-key add -; \
    apt-get update -o Dir::Etc::sourcelist=sources.list.d/hashicorp.list -o Dir::Etc::sourceparts=- -o APT::Get::List-Cleanup=0; \
    apt-get install -y packer; \
    curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_64bit/session-manager-plugin.deb" -o /tmp/session-manager-plugin.deb; \
    dpkg -i /tmp/session-manager-plugin.deb; \
    apt-get autoremove -y curl apt-transport-https ca-certificates gnupg; \
    apt-get clean

COPY "entrypoint.sh" "/entrypoint.sh"

ENTRYPOINT ["/entrypoint.sh"]

Maybe it can be useful to allow to specify dockerfile content and override default one?

Steps to Reproduce

Try to build AMI in AWS with SSM session

Environment

AWS account with SSM session for connections

Add support for CD ISO creation

Expected Behavior

vSphere builder attaches the downloaded ISO to Artifact

Current Behavior

==> vsphere-iso.focal: https://releases.ubuntu.com/focal/ubuntu-20.04.4-live-server-amd64.iso?checksum=sha256%3A28ccdb56450e643bad03bb7bcf7507ce3d8d90e8bf09e38f6bd9ac298a98eaad => /github/home/.cache/packer/47de2d7266acde194681de2a24f5d76b43b452ca.iso
==> vsphere-iso.focal: Creating CD disk...
2022/08/25 10:00:43 packer-plugin-vsphere_v1.0.8_x5.0_linux_amd64 plugin: 2022/08/25 10:00:43 Leaving retrieve loop for ISO
==> vsphere-iso.focal: could not find a supported CD ISO creation command (the supported commands are: xorriso, mkisofs, hdiutil, oscdimg)
==> vsphere-iso.focal: Step "StepCreateCD" failed, aborting...


Adding to the Dockerfile a line like RUN apk add mkisofs could grant support for this scenario in the Action.

New release version for "0.3.0"?

Are there any plans to upgrade the "latest" release from version "0.2.0" to "0.3.0" or something else?

I see the Readme mentions using "operatehappy/packer-github-actions@master" to use "master" instead of a "release". For stability, it would be better to have a designated release to leverage against.

Repository not found: hashicorp/packer-github-actions

Expected Behavior

I was using in a workflow the action hashicorp/packer-github-actions@master like below and was working fine.
last time I had run that workflow was a month ago:

    - name: packer_action_version
      uses: hashicorp/packer-github-actions@master
      with:
        command: version

Current Behavior

Today I am attempting to run again that workflow and I am getting this error:

Unable to resolve actions. Repository not found: hashicorp/packer-github-actions.

Steps to Reproduce

    - name: packer_action_version
      uses: hashicorp/packer-github-actions@master
      with:
        command: version

Environment

1.) Link to a Gist of your Workflow configuration:

2.) Any other relevant environment information:

Exiting GitHub Action on non-zero code

We're running the GitHub Action to essentially lint our packer builds with a packer validate against a wildcard of a bunch of packer config files. If one of the validates fail, it currently does not fail the Action.

Expected Behavior

Running packer validate against multiple config files will fail the Action if one run returns a non-zero code.

Current Behavior

The Action does not fail if a packer validate returns an issue.

Steps to Reproduce

We have our Action run set up like this:

Screen Shot 2020-05-21 at 9 33 36 AM

It runs against a bunch of config files prefixed by "bold-penguin-aws". If one of them fails, it doesn't fail the action.

Environment

Running locally on Mac, Linux, or running in a Linux container in GitHub's environment.

Potential Resolution

Adding set -e to the Entrypoint. When testing locally, that changes the behavior to fit our expectation. But I'm not aware of whether or not that would break other users' scenarios.

Pass var file

Hi,
I would like to pass variable file to packer validate. Is it possible to do that?

Expected Behavior

Is below command possible?

packer validate -var-file=environment/dev.json packer.json

Current Behavior

packer validate packer.json

Steps to Reproduce

Environment

1.) Link to a Gist of your Workflow configuration:

2.) Any other relevant environment information:

Conflict with cracklib-dicts packer on self-hosted runners

Expected Behavior

      - name: Setup `packer`
        uses: hashicorp/[email protected]
        with:
          version: "1.8.4"

      - name: Build AMI
        run: packer --version

This should print out 1.8.4, indicating that I'm using the packer binary that the Github Action just installed

Current Behavior

It actually prints out 0 0. This is because it's actually using /usr/sbin/packer which is installed by cracklib-dicts on amazon linux.

Steps to Reproduce

Run the above code on a self hosted runner which uses Amazon Linux

Potential Solutions

The two solutions I can think to solve this are:

  1. Add the directory which contains the downloaded packer to the beginning of the PATH. Not sure if this is possible.
  2. Add an otuput variable which contains the absolute path of the packer command which was just downloaded. Then I can use that instead of just using packer

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.